/* Generated by Cython 0.24 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
    #error Cython requires Python 2.6+ or Python 3.2+.
#else
#define CYTHON_ABI "0_24"
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
#endif
#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
  #define CYTHON_USE_PYLONG_INTERNALS 1
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
  #undef SHIFT
  #undef BASE
  #undef MASK
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
#else
  #define CYTHON_PEP393_ENABLED 0
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if PY_VERSION_HEX >= 0x030500B1
#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
typedef struct {
    unaryfunc am_await;
    unaryfunc am_aiter;
    unaryfunc am_anext;
} __Pyx_PyAsyncMethodsStruct;
#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
#else
#define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)

#ifndef CYTHON_INLINE
  #if defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif


#define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
}

#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#endif

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__uvloop__loop
#define __PYX_HAVE_API__uvloop__loop
#include "stdint.h"
#include "sys/types.h"
#include "arpa/inet.h"
#include "sys/socket.h"
#include "errno.h"
#include "../vendor/libuv/include/uv.h"
#include "signal.h"
#include "string.h"
#include "stdio.h"
#include "pythread.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#endif

#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER) && defined (_M_X64)
    #define __Pyx_sst_abs(value) _abs64(value)
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyObject_AsSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#if PY_MAJOR_VERSION < 3
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
{
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#else
#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
#endif
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_COMPILING_IN_CPYTHON
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */

static PyObject *__pyx_m;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "uvloop/handles/handle.pyx",
  "uvloop/errors.pyx",
  "uvloop/loop.pyx",
  "uvloop/cbhandles.pyx",
  "uvloop/handles/basetransport.pyx",
  "uvloop/handles/tcp.pyx",
  "uvloop/handles/process.pyx",
  "uvloop/handles/udp.pyx",
  "uvloop/loop.pxd",
  "uvloop/handles/async_.pyx",
  "uvloop/handles/idle.pyx",
  "uvloop/handles/timer.pyx",
  "uvloop/handles/signal.pyx",
  "uvloop/handles/poll.pyx",
  "uvloop/handles/basetransport.pxd",
  "uvloop/handles/stream.pyx",
  "uvloop/handles/streamserver.pyx",
  "uvloop/handles/pipe.pyx",
  "uvloop/request.pyx",
  "uvloop/dns.pyx",
  "uvloop/server.pyx",
  "uvloop/os_signal.pyx",
  "type.pxd",
  "bool.pxd",
  "complex.pxd",
  "uvloop/includes/stdlib.pxi",
};

/*--- Type declarations ---*/
struct __pyx_obj_6uvloop_4loop_Loop;
struct __pyx_obj_6uvloop_4loop_Handle;
struct __pyx_obj_6uvloop_4loop_TimerHandle;
struct __pyx_obj_6uvloop_4loop_UVHandle;
struct __pyx_obj_6uvloop_4loop_UVSocketHandle;
struct __pyx_obj_6uvloop_4loop_UVAsync;
struct __pyx_obj_6uvloop_4loop_UVIdle;
struct __pyx_obj_6uvloop_4loop_UVTimer;
struct __pyx_obj_6uvloop_4loop_UVSignal;
struct __pyx_obj_6uvloop_4loop_UVPoll;
struct __pyx_obj_6uvloop_4loop_UVBaseTransport;
struct __pyx_obj_6uvloop_4loop_UVStream;
struct __pyx_obj_6uvloop_4loop_UVStreamServer;
struct __pyx_obj_6uvloop_4loop_TCPServer;
struct __pyx_obj_6uvloop_4loop_TCPTransport;
struct __pyx_obj_6uvloop_4loop_UnixServer;
struct __pyx_obj_6uvloop_4loop_UnixTransport;
struct __pyx_obj_6uvloop_4loop_ReadUnixTransport;
struct __pyx_obj_6uvloop_4loop_WriteUnixTransport;
struct __pyx_obj_6uvloop_4loop_UVProcess;
struct __pyx_obj_6uvloop_4loop_UVProcessTransport;
struct __pyx_obj_6uvloop_4loop_UVRequest;
struct __pyx_obj_6uvloop_4loop_UDPTransport;
struct __pyx_obj_6uvloop_4loop_Server;
struct __pyx_obj_6uvloop_4loop_SignalsStack;
struct __pyx_obj_6uvloop_4loop__StreamWriteContext;
struct __pyx_obj_6uvloop_4loop__TCPConnectRequest;
struct __pyx_obj_6uvloop_4loop__PipeConnectRequest;
struct __pyx_obj_6uvloop_4loop_AddrInfo;
struct __pyx_obj_6uvloop_4loop_AddrInfoRequest;
struct __pyx_obj_6uvloop_4loop_NameInfoRequest;
struct __pyx_obj_6uvloop_4loop__UDPSendContext;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr;
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed;

/* "libc/signal.pxd":3
 * # 7.14 Signal handling <signal.h>
 * 
 * ctypedef void (*sighandler_t)(int SIGNUM) nogil             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "signal.h" nogil:
 */
typedef void (*__pyx_t_4libc_6signal_sighandler_t)(int);
struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error;
struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits;
struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__fatal_error;
struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind;
struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind;
struct __pyx_opt_args_6uvloop_4loop_6UVPoll__fatal_error;
struct __pyx_opt_args_6uvloop_4loop_14UVStreamServer__fatal_error;

/* "uvloop/loop.pxd":27
 * cdef class UVIdle(UVHandle)
 * 
 * ctypedef object (*method_t)(object)             # <<<<<<<<<<<<<<
 * ctypedef object (*method1_t)(object, object)
 * ctypedef object (*method2_t)(object, object, object)
 */
typedef PyObject *(*__pyx_t_6uvloop_4loop_method_t)(PyObject *);

/* "uvloop/loop.pxd":28
 * 
 * ctypedef object (*method_t)(object)
 * ctypedef object (*method1_t)(object, object)             # <<<<<<<<<<<<<<
 * ctypedef object (*method2_t)(object, object, object)
 * ctypedef object (*method3_t)(object, object, object, object)
 */
typedef PyObject *(*__pyx_t_6uvloop_4loop_method1_t)(PyObject *, PyObject *);

/* "uvloop/loop.pxd":29
 * ctypedef object (*method_t)(object)
 * ctypedef object (*method1_t)(object, object)
 * ctypedef object (*method2_t)(object, object, object)             # <<<<<<<<<<<<<<
 * ctypedef object (*method3_t)(object, object, object, object)
 * ctypedef object (*method4_t)(object, object, object, object, object)
 */
typedef PyObject *(*__pyx_t_6uvloop_4loop_method2_t)(PyObject *, PyObject *, PyObject *);

/* "uvloop/loop.pxd":30
 * ctypedef object (*method1_t)(object, object)
 * ctypedef object (*method2_t)(object, object, object)
 * ctypedef object (*method3_t)(object, object, object, object)             # <<<<<<<<<<<<<<
 * ctypedef object (*method4_t)(object, object, object, object, object)
 * 
 */
typedef PyObject *(*__pyx_t_6uvloop_4loop_method3_t)(PyObject *, PyObject *, PyObject *, PyObject *);

/* "uvloop/loop.pxd":31
 * ctypedef object (*method2_t)(object, object, object)
 * ctypedef object (*method3_t)(object, object, object, object)
 * ctypedef object (*method4_t)(object, object, object, object, object)             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef PyObject *(*__pyx_t_6uvloop_4loop_method4_t)(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);

/* "uvloop/handles/handle.pxd":18
 * 
 *     cdef _error(self, exc, throw)
 *     cdef _fatal_error(self, exc, throw, reason=?)             # <<<<<<<<<<<<<<
 * 
 *     cdef _free(self)
 */
struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error {
  int __pyx_n;
  PyObject *reason;
};

/* "uvloop/handles/basetransport.pxd":22
 *     # All "inline" methods are final
 * 
 *     cdef inline _set_write_buffer_limits(self, int high=*, int low=*)             # <<<<<<<<<<<<<<
 *     cdef inline _maybe_pause_protocol(self)
 *     cdef inline _maybe_resume_protocol(self)
 */
struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits {
  int __pyx_n;
  int high;
  int low;
};

/* "uvloop/handles/basetransport.pxd":33
 * 
 *     # Overloads of UVHandle methods:
 *     cdef _fatal_error(self, exc, throw, reason=?)             # <<<<<<<<<<<<<<
 *     cdef _close(self)
 * 
 */
struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__fatal_error {
  int __pyx_n;
  PyObject *reason;
};

/* "uvloop/handles/tcp.pxd":3
 * cdef class TCPServer(UVStreamServer):
 *     cdef open(self, int sockfd)
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=*)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind {
  int __pyx_n;
  unsigned int flags;
};

/* "uvloop/handles/tcp.pxd":17
 *         system.sockaddr_storage __sockname
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=*)             # <<<<<<<<<<<<<<
 *     cdef open(self, int sockfd)
 *     cdef connect(self, system.sockaddr* addr)
 */
struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind {
  int __pyx_n;
  unsigned int flags;
};

/* "uvloop/handles/poll.pyx":145
 *         UVHandle._close(<UVHandle>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         try:
 *             if self.reading_handle is not None:
 */
struct __pyx_opt_args_6uvloop_4loop_6UVPoll__fatal_error {
  int __pyx_n;
  PyObject *reason;
};

/* "uvloop/handles/streamserver.pyx":65
 *         client._accept(<UVStream>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Overload UVHandle._fatal_error
 * 
 */
struct __pyx_opt_args_6uvloop_4loop_14UVStreamServer__fatal_error {
  int __pyx_n;
  PyObject *reason;
};

/* "uvloop/loop.pxd":34
 * 
 * 
 * cdef class Loop:             # <<<<<<<<<<<<<<
 *     cdef:
 *         uv.uv_loop_t *uvloop
 */
struct __pyx_obj_6uvloop_4loop_Loop {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_Loop *__pyx_vtab;
  uv_loop_t *uvloop;
  int _coroutine_wrapper_set;
  int _closed;
  int _debug;
  int _running;
  int _stopping;
  long _thread_id;
  int _thread_is_main;
  int _sigint_check;
  struct __pyx_obj_6uvloop_4loop_SignalsStack *py_signals;
  struct __pyx_obj_6uvloop_4loop_SignalsStack *uv_signals;
  int _executing_py_code;
  PyObject *_task_factory;
  PyObject *_exception_handler;
  PyObject *_default_executor;
  PyObject *_ready;
  Py_ssize_t _ready_len;
  PyObject *_timers;
  PyObject *_polls;
  PyObject *_polls_gc;
  PyObject *_signal_handlers;
  int _custom_sigint;
  struct __pyx_obj_6uvloop_4loop_UVAsync *handler_async;
  struct __pyx_obj_6uvloop_4loop_UVIdle *handler_idle;
  struct __pyx_obj_6uvloop_4loop_UVSignal *handler_sigint;
  struct __pyx_obj_6uvloop_4loop_UVSignal *handler_sighup;
  PyObject *_last_error;
  PyObject *__weakref__;
  char _recv_buffer[0x3E800];
  int _recv_buffer_in_use;
};


/* "uvloop/cbhandles.pxd":1
 * cdef class Handle:             # <<<<<<<<<<<<<<
 *     cdef:
 *         Loop loop
 */
struct __pyx_obj_6uvloop_4loop_Handle {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_Handle *__pyx_vtab;
  struct __pyx_obj_6uvloop_4loop_Loop *loop;
  int cancelled;
  PyObject *meth_name;
  int cb_type;
  void *callback;
  PyObject *arg1;
  PyObject *arg2;
  PyObject *arg3;
  PyObject *arg4;
  PyObject *arg5;
  PyObject *__weakref__;
};


/* "uvloop/cbhandles.pxd":18
 * 
 * 
 * cdef class TimerHandle:             # <<<<<<<<<<<<<<
 *     cdef:
 *         object callback, args
 */
struct __pyx_obj_6uvloop_4loop_TimerHandle {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle *__pyx_vtab;
  PyObject *callback;
  PyObject *args;
  int closed;
  struct __pyx_obj_6uvloop_4loop_UVTimer *timer;
  struct __pyx_obj_6uvloop_4loop_Loop *loop;
  PyObject *__weakref__;
};


/* "uvloop/loop.pxd":20
 * 
 * 
 * cdef class UVHandle             # <<<<<<<<<<<<<<
 * 
 * cdef class UVAsync(UVHandle)
 */
struct __pyx_obj_6uvloop_4loop_UVHandle {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *__pyx_vtab;
  uv_handle_t *_handle;
  int _closed;
  int _inited;
  struct __pyx_obj_6uvloop_4loop_Loop *_loop;
};


/* "uvloop/handles/handle.pxd":24
 * 
 * 
 * cdef class UVSocketHandle(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         # Points to a Python file-object that should be closed
 */
struct __pyx_obj_6uvloop_4loop_UVSocketHandle {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *_fileobj;
  PyObject *__pyx___cached_socket;
};


/* "uvloop/loop.pxd":22
 * cdef class UVHandle
 * 
 * cdef class UVAsync(UVHandle)             # <<<<<<<<<<<<<<
 * cdef class UVTimer(UVHandle)
 * cdef class UVSignal(UVHandle)
 */
struct __pyx_obj_6uvloop_4loop_UVAsync {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  __pyx_t_6uvloop_4loop_method_t *callback;
  PyObject *ctx;
};


/* "uvloop/loop.pxd":25
 * cdef class UVTimer(UVHandle)
 * cdef class UVSignal(UVHandle)
 * cdef class UVIdle(UVHandle)             # <<<<<<<<<<<<<<
 * 
 * ctypedef object (*method_t)(object)
 */
struct __pyx_obj_6uvloop_4loop_UVIdle {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  struct __pyx_obj_6uvloop_4loop_Handle *h;
  int running;
};


/* "uvloop/loop.pxd":23
 * 
 * cdef class UVAsync(UVHandle)
 * cdef class UVTimer(UVHandle)             # <<<<<<<<<<<<<<
 * cdef class UVSignal(UVHandle)
 * cdef class UVIdle(UVHandle)
 */
struct __pyx_obj_6uvloop_4loop_UVTimer {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  __pyx_t_6uvloop_4loop_method_t *callback;
  PyObject *ctx;
  int running;
  uint64_t timeout;
};


/* "uvloop/loop.pxd":24
 * cdef class UVAsync(UVHandle)
 * cdef class UVTimer(UVHandle)
 * cdef class UVSignal(UVHandle)             # <<<<<<<<<<<<<<
 * cdef class UVIdle(UVHandle)
 * 
 */
struct __pyx_obj_6uvloop_4loop_UVSignal {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  struct __pyx_obj_6uvloop_4loop_Handle *h;
  int running;
  int signum;
};


/* "uvloop/handles/poll.pxd":1
 * cdef class UVPoll(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         int fd
 */
struct __pyx_obj_6uvloop_4loop_UVPoll {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  int fd;
  struct __pyx_obj_6uvloop_4loop_Handle *reading_handle;
  struct __pyx_obj_6uvloop_4loop_Handle *writing_handle;
};


/* "uvloop/handles/basetransport.pxd":1
 * cdef class UVBaseTransport(UVSocketHandle):             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
struct __pyx_obj_6uvloop_4loop_UVBaseTransport {
  struct __pyx_obj_6uvloop_4loop_UVSocketHandle __pyx_base;
  int _closing;
  int _protocol_connected;
  int _protocol_paused;
  PyObject *_protocol_data_received;
  size_t _high_water;
  size_t _low_water;
  PyObject *_protocol;
  struct __pyx_obj_6uvloop_4loop_Server *_server;
  PyObject *_waiter;
  PyObject *_extra_info;
  uint32_t _conn_lost;
};


/* "uvloop/handles/stream.pxd":1
 * cdef class UVStream(UVBaseTransport):             # <<<<<<<<<<<<<<
 *     cdef:
 *         uv.uv_shutdown_t _shutdown_req
 */
struct __pyx_obj_6uvloop_4loop_UVStream {
  struct __pyx_obj_6uvloop_4loop_UVBaseTransport __pyx_base;
  uv_shutdown_t _shutdown_req;
  int __pyx___shutting_down;
  int __pyx___reading;
  int __pyx___read_error_close;
  int _eof;
};


/* "uvloop/handles/streamserver.pxd":1
 * cdef class UVStreamServer(UVSocketHandle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         object ssl
 */
struct __pyx_obj_6uvloop_4loop_UVStreamServer {
  struct __pyx_obj_6uvloop_4loop_UVSocketHandle __pyx_base;
  PyObject *ssl;
  PyObject *protocol_factory;
  int opened;
  struct __pyx_obj_6uvloop_4loop_Server *_server;
};


/* "uvloop/handles/tcp.pxd":1
 * cdef class TCPServer(UVStreamServer):             # <<<<<<<<<<<<<<
 *     cdef open(self, int sockfd)
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=*)
 */
struct __pyx_obj_6uvloop_4loop_TCPServer {
  struct __pyx_obj_6uvloop_4loop_UVStreamServer __pyx_base;
};


/* "uvloop/handles/tcp.pxd":10
 * 
 * 
 * cdef class TCPTransport(UVStream):             # <<<<<<<<<<<<<<
 *     cdef:
 *         bint __peername_set
 */
struct __pyx_obj_6uvloop_4loop_TCPTransport {
  struct __pyx_obj_6uvloop_4loop_UVStream __pyx_base;
  int __pyx___peername_set;
  int __pyx___sockname_set;
  struct sockaddr_storage __pyx___peername;
  struct sockaddr_storage __pyx___sockname;
};


/* "uvloop/handles/pipe.pxd":1
 * cdef class UnixServer(UVStreamServer):             # <<<<<<<<<<<<<<
 * 
 *     cdef bind(self, str path)
 */
struct __pyx_obj_6uvloop_4loop_UnixServer {
  struct __pyx_obj_6uvloop_4loop_UVStreamServer __pyx_base;
};


/* "uvloop/handles/pipe.pxd":11
 * 
 * 
 * cdef class UnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
struct __pyx_obj_6uvloop_4loop_UnixTransport {
  struct __pyx_obj_6uvloop_4loop_UVStream __pyx_base;
};


/* "uvloop/handles/pipe.pxd":21
 * 
 * 
 * cdef class ReadUnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
struct __pyx_obj_6uvloop_4loop_ReadUnixTransport {
  struct __pyx_obj_6uvloop_4loop_UVStream __pyx_base;
};


/* "uvloop/handles/pipe.pxd":30
 * 
 * 
 * cdef class WriteUnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
struct __pyx_obj_6uvloop_4loop_WriteUnixTransport {
  struct __pyx_obj_6uvloop_4loop_UVStream __pyx_base;
};


/* "uvloop/handles/process.pxd":1
 * cdef class UVProcess(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         object _returncode
 */
struct __pyx_obj_6uvloop_4loop_UVProcess {
  struct __pyx_obj_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *_returncode;
  PyObject *_pid;
  PyObject *_fds_to_close;
  uv_process_options_t options;
  uv_stdio_container_t iocnt[3];
  PyObject *__pyx___env;
  char **uv_opt_env;
  PyObject *__pyx___args;
  char **uv_opt_args;
  char *uv_opt_file;
  PyObject *__pyx___cwd;
};


/* "uvloop/handles/process.pxd":36
 * 
 * 
 * cdef class UVProcessTransport(UVProcess):             # <<<<<<<<<<<<<<
 *     cdef:
 *         list _exit_waiters
 */
struct __pyx_obj_6uvloop_4loop_UVProcessTransport {
  struct __pyx_obj_6uvloop_4loop_UVProcess __pyx_base;
  PyObject *_exit_waiters;
  PyObject *_init_futs;
  int _stdio_ready;
  PyObject *_pending_calls;
  PyObject *_protocol;
  int _finished;
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *stdin;
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *stdout;
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *stderr;
  PyObject *stdin_proto;
  PyObject *stdout_proto;
  PyObject *stderr_proto;
};


/* "uvloop/request.pxd":1
 * cdef class UVRequest:             # <<<<<<<<<<<<<<
 *     cdef:
 *         uv.uv_req_t *request
 */
struct __pyx_obj_6uvloop_4loop_UVRequest {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_UVRequest *__pyx_vtab;
  uv_req_t *request;
  int done;
  struct __pyx_obj_6uvloop_4loop_Loop *loop;
};


/* "uvloop/handles/udp.pxd":1
 * cdef class UDPTransport(UVBaseTransport):             # <<<<<<<<<<<<<<
 *     cdef:
 *         bint __receiving
 */
struct __pyx_obj_6uvloop_4loop_UDPTransport {
  struct __pyx_obj_6uvloop_4loop_UVBaseTransport __pyx_base;
  int __pyx___receiving;
  int _family;
  int _address_set;
  struct sockaddr _address;
  PyObject *_cached_py_address;
};


/* "uvloop/server.pxd":1
 * cdef class Server:             # <<<<<<<<<<<<<<
 *     cdef:
 *         list _servers
 */
struct __pyx_obj_6uvloop_4loop_Server {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_Server *__pyx_vtab;
  PyObject *_servers;
  PyObject *_waiters;
  int _active_count;
  struct __pyx_obj_6uvloop_4loop_Loop *_loop;
};


/* "uvloop/os_signal.pxd":4
 * 
 * 
 * cdef class SignalsStack:             # <<<<<<<<<<<<<<
 *     cdef:
 *         sighandler_t[MAX_SIG] signals
 */
struct __pyx_obj_6uvloop_4loop_SignalsStack {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack *__pyx_vtab;
  __pyx_t_4libc_6signal_sighandler_t signals[64];
  int saved;
};


/* "uvloop/handles/stream.pyx":3
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class _StreamWriteContext:             # <<<<<<<<<<<<<<
 *     # used to hold additional write request information for uv_write
 * 
 */
struct __pyx_obj_6uvloop_4loop__StreamWriteContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext *__pyx_vtab;
  uv_write_t req;
  uv_buf_t uv_buf;
  Py_buffer py_buf;
  struct __pyx_obj_6uvloop_4loop_UVStream *stream;
  int closed;
};


/* "uvloop/handles/tcp.pyx":171
 * 
 * 
 * cdef class _TCPConnectRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         TCPTransport transport
 */
struct __pyx_obj_6uvloop_4loop__TCPConnectRequest {
  struct __pyx_obj_6uvloop_4loop_UVRequest __pyx_base;
  struct __pyx_obj_6uvloop_4loop_TCPTransport *transport;
};


/* "uvloop/handles/pipe.pyx":175
 * 
 * 
 * cdef class _PipeConnectRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         UnixTransport transport
 */
struct __pyx_obj_6uvloop_4loop__PipeConnectRequest {
  struct __pyx_obj_6uvloop_4loop_UVRequest __pyx_base;
  struct __pyx_obj_6uvloop_4loop_UnixTransport *transport;
};


/* "uvloop/dns.pyx":102
 * 
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class AddrInfo:             # <<<<<<<<<<<<<<
 *     cdef:
 *         system.addrinfo *data
 */
struct __pyx_obj_6uvloop_4loop_AddrInfo {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo *__pyx_vtab;
  struct addrinfo *data;
};


/* "uvloop/dns.pyx":146
 * 
 * 
 * cdef class AddrInfoRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         system.addrinfo hints
 */
struct __pyx_obj_6uvloop_4loop_AddrInfoRequest {
  struct __pyx_obj_6uvloop_4loop_UVRequest __pyx_base;
  struct addrinfo hints;
  PyObject *callback;
};


/* "uvloop/dns.pyx":205
 * 
 * 
 * cdef class NameInfoRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         object callback
 */
struct __pyx_obj_6uvloop_4loop_NameInfoRequest {
  struct __pyx_obj_6uvloop_4loop_UVRequest __pyx_base;
  PyObject *callback;
};


/* "uvloop/handles/udp.pyx":3
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class _UDPSendContext:             # <<<<<<<<<<<<<<
 *     # used to hold additional write request information for uv_write
 * 
 */
struct __pyx_obj_6uvloop_4loop__UDPSendContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext *__pyx_vtab;
  uv_udp_send_t req;
  uv_buf_t uv_buf;
  Py_buffer py_buf;
  struct __pyx_obj_6uvloop_4loop_UDPTransport *udp;
  int closed;
  struct sockaddr addr;
};


/* "uvloop/loop.pyx":495
 *         return result
 * 
 *     cdef _getaddrinfo(self, object host, object port,             # <<<<<<<<<<<<<<
 *                       int family, int type,
 *                       int proto, int flags,
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo {
  PyObject_HEAD
  PyObject *__pyx_v_fut;
  int __pyx_v_unpack;
};


/* "uvloop/loop.pyx":534
 *         return fut
 * 
 *     cdef _getnameinfo(self, system.sockaddr *addr, int flags):             # <<<<<<<<<<<<<<
 *         cdef NameInfoRequest nr
 *         fut = self._new_future()
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo {
  PyObject_HEAD
  PyObject *__pyx_v_fut;
};


/* "uvloop/loop.pyx":648
 *             fut.set_result((conn, address))
 * 
 *     cdef _sock_connect(self, fut, sock, address):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect {
  PyObject_HEAD
  PyObject *__pyx_v_fd;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
};


/* "uvloop/loop.pyx":924
 *         return self._task_factory
 * 
 *     def run_until_complete(self, future):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 * 
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
};


/* "uvloop/loop.pyx":958
 * 
 *     @aio_coroutine
 *     async def getnameinfo(self, sockaddr, int flags=0):             # <<<<<<<<<<<<<<
 *         cdef:
 *             AddrInfo ai_cnt
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo {
  PyObject_HEAD
  struct addrinfo *__pyx_v_ai;
  struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_ai_cnt;
  int __pyx_v_flags;
  PyObject *__pyx_v_flowinfo;
  PyObject *__pyx_v_scope_id;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  struct sockaddr_in6 *__pyx_v_sin6;
  Py_ssize_t __pyx_v_sl;
  PyObject *__pyx_v_sockaddr;
};


/* "uvloop/loop.pyx":1013
 * 
 *     @aio_coroutine
 *     async def create_server(self, protocol_factory, host=None, port=None,             # <<<<<<<<<<<<<<
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server {
  PyObject_HEAD
  struct addrinfo *__pyx_v_addrinfo;
  int __pyx_v_backlog;
  int __pyx_v_completed;
  PyObject *__pyx_v_err;
  int __pyx_v_family;
  PyObject *__pyx_v_fileno;
  int __pyx_v_flags;
  PyObject *__pyx_v_fs;
  PyObject *__pyx_v_host;
  PyObject *__pyx_v_hosts;
  PyObject *__pyx_v_info;
  PyObject *__pyx_v_infos;
  PyObject *__pyx_v_port;
  PyObject *__pyx_v_protocol_factory;
  PyObject *__pyx_v_pyaddr;
  PyObject *__pyx_v_reuse_address;
  PyObject *__pyx_v_reuse_port;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server;
  PyObject *__pyx_v_sock;
  PyObject *__pyx_v_ssl;
  struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_tcp;
};


/* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_ai_local;
  struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_ai_remote;
  PyObject *__pyx_v_app_protocol;
  PyObject *__pyx_v_exc;
  PyObject *__pyx_v_exceptions;
  PyObject *__pyx_v_f1;
  PyObject *__pyx_v_f2;
  PyObject *__pyx_v_family;
  PyObject *__pyx_v_fileno;
  PyObject *__pyx_v_flags;
  PyObject *__pyx_v_fs;
  PyObject *__pyx_v_genexpr;
  PyObject *__pyx_v_host;
  struct addrinfo *__pyx_v_lai;
  PyObject *__pyx_v_local_addr;
  PyObject *__pyx_v_model;
  PyObject *__pyx_v_port;
  PyObject *__pyx_v_proto;
  PyObject *__pyx_v_protocol;
  PyObject *__pyx_v_protocol_factory;
  struct addrinfo *__pyx_v_rai;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  PyObject *__pyx_v_server_hostname;
  PyObject *__pyx_v_sock;
  PyObject *__pyx_v_ssl;
  PyObject *__pyx_v_ssl_waiter;
  PyObject *__pyx_v_sslcontext;
  struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_tr;
  PyObject *__pyx_v_waiter;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "uvloop/loop.pyx":1213
 *                 # If they all have the same str(), raise one.
 *                 model = str(exceptions[0])
 *                 if all(str(exc) == model for exc in exceptions):             # <<<<<<<<<<<<<<
 *                     raise exceptions[0]
 *                 # Raise a combined exception so the user can see all
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *__pyx_outer_scope;
  PyObject *__pyx_v_exc;
};


/* "uvloop/loop.pyx":1218
 *                 # the various error messages.
 *                 raise OSError('Multiple exceptions: {}'.format(
 *                     ', '.join(str(exc) for exc in exceptions)))             # <<<<<<<<<<<<<<
 *         else:
 *             if sock is None:
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *__pyx_outer_scope;
  PyObject *__pyx_v_exc;
};


/* "uvloop/loop.pyx":1245
 * 
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,             # <<<<<<<<<<<<<<
 *                                  *, backlog=100, sock=None, ssl=None):
 * 
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server {
  PyObject_HEAD
  PyObject *__pyx_v_backlog;
  PyObject *__pyx_v_fileno;
  PyObject *__pyx_v_path;
  struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_pipe;
  PyObject *__pyx_v_protocol_factory;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server;
  PyObject *__pyx_v_sock;
  PyObject *__pyx_v_ssl;
};


/* "uvloop/loop.pyx":1296
 * 
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,             # <<<<<<<<<<<<<<
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection {
  PyObject_HEAD
  PyObject *__pyx_v_app_protocol;
  PyObject *__pyx_v_fileno;
  PyObject *__pyx_v_path;
  PyObject *__pyx_v_protocol;
  PyObject *__pyx_v_protocol_factory;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  PyObject *__pyx_v_server_hostname;
  PyObject *__pyx_v_sock;
  PyObject *__pyx_v_ssl;
  PyObject *__pyx_v_ssl_waiter;
  PyObject *__pyx_v_sslcontext;
  struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_tr;
  PyObject *__pyx_v_waiter;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "uvloop/loop.pyx":1497
 * 
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,             # <<<<<<<<<<<<<<
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run {
  PyObject_HEAD
  PyObject *__pyx_v___uvloop_sleep_after_fork;
  PyObject *__pyx_v_args;
  PyObject *__pyx_v_bufsize;
  PyObject *__pyx_v_close_fds;
  PyObject *__pyx_v_creationflags;
  PyObject *__pyx_v_cwd;
  int __pyx_v_debug_flags;
  PyObject *__pyx_v_env;
  PyObject *__pyx_v_executable;
  PyObject *__pyx_v_pass_fds;
  PyObject *__pyx_v_preexec_fn;
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_proc;
  PyObject *__pyx_v_protocol;
  PyObject *__pyx_v_protocol_factory;
  PyObject *__pyx_v_restore_signals;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  PyObject *__pyx_v_shell;
  PyObject *__pyx_v_start_new_session;
  PyObject *__pyx_v_startupinfo;
  PyObject *__pyx_v_stderr;
  PyObject *__pyx_v_stdin;
  PyObject *__pyx_v_stdout;
  PyObject *__pyx_v_universal_newlines;
  PyObject *__pyx_v_waiter;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "uvloop/loop.pyx":1588
 * 
 *     @aio_coroutine
 *     async def connect_read_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ReadUnixTransport transp
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe {
  PyObject_HEAD
  int __pyx_v_fileno;
  PyObject *__pyx_v_pipe;
  PyObject *__pyx_v_proto;
  PyObject *__pyx_v_proto_factory;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_transp;
  PyObject *__pyx_v_waiter;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "uvloop/loop.pyx":1608
 * 
 *     @aio_coroutine
 *     async def connect_write_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             WriteUnixTransport transp
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe {
  PyObject_HEAD
  int __pyx_v_fileno;
  PyObject *__pyx_v_pipe;
  PyObject *__pyx_v_proto;
  PyObject *__pyx_v_proto_factory;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_transp;
  PyObject *__pyx_v_waiter;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint {
  PyObject_HEAD
  PyObject *__pyx_v_allow_broadcast;
  PyObject *__pyx_v_ctx;
  PyObject *__pyx_v_ex;
  PyObject *__pyx_v_excs;
  PyObject *__pyx_v_family;
  PyObject *__pyx_v_flags;
  PyObject *__pyx_v_genexpr;
  PyObject *__pyx_v_lads;
  struct addrinfo *__pyx_v_lai;
  PyObject *__pyx_v_local_addr;
  PyObject *__pyx_v_opts;
  PyObject *__pyx_v_problems;
  PyObject *__pyx_v_proto;
  PyObject *__pyx_v_protocol;
  PyObject *__pyx_v_protocol_factory;
  PyObject *__pyx_v_rads;
  struct addrinfo *__pyx_v_rai;
  PyObject *__pyx_v_remote_addr;
  PyObject *__pyx_v_reuse_address;
  PyObject *__pyx_v_reuse_port;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self;
  PyObject *__pyx_v_sock;
  PyObject *__pyx_v_socket;
  struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_udp;
  PyObject *__pyx_v_waiter;
};


/* "uvloop/loop.pyx":1714
 *                             allow_broadcast=allow_broadcast)
 *                 problems = ', '.join(
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'socket modifier keyword arguments can not be used '
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *__pyx_outer_scope;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_v;
};


/* "uvloop/server.pyx":36
 * 
 *     @aio_coroutine
 *     async def wait_closed(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None or self._waiters is None:
 *             return
 */
struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed {
  PyObject_HEAD
  struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self;
  PyObject *__pyx_v_waiter;
};



/* "uvloop/handles/handle.pyx":5
 * 
 * @cython.no_gc_clear
 * cdef class UVHandle:             # <<<<<<<<<<<<<<
 *     """A base class for all libuv handles.
 * 
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVHandle {
  PyObject *(*_start_init)(struct __pyx_obj_6uvloop_4loop_UVHandle *, struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_abort_init)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
  PyObject *(*_finish_init)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
  int (*_is_alive)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
  PyObject *(*_ensure_alive)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
  PyObject *(*_error)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *);
  PyObject *(*_fatal_error)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args);
  PyObject *(*_free)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
  PyObject *(*_close)(struct __pyx_obj_6uvloop_4loop_UVHandle *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *__pyx_vtabptr_6uvloop_4loop_UVHandle;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__start_init(struct __pyx_obj_6uvloop_4loop_UVHandle *, struct __pyx_obj_6uvloop_4loop_Loop *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__abort_init(struct __pyx_obj_6uvloop_4loop_UVHandle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__finish_init(struct __pyx_obj_6uvloop_4loop_UVHandle *);
static CYTHON_INLINE int __pyx_f_6uvloop_4loop_8UVHandle__is_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__ensure_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *);


/* "uvloop/handles/async_.pyx":2
 * @cython.no_gc_clear
 * cdef class UVAsync(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef _init(self, Loop loop, method_t* callback, object ctx):
 *         cdef int err
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVAsync {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVAsync *, struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *);
  PyObject *(*send)(struct __pyx_obj_6uvloop_4loop_UVAsync *);
  struct __pyx_obj_6uvloop_4loop_UVAsync *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *__pyx_vtabptr_6uvloop_4loop_UVAsync;


/* "uvloop/handles/timer.pyx":2
 * @cython.no_gc_clear
 * cdef class UVTimer(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef _init(self, Loop loop, method_t* callback, object ctx,
 *                uint64_t timeout):
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVTimer {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVTimer *, struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *, uint64_t);
  PyObject *(*stop)(struct __pyx_obj_6uvloop_4loop_UVTimer *);
  PyObject *(*start)(struct __pyx_obj_6uvloop_4loop_UVTimer *);
  struct __pyx_obj_6uvloop_4loop_UVTimer *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *, uint64_t);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *__pyx_vtabptr_6uvloop_4loop_UVTimer;


/* "uvloop/handles/signal.pyx":2
 * @cython.no_gc_clear
 * cdef class UVSignal(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef _init(self, Loop loop, Handle h, int signum):
 *         cdef int err
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVSignal {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVSignal *, struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *, int);
  PyObject *(*stop)(struct __pyx_obj_6uvloop_4loop_UVSignal *);
  PyObject *(*start)(struct __pyx_obj_6uvloop_4loop_UVSignal *);
  struct __pyx_obj_6uvloop_4loop_UVSignal *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *__pyx_vtabptr_6uvloop_4loop_UVSignal;


/* "uvloop/handles/idle.pyx":2
 * @cython.no_gc_clear
 * cdef class UVIdle(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef _init(self, Loop loop, Handle h):
 *         cdef int err
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVIdle {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVIdle *, struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*stop)(struct __pyx_obj_6uvloop_4loop_UVIdle *);
  PyObject *(*start)(struct __pyx_obj_6uvloop_4loop_UVIdle *);
  struct __pyx_obj_6uvloop_4loop_UVIdle *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *__pyx_vtabptr_6uvloop_4loop_UVIdle;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_stop(struct __pyx_obj_6uvloop_4loop_UVIdle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_start(struct __pyx_obj_6uvloop_4loop_UVIdle *);


/* "uvloop/loop.pyx":39
 * 
 * @cython.no_gc_clear
 * cdef class Loop:             # <<<<<<<<<<<<<<
 *     def __cinit__(self):
 *         cdef int err
 */

struct __pyx_vtabstruct_6uvloop_4loop_Loop {
  PyObject *(*_on_wake)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_on_idle)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_on_sigint)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_on_sighup)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_check_sigint)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*__pyx___run)(struct __pyx_obj_6uvloop_4loop_Loop *, uv_run_mode);
  PyObject *(*_run)(struct __pyx_obj_6uvloop_4loop_Loop *, uv_run_mode);
  PyObject *(*_close)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_stop)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
  uint64_t (*_time)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_call_soon)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *);
  PyObject *(*_call_soon_handle)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*_call_later)(struct __pyx_obj_6uvloop_4loop_Loop *, uint64_t, PyObject *, PyObject *);
  void (*_handle_exception)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
  PyObject *(*_new_future)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_check_signal)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
  PyObject *(*_check_closed)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_check_thread)(struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_getaddrinfo)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, int, int, int, int, int);
  PyObject *(*_getnameinfo)(struct __pyx_obj_6uvloop_4loop_Loop *, struct sockaddr *, int);
  PyObject *(*_add_reader)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*_remove_reader)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
  PyObject *(*_add_writer)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*_remove_writer)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
  PyObject *(*_sock_recv)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *, PyObject *);
  PyObject *(*_sock_sendall)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *, PyObject *);
  PyObject *(*_sock_accept)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *);
  PyObject *(*_sock_connect)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_sock_connect_cb)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_sock_set_reuseport)(struct __pyx_obj_6uvloop_4loop_Loop *, int);
  PyObject *(*_set_coroutine_wrapper)(struct __pyx_obj_6uvloop_4loop_Loop *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_Loop *__pyx_vtabptr_6uvloop_4loop_Loop;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon_handle(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__new_future(struct __pyx_obj_6uvloop_4loop_Loop *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_signal(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_closed(struct __pyx_obj_6uvloop_4loop_Loop *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_thread(struct __pyx_obj_6uvloop_4loop_Loop *);
static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_reader(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *);
static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_reader(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);
static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_writer(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *);
static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_writer(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *);


/* "uvloop/cbhandles.pyx":3
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class Handle:             # <<<<<<<<<<<<<<
 *     def __cinit__(self):
 *         self.cancelled = 0
 */

struct __pyx_vtabstruct_6uvloop_4loop_Handle {
  PyObject *(*_set_loop)(struct __pyx_obj_6uvloop_4loop_Handle *, struct __pyx_obj_6uvloop_4loop_Loop *);
  PyObject *(*_run)(struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*_cancel)(struct __pyx_obj_6uvloop_4loop_Handle *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_Handle *__pyx_vtabptr_6uvloop_4loop_Handle;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__set_loop(struct __pyx_obj_6uvloop_4loop_Handle *, struct __pyx_obj_6uvloop_4loop_Loop *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__run(struct __pyx_obj_6uvloop_4loop_Handle *);


/* "uvloop/cbhandles.pyx":115
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class TimerHandle:             # <<<<<<<<<<<<<<
 *     def __cinit__(self, Loop loop, object callback, object args,
 *                   uint64_t delay):
 */

struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle {
  PyObject *(*_run)(struct __pyx_obj_6uvloop_4loop_TimerHandle *);
  PyObject *(*_cancel)(struct __pyx_obj_6uvloop_4loop_TimerHandle *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle *__pyx_vtabptr_6uvloop_4loop_TimerHandle;


/* "uvloop/handles/handle.pyx":197
 * 
 * @cython.no_gc_clear
 * cdef class UVSocketHandle(UVHandle):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_fileno)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *);
  PyObject *(*_new_socket)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *);
  PyObject *(*_get_socket)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *);
  PyObject *(*_attach_fileobj)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle *__pyx_vtabptr_6uvloop_4loop_UVSocketHandle;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__fileno(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__attach_fileobj(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *, PyObject *);


/* "uvloop/handles/poll.pyx":2
 * @cython.no_gc_clear
 * cdef class UVPoll(UVHandle):             # <<<<<<<<<<<<<<
 *     cdef _init(self, Loop loop, int fd):
 *         cdef int err
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVPoll {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Loop *, int);
  PyObject *(*_poll_start)(struct __pyx_obj_6uvloop_4loop_UVPoll *, int);
  PyObject *(*_poll_stop)(struct __pyx_obj_6uvloop_4loop_UVPoll *);
  int (*is_active)(struct __pyx_obj_6uvloop_4loop_UVPoll *);
  PyObject *(*start_reading)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*start_writing)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Handle *);
  PyObject *(*stop_reading)(struct __pyx_obj_6uvloop_4loop_UVPoll *);
  PyObject *(*stop_writing)(struct __pyx_obj_6uvloop_4loop_UVPoll *);
  PyObject *(*stop)(struct __pyx_obj_6uvloop_4loop_UVPoll *);
  struct __pyx_obj_6uvloop_4loop_UVPoll *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *__pyx_vtabptr_6uvloop_4loop_UVPoll;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_start(struct __pyx_obj_6uvloop_4loop_UVPoll *, int);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_stop(struct __pyx_obj_6uvloop_4loop_UVPoll *);


/* "uvloop/handles/basetransport.pyx":2
 * @cython.no_gc_clear
 * cdef class UVBaseTransport(UVSocketHandle):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle __pyx_base;
  PyObject *(*_set_write_buffer_limits)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits *__pyx_optional_args);
  PyObject *(*_maybe_pause_protocol)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_maybe_resume_protocol)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_schedule_call_connection_made)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_schedule_call_connection_lost)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
  PyObject *(*_call_connection_made)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_call_connection_lost)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
  PyObject *(*_set_server)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_obj_6uvloop_4loop_Server *);
  PyObject *(*_set_waiter)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
  PyObject *(*_set_protocol)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
  PyObject *(*_init_protocol)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_add_extra_info)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *, PyObject *);
  size_t (*_get_write_buffer_size)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  int (*_is_reading)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_start_reading)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
  PyObject *(*_stop_reading)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *__pyx_vtabptr_6uvloop_4loop_UVBaseTransport;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits *__pyx_optional_args);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_pause_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_resume_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_made(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_server(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_obj_6uvloop_4loop_Server *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_waiter(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__init_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__add_extra_info(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *, PyObject *);


/* "uvloop/handles/stream.pyx":66
 * 
 * @cython.no_gc_clear
 * cdef class UVStream(UVBaseTransport):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVStream {
  struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
  PyObject *(*_shutdown)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_accept)(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_close_on_read_error)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*__pyx___reading_started)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*__pyx___reading_stopped)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_write)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
  PyObject *(*_try_write)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
  PyObject *(*_on_accept)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_on_read)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
  PyObject *(*_on_eof)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_on_write)(struct __pyx_obj_6uvloop_4loop_UVStream *);
  PyObject *(*_on_connect)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVStream *__pyx_vtabptr_6uvloop_4loop_UVStream;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__init(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__shutdown(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__accept(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__close_on_read_error(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_started(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_stopped(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__write(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__try_write(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_accept(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_read(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_eof(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_write(struct __pyx_obj_6uvloop_4loop_UVStream *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_connect(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);


/* "uvloop/handles/streamserver.pyx":2
 * @cython.no_gc_clear
 * cdef class UVStreamServer(UVSocketHandle):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer {
  struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
  PyObject *(*_mark_as_open)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *);
  PyObject *(*listen)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, int);
  PyObject *(*_on_listen)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *);
  struct __pyx_obj_6uvloop_4loop_UVStream *(*_make_new_transport)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *__pyx_vtabptr_6uvloop_4loop_UVStreamServer;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__init(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__mark_as_open(struct __pyx_obj_6uvloop_4loop_UVStreamServer *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, int);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__on_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *);


/* "uvloop/handles/tcp.pyx":57
 * 
 * @cython.no_gc_clear
 * cdef class TCPServer(UVStreamServer):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_TCPServer {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer __pyx_base;
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_TCPServer *, int);
  PyObject *(*bind)(struct __pyx_obj_6uvloop_4loop_TCPServer *, struct sockaddr *, struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind *__pyx_optional_args);
  struct __pyx_obj_6uvloop_4loop_TCPServer *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *, unsigned int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *__pyx_vtabptr_6uvloop_4loop_TCPServer;


/* "uvloop/handles/tcp.pyx":97
 * 
 * @cython.no_gc_clear
 * cdef class TCPTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStream __pyx_base;
  PyObject *(*bind)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, struct sockaddr *, struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind *__pyx_optional_args);
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, int);
  PyObject *(*connect)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, struct sockaddr *);
  struct __pyx_obj_6uvloop_4loop_TCPTransport *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *__pyx_vtabptr_6uvloop_4loop_TCPTransport;


/* "uvloop/handles/pipe.pyx":37
 * 
 * @cython.no_gc_clear
 * cdef class UnixServer(UVStreamServer):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_UnixServer {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer __pyx_base;
  PyObject *(*bind)(struct __pyx_obj_6uvloop_4loop_UnixServer *, PyObject *);
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_UnixServer *, int);
  struct __pyx_obj_6uvloop_4loop_UnixServer *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *__pyx_vtabptr_6uvloop_4loop_UnixServer;


/* "uvloop/handles/pipe.pyx":76
 * 
 * @cython.no_gc_clear
 * cdef class UnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStream __pyx_base;
  struct __pyx_obj_6uvloop_4loop_UnixTransport *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_UnixTransport *, int);
  PyObject *(*connect)(struct __pyx_obj_6uvloop_4loop_UnixTransport *, char *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *__pyx_vtabptr_6uvloop_4loop_UnixTransport;


/* "uvloop/handles/pipe.pyx":101
 * 
 * @cython.no_gc_clear
 * cdef class ReadUnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStream __pyx_base;
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *__pyx_vtabptr_6uvloop_4loop_ReadUnixTransport;


/* "uvloop/handles/pipe.pyx":144
 * 
 * @cython.no_gc_clear
 * cdef class WriteUnixTransport(UVStream):             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */

struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVStream __pyx_base;
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *);
  PyObject *(*open)(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *__pyx_vtabptr_6uvloop_4loop_WriteUnixTransport;


/* "uvloop/handles/process.pyx":2
 * @cython.no_gc_clear
 * cdef class UVProcess(UVHandle):             # <<<<<<<<<<<<<<
 *     """Abstract class; wrapper over uv_process_t handle."""
 * 
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVProcess {
  struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UVProcess *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
  char **(*__pyx___to_cstring_array)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *);
  PyObject *(*_init_args)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *);
  PyObject *(*_init_env)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *);
  PyObject *(*_init_files)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_init_options)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_close_after_spawn)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int);
  PyObject *(*_on_exit)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int64_t, int);
  PyObject *(*_kill)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *__pyx_vtabptr_6uvloop_4loop_UVProcess;


/* "uvloop/handles/process.pyx":213
 * 
 * @cython.no_gc_clear
 * cdef class UVProcessTransport(UVProcess):             # <<<<<<<<<<<<<<
 *     def __cinit__(self):
 *         self._exit_waiters = []
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVProcess __pyx_base;
  PyObject *(*_file_redirect_stdio)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int);
  PyObject *(*_file_devnull)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *);
  PyObject *(*_file_inpipe)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *);
  PyObject *(*_file_outpipe)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *);
  PyObject *(*_check_proc)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *);
  PyObject *(*_pipe_connection_lost)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int, PyObject *);
  PyObject *(*_pipe_data_received)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int, PyObject *);
  PyObject *(*_call_connection_made)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, PyObject *);
  PyObject *(*_try_finish)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *);
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *(*new)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *__pyx_vtabptr_6uvloop_4loop_UVProcessTransport;


/* "uvloop/request.pyx":1
 * cdef class UVRequest:             # <<<<<<<<<<<<<<
 *     """A base class for all libuv requests (uv_getaddrinfo_t, etc).
 * 
 */

struct __pyx_vtabstruct_6uvloop_4loop_UVRequest {
  PyObject *(*on_done)(struct __pyx_obj_6uvloop_4loop_UVRequest *);
  PyObject *(*cancel)(struct __pyx_obj_6uvloop_4loop_UVRequest *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVRequest *__pyx_vtabptr_6uvloop_4loop_UVRequest;


/* "uvloop/handles/udp.pyx":54
 * 
 * @cython.no_gc_clear
 * cdef class UDPTransport(UVBaseTransport):             # <<<<<<<<<<<<<<
 *     def __cinit__(self):
 *         self._family = uv.AF_UNSPEC
 */

struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport {
  struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport __pyx_base;
  PyObject *(*_init)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct __pyx_obj_6uvloop_4loop_Loop *, unsigned int);
  PyObject *(*_set_remote_address)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct sockaddr);
  PyObject *(*_bind)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct sockaddr *, int);
  PyObject *(*_open)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, int, int);
  PyObject *(*_set_broadcast)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, int);
  PyObject *(*__pyx___receiving_started)(struct __pyx_obj_6uvloop_4loop_UDPTransport *);
  PyObject *(*__pyx___receiving_stopped)(struct __pyx_obj_6uvloop_4loop_UDPTransport *);
  PyObject *(*_send)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *, PyObject *);
  PyObject *(*_on_receive)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_on_sent)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *__pyx_vtabptr_6uvloop_4loop_UDPTransport;
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_started(struct __pyx_obj_6uvloop_4loop_UDPTransport *);
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped(struct __pyx_obj_6uvloop_4loop_UDPTransport *);


/* "uvloop/server.pyx":1
 * cdef class Server:             # <<<<<<<<<<<<<<
 *     def __cinit__(self, Loop loop):
 *         self._loop = loop
 */

struct __pyx_vtabstruct_6uvloop_4loop_Server {
  PyObject *(*_add_server)(struct __pyx_obj_6uvloop_4loop_Server *, struct __pyx_obj_6uvloop_4loop_UVStreamServer *);
  PyObject *(*_wakeup)(struct __pyx_obj_6uvloop_4loop_Server *);
  PyObject *(*_attach)(struct __pyx_obj_6uvloop_4loop_Server *);
  PyObject *(*_detach)(struct __pyx_obj_6uvloop_4loop_Server *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_Server *__pyx_vtabptr_6uvloop_4loop_Server;


/* "uvloop/os_signal.pyx":5
 * 
 * 
 * cdef class SignalsStack:             # <<<<<<<<<<<<<<
 *     def __cinit__(self):
 *         self.saved = 0
 */

struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack {
  PyObject *(*save)(struct __pyx_obj_6uvloop_4loop_SignalsStack *);
  PyObject *(*restore)(struct __pyx_obj_6uvloop_4loop_SignalsStack *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack *__pyx_vtabptr_6uvloop_4loop_SignalsStack;


/* "uvloop/handles/stream.pyx":3
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class _StreamWriteContext:             # <<<<<<<<<<<<<<
 *     # used to hold additional write request information for uv_write
 * 
 */

struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext {
  PyObject *(*close)(struct __pyx_obj_6uvloop_4loop__StreamWriteContext *);
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *(*new)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext *__pyx_vtabptr_6uvloop_4loop__StreamWriteContext;


/* "uvloop/handles/tcp.pyx":171
 * 
 * 
 * cdef class _TCPConnectRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         TCPTransport transport
 */

struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest {
  struct __pyx_vtabstruct_6uvloop_4loop_UVRequest __pyx_base;
  PyObject *(*connect)(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *, struct sockaddr *);
};
static struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *__pyx_vtabptr_6uvloop_4loop__TCPConnectRequest;


/* "uvloop/handles/pipe.pyx":175
 * 
 * 
 * cdef class _PipeConnectRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         UnixTransport transport
 */

struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest {
  struct __pyx_vtabstruct_6uvloop_4loop_UVRequest __pyx_base;
  PyObject *(*connect)(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *, char *);
};
static struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest *__pyx_vtabptr_6uvloop_4loop__PipeConnectRequest;


/* "uvloop/dns.pyx":102
 * 
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class AddrInfo:             # <<<<<<<<<<<<<<
 *     cdef:
 *         system.addrinfo *data
 */

struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo {
  void (*set_data)(struct __pyx_obj_6uvloop_4loop_AddrInfo *, struct addrinfo *);
  PyObject *(*unpack)(struct __pyx_obj_6uvloop_4loop_AddrInfo *);
  int (*isinstance)(PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo *__pyx_vtabptr_6uvloop_4loop_AddrInfo;


/* "uvloop/dns.pyx":146
 * 
 * 
 * cdef class AddrInfoRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         system.addrinfo hints
 */

struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest {
  struct __pyx_vtabstruct_6uvloop_4loop_UVRequest __pyx_base;
};
static struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *__pyx_vtabptr_6uvloop_4loop_AddrInfoRequest;


/* "uvloop/dns.pyx":205
 * 
 * 
 * cdef class NameInfoRequest(UVRequest):             # <<<<<<<<<<<<<<
 *     cdef:
 *         object callback
 */

struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest {
  struct __pyx_vtabstruct_6uvloop_4loop_UVRequest __pyx_base;
  PyObject *(*query)(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *, struct sockaddr *, int);
};
static struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *__pyx_vtabptr_6uvloop_4loop_NameInfoRequest;


/* "uvloop/handles/udp.pyx":3
 * @cython.no_gc_clear
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class _UDPSendContext:             # <<<<<<<<<<<<<<
 *     # used to hold additional write request information for uv_write
 * 
 */

struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext {
  PyObject *(*close)(struct __pyx_obj_6uvloop_4loop__UDPSendContext *);
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *(*new)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *);
};
static struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext *__pyx_vtabptr_6uvloop_4loop__UDPSendContext;

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* IncludeStringH.proto */
#include <string.h>

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#else
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* KeywordStringCheck.proto */
static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);

/* PyThreadStateGet.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = PyThreadState_GET();
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            PyObject* args = PyTuple_Pack(1, key);
            if (likely(args))
                PyErr_SetObject(PyExc_KeyError, args);
            Py_XDECREF(args);
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#else
    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#endif

/* SaveResetException.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* PyErrExceptionMatches.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* GetException.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* SwapException.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
                                             int is_tuple, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* py_dict_clear.proto */
#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0)

/* ListAppend.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* append.proto */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* CythonFunction.proto */
#define __Pyx_CyFunction_USED 1
#include <structmember.h>
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#define __Pyx_CyFunction_GetClassObj(f)\
    (((__pyx_CyFunctionObject *) (f))->func_classobj)
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
    PyCFunctionObject func;
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
    PyObject *func_classobj;
    void *defaults;
    int defaults_pyobjects;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *self,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(void);

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* GetModuleGlobalName.proto */
static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* CallableCheck.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
#define __Pyx_PyCallable_Check(obj)   ((obj)->ob_type->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj)   PyCallable_Check(obj)
#endif

/* PyObjectSetAttrStr.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_setattr))
        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
#endif
    return PyObject_SetAttr(obj, attr_name, value);
}
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* CoroutineBase.proto */
typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *);
typedef struct {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    PyObject *gi_name;
    PyObject *gi_qualname;
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(PyTypeObject *type, __pyx_coroutine_body_t body,
                                                   PyObject *closure, PyObject *name, PyObject *qualname);
static int __Pyx_Coroutine_clear(PyObject *self);
#if 1 || PY_VERSION_HEX < 0x030300B0
static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
#endif

/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);

/* PatchGeneratorABC.proto */
static int __Pyx_patch_abc(void);

/* Coroutine.proto */
#define __Pyx_Coroutine_USED
static PyTypeObject *__pyx_CoroutineType = 0;
static PyTypeObject *__pyx_CoroutineAwaitType = 0;
#define __Pyx_Coroutine_CheckExact(obj) (Py_TYPE(obj) == __pyx_CoroutineType)
#define __Pyx_Coroutine_New(body, closure, name, qualname)\
    __Pyx__Coroutine_New(__pyx_CoroutineType, body, closure, name, qualname)
static int __pyx_Coroutine_init(void);
static PyObject *__Pyx__Coroutine_await(PyObject *coroutine);

/* GetAwaitIter.proto */
static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o);
static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o);

/* CoroutineYieldFrom.proto */
static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source);

/* ReturnWithStopIteration.proto */
#define __Pyx_ReturnWithStopIteration(value)\
    if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value)
static void __Pyx__ReturnWithStopIteration(PyObject* value);

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* ListCompAppend.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* ArgTypeTest.proto */
static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact);

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* MergeKeywords.proto */
static int __Pyx_MergeKeywords(PyObject *kwdict, PyObject *source_mapping);

/* PyDictContains.proto */
static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    int result = PyDict_Contains(dict, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);

/* None.proto */
static CYTHON_INLINE long __Pyx_div_long(long, long);

/* StringJoin.proto */
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyString_Join __Pyx_PyBytes_Join
#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
#else
#define __Pyx_PyString_Join PyUnicode_Join
#define __Pyx_PyBaseString_Join PyUnicode_Join
#endif
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION < 3
    #define __Pyx_PyBytes_Join _PyString_Join
    #else
    #define __Pyx_PyBytes_Join _PyBytes_Join
    #endif
#else
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);
#endif

/* PyIntBinop.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_AndObjC(op1, op2, intval, inplace)\
    (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2))
#endif

/* PyIntBinop.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
    PyObject_RichCompare(op1, op2, Py_EQ)
    #endif

/* decode_c_bytes.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* decode_bytes.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
         PyObject* string, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    return __Pyx_decode_c_bytes(
        PyBytes_AS_STRING(string), PyBytes_GET_SIZE(string),
        start, stop, encoding, errors, decode_func);
}

/* SetVTable.proto */
static int __Pyx_SetVtable(PyObject *dict, void *vtable);

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* PatchInspect.proto */
static PyObject* __Pyx_patch_inspect(PyObject* module);

/* PatchAsyncIO.proto */
static PyObject* __Pyx_patch_asyncio(PyObject* module);

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);

/* GetNameInClass.proto */
static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name);

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);

/* Generator.proto */
#define __Pyx_Generator_USED
static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
#define __Pyx_Generator_New(body, closure, name, qualname)\
    __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(void);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* PyIdentifierFromString.proto */
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif

/* ModuleImport.proto */
static PyObject *__Pyx_ImportModule(const char *name);

/* TypeImport.proto */
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_wake(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_sigint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_sighup(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__check_sigint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_idle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__stop(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_exc); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop___run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uv_run_mode __pyx_v_mode); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uv_run_mode __pyx_v_mode); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__close(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static uint64_t __pyx_f_6uvloop_4loop_4Loop__time(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon_handle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__call_later(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uint64_t __pyx_v_delay, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto*/
static void __pyx_f_6uvloop_4loop_4Loop__handle_exception(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_ex); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_signal(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_closed(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_thread(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__new_future(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__getaddrinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags, int __pyx_v_unpack); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__getnameinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_flags); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_recv(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock, PyObject *__pyx_v_n); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_sendall(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock, PyObject *__pyx_v_data); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_accept(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_connect(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, PyObject *__pyx_v_sock, PyObject *__pyx_v_address); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_connect_cb(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, PyObject *__pyx_v_sock, PyObject *__pyx_v_address); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_set_reuseport(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, int __pyx_v_fd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_4Loop__set_coroutine_wrapper(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, int __pyx_v_enabled); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__set_loop(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__run(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6Handle__cancel(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_11TimerHandle__cancel(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_11TimerHandle__run(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__free(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__abort_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__finish_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__start_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop); /* proto*/
static CYTHON_INLINE int __pyx_f_6uvloop_4loop_8UVHandle__is_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__ensure_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__fatal_error(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__error(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__close(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__fileno(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__new_socket(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__attach_fileobj(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self, PyObject *__pyx_v_file); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__close(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_7UVAsync__init(struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_7UVAsync_send(struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_f_6uvloop_4loop_7UVAsync_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVIdle__init(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_stop(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_start(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_f_6uvloop_4loop_6UVIdle_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_7UVTimer__init(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx, uint64_t __pyx_v_timeout); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_7UVTimer_stop(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_7UVTimer_start(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_f_6uvloop_4loop_7UVTimer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx, uint64_t __pyx_v_timeout); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVSignal__init(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h, int __pyx_v_signum); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVSignal_stop(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVSignal_start(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_f_6uvloop_4loop_8UVSignal_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h, int __pyx_v_signum); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__init(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, int __pyx_v_fd); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_f_6uvloop_4loop_6UVPoll_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, int __pyx_v_fd); /* proto*/
static int __pyx_f_6uvloop_4loop_6UVPoll_is_active(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_start(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, int __pyx_v_flags); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_stop(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_start_reading(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_callback); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_start_writing(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_callback); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop_reading(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop_writing(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__close(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__fatal_error(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc, CYTHON_UNUSED PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_6UVPoll__fatal_error *__pyx_optional_args); /* proto*/
static size_t __pyx_f_6uvloop_4loop_15UVBaseTransport__get_write_buffer_size(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_made(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__fatal_error(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__fatal_error *__pyx_optional_args); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits *__pyx_optional_args); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_pause_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_resume_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_lost(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_server(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_waiter(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_waiter); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_protocol); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__init_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__add_extra_info(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_obj); /* proto*/
static int __pyx_f_6uvloop_4loop_15UVBaseTransport__is_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__start_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__stop_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_19_StreamWriteContext_close(struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_f_6uvloop_4loop_19_StreamWriteContext_new(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_stream, PyObject *__pyx_v_data); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__shutdown(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__accept(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_server); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__close_on_read_error(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static int __pyx_f_6uvloop_4loop_8UVStream__is_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVStream__start_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_started(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_stopped(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVStream__stop_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__try_write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_data); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_data); /* proto*/
static size_t __pyx_f_6uvloop_4loop_8UVStream__get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8UVStream__close(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_accept(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_read(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_buf); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_eof(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__init(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_connect(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_exc); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__init(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, int __pyx_v_backlog); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__on_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__fatal_error(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_14UVStreamServer__fatal_error *__pyx_optional_args); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__mark_as_open(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_14UVStreamServer__make_new_transport(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_protocol, CYTHON_UNUSED PyObject *__pyx_v_waiter); /* proto*/
static struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_f_6uvloop_4loop_9TCPServer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl, unsigned int __pyx_v_flags); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9TCPServer__new_socket(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9TCPServer_open(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9TCPServer_bind(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, struct sockaddr *__pyx_v_addr, struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind *__pyx_optional_args); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_9TCPServer__make_new_transport(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_waiter); /* proto*/
static struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_f_6uvloop_4loop_12TCPTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport__new_socket(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_bind(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr, struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind *__pyx_optional_args); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_open(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_connect(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18_TCPConnectRequest_connect(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_self, struct sockaddr *__pyx_v_addr); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_f_6uvloop_4loop_10UnixServer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_10UnixServer__new_socket(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_10UnixServer_open(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_10UnixServer_bind(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, PyObject *__pyx_v_path); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_10UnixServer__make_new_transport(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_waiter); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_f_6uvloop_4loop_13UnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport_open(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport_connect(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self, char *__pyx_v_addr); /* proto*/
static struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_f_6uvloop_4loop_17ReadUnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_17ReadUnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_17ReadUnixTransport_open(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_f_6uvloop_4loop_18WriteUnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18WriteUnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18WriteUnixTransport_open(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_19_PipeConnectRequest_connect(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_self, char *__pyx_v_addr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v_debug_flags); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__close_after_spawn(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int __pyx_v_fd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__free(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self); /* proto*/
static char **__pyx_f_6uvloop_4loop_9UVProcess___to_cstring_array(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_arr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_options(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_args(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_args); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_env(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_env); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_files(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_stdin, CYTHON_UNUSED PyObject *__pyx_v_stdout, CYTHON_UNUSED PyObject *__pyx_v_stderr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__kill(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int __pyx_v_signum); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__on_exit(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int64_t __pyx_v_exit_status, int __pyx_v_term_signal); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__on_exit(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int64_t __pyx_v_exit_status, int __pyx_v_term_signal); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__check_proc(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_connection_lost(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd, PyObject *__pyx_v_exc); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_data_received(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd, PyObject *__pyx_v_data); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_redirect_stdio(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_devnull(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_outpipe(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_inpipe(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__init_files(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_waiter); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__try_finish(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_f_6uvloop_4loop_18UVProcessTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v_waiter, PyObject *__pyx_v_debug_flags); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVRequest_on_done(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_9UVRequest_cancel(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self); /* proto*/
static void __pyx_f_6uvloop_4loop_8AddrInfo_set_data(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self, struct addrinfo *__pyx_v_data); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_8AddrInfo_unpack(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self); /* proto*/
static int __pyx_f_6uvloop_4loop_8AddrInfo_isinstance(PyObject *__pyx_v_other); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15NameInfoRequest_query(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_flags); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_15_UDPSendContext_close(struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_v_self); /* proto*/
static struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_f_6uvloop_4loop_15_UDPSendContext_new(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_udp, PyObject *__pyx_v_data); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__init(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, unsigned int __pyx_v_family); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__set_remote_address(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct sockaddr __pyx_v_address); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__open(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, int __pyx_v_family, int __pyx_v_sockfd); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__bind(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_reuse_addr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__set_broadcast(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, int __pyx_v_on); /* proto*/
static size_t __pyx_f_6uvloop_4loop_12UDPTransport__get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static int __pyx_f_6uvloop_4loop_12UDPTransport__is_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__start_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__stop_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_started(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__new_socket(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__send(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_addr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__on_receive(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_exc, PyObject *__pyx_v_addr); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__on_sent(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_exc); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6Server__add_server(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_srv); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6Server__wakeup(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6Server__attach(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_6Server__detach(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12SignalsStack_save(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6uvloop_4loop_12SignalsStack_restore(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self); /* proto*/

/* Module declarations from 'uvloop.includes' */

/* Module declarations from 'libc.stdint' */

/* Module declarations from 'posix.types' */

/* Module declarations from 'uvloop.includes.system' */

/* Module declarations from 'uvloop.includes.uv' */

/* Module declarations from 'libc.signal' */

/* Module declarations from 'cython' */

/* Module declarations from 'uvloop.includes.python' */

/* Module declarations from 'libc.string' */

/* Module declarations from 'libc' */

/* Module declarations from 'libc.errno' */

/* Module declarations from 'cpython.version' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.type' */
static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;

/* Module declarations from 'libc.stdio' */

/* Module declarations from 'cpython.object' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'cpython.exc' */

/* Module declarations from 'cpython.module' */

/* Module declarations from 'cpython.mem' */

/* Module declarations from 'cpython.tuple' */

/* Module declarations from 'cpython.list' */

/* Module declarations from 'cpython.sequence' */

/* Module declarations from 'cpython.mapping' */

/* Module declarations from 'cpython.iterator' */

/* Module declarations from 'cpython.number' */

/* Module declarations from 'cpython.int' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.bool' */
static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;

/* Module declarations from 'cpython.long' */

/* Module declarations from 'cpython.float' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.complex' */
static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;

/* Module declarations from 'cpython.string' */

/* Module declarations from 'cpython.unicode' */

/* Module declarations from 'cpython.dict' */

/* Module declarations from 'cpython.instance' */

/* Module declarations from 'cpython.function' */

/* Module declarations from 'cpython.method' */

/* Module declarations from 'cpython.weakref' */

/* Module declarations from 'cpython.getargs' */

/* Module declarations from 'cpython.pythread' */

/* Module declarations from 'cpython.pystate' */

/* Module declarations from 'cpython.cobject' */

/* Module declarations from 'cpython.oldbuffer' */

/* Module declarations from 'cpython.set' */

/* Module declarations from 'cpython.buffer' */

/* Module declarations from 'cpython.bytes' */

/* Module declarations from 'cpython.pycapsule' */

/* Module declarations from 'cpython' */

/* Module declarations from 'posix.signal' */

/* Module declarations from 'uvloop.loop' */
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVHandle = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVAsync = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVTimer = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVSignal = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVIdle = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_Loop = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_Handle = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_TimerHandle = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVSocketHandle = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVPoll = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVBaseTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVStream = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVStreamServer = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_TCPServer = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_TCPTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UnixServer = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UnixTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_ReadUnixTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_WriteUnixTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVProcess = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVProcessTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UVRequest = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_UDPTransport = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_Server = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_SignalsStack = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop__StreamWriteContext = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop__TCPConnectRequest = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop__PipeConnectRequest = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_AddrInfo = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_AddrInfoRequest = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop_NameInfoRequest = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop__UDPSendContext = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct___getaddrinfo = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_1__getnameinfo = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_2__sock_connect = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_3_run_until_complete = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_4_getnameinfo = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_5_create_server = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_6_create_connection = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_7_genexpr = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_8_genexpr = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_9_create_unix_server = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_11___subprocess_run = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_15_genexpr = 0;
static PyTypeObject *__pyx_ptype_6uvloop_4loop___pyx_scope_struct_16_wait_closed = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_CancelledError = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_TimeoutError = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_Future = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_Task = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_ensure_future = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_gather = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_wait = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_logger = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_coroutine = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio__check_resolved_address = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_iscoroutine = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_iscoroutinefunction = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_wrap_future = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_BaseProtocol = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_Protocol = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_SSLProtocol = 0;
static PyObject *__pyx_v_6uvloop_4loop_aio_debug_wrapper = 0;
static PyObject *__pyx_v_6uvloop_4loop_col_deque = 0;
static PyObject *__pyx_v_6uvloop_4loop_col_Iterable = 0;
static PyObject *__pyx_v_6uvloop_4loop_col_Counter = 0;
static PyObject *__pyx_v_6uvloop_4loop_cc_ThreadPoolExecutor = 0;
static PyObject *__pyx_v_6uvloop_4loop_ft_partial = 0;
static PyObject *__pyx_v_6uvloop_4loop_iter_chain = 0;
static int __pyx_v_6uvloop_4loop_has_AF_INET6;
static int __pyx_v_6uvloop_4loop_has_SO_REUSEPORT;
static int __pyx_v_6uvloop_4loop_has_IPPROTO_IPV6;
static int __pyx_v_6uvloop_4loop_SO_REUSEPORT;
static PyObject *__pyx_v_6uvloop_4loop_socket_gaierror = 0;
static PyObject *__pyx_v_6uvloop_4loop_socket_error = 0;
static PyObject *__pyx_v_6uvloop_4loop_socket_timeout = 0;
static PyObject *__pyx_v_6uvloop_4loop_socket_socket = 0;
static int __pyx_v_6uvloop_4loop_socket_EAI_ADDRFAMILY;
static int __pyx_v_6uvloop_4loop_socket_EAI_AGAIN;
static int __pyx_v_6uvloop_4loop_socket_EAI_BADFLAGS;
static int __pyx_v_6uvloop_4loop_socket_EAI_BADHINTS;
static int __pyx_v_6uvloop_4loop_socket_EAI_CANCELED;
static int __pyx_v_6uvloop_4loop_socket_EAI_FAIL;
static int __pyx_v_6uvloop_4loop_socket_EAI_FAMILY;
static int __pyx_v_6uvloop_4loop_socket_EAI_MEMORY;
static int __pyx_v_6uvloop_4loop_socket_EAI_NODATA;
static int __pyx_v_6uvloop_4loop_socket_EAI_NONAME;
static int __pyx_v_6uvloop_4loop_socket_EAI_OVERFLOW;
static int __pyx_v_6uvloop_4loop_socket_EAI_PROTOCOL;
static int __pyx_v_6uvloop_4loop_socket_EAI_SERVICE;
static int __pyx_v_6uvloop_4loop_socket_EAI_SOCKTYPE;
static PyObject *__pyx_v_6uvloop_4loop_os_name = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_environ = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_dup = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_set_inheritable = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_get_inheritable = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_close = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_open = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_devnull = 0;
static PyObject *__pyx_v_6uvloop_4loop_os_O_RDWR = 0;
static PyObject *__pyx_v_6uvloop_4loop_sys_ignore_environment = 0;
static PyObject *__pyx_v_6uvloop_4loop_sys_exc_info = 0;
static PyObject *__pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper = 0;
static PyObject *__pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper = 0;
static PyObject *__pyx_v_6uvloop_4loop_ssl_SSLContext = 0;
static long __pyx_v_6uvloop_4loop_MAIN_THREAD_ID;
static int __pyx_v_6uvloop_4loop_subprocess_PIPE;
static int __pyx_v_6uvloop_4loop_subprocess_STDOUT;
static int __pyx_v_6uvloop_4loop_subprocess_DEVNULL;
static int __pyx_v_6uvloop_4loop_signal_NSIG;
static PyObject *__pyx_v_6uvloop_4loop_time_sleep = 0;
static PyObject *__pyx_v_6uvloop_4loop_warnings_warn = 0;
static struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_6uvloop_4loop___main_loop__ = 0;
static PyObject *__pyx_v_6uvloop_4loop___NOHANDLE__ = 0;
static volatile int __pyx_v_6uvloop_4loop___mem_installed;
static PyObject *__pyx_f_6uvloop_4loop___strerr(int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___convert_python_error(int); /*proto*/
static int __pyx_f_6uvloop_4loop___convert_socket_error(int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_convert_error(int); /*proto*/
static void __pyx_f_6uvloop_4loop___loop_alloc_buffer(uv_handle_t *, size_t, uv_buf_t *); /*proto*/
static CYTHON_INLINE void __pyx_f_6uvloop_4loop___loop_free_buffer(struct __pyx_obj_6uvloop_4loop_Loop *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_new_Handle(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, __pyx_t_6uvloop_4loop_method_t *, PyObject *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle1(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, __pyx_t_6uvloop_4loop_method1_t *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle3(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, __pyx_t_6uvloop_4loop_method3_t *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle4(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, __pyx_t_6uvloop_4loop_method4_t *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6uvloop_4loop___ensure_handle_data(uv_handle_t *, char const *); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_close_handle_cb(uv_handle_t *); /*proto*/
static void __pyx_f_6uvloop_4loop___close_all_handles(struct __pyx_obj_6uvloop_4loop_Loop *); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_walk_close_all_handles_cb(uv_handle_t *, void *); /*proto*/
static void __pyx_f_6uvloop_4loop___uvasync_callback(uv_async_t *); /*proto*/
static void __pyx_f_6uvloop_4loop_cb_idle_callback(uv_idle_t *); /*proto*/
static void __pyx_f_6uvloop_4loop___uvtimer_callback(uv_timer_t *); /*proto*/
static void __pyx_f_6uvloop_4loop___uvsignal_callback(uv_signal_t *, int); /*proto*/
static void __pyx_f_6uvloop_4loop___on_uvpoll_event(uv_poll_t *, int, int); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_stream_on_shutdown(uv_shutdown_t *, int); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_stream_on_read(uv_stream_t *, Py_ssize_t, uv_buf_t const *); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_stream_on_write(uv_write_t *, int); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_streamserver_on_listen(uv_stream_t *, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___tcp_init_uv_handle(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_Loop *, unsigned int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___tcp_bind(struct __pyx_obj_6uvloop_4loop_UVStream *, struct sockaddr *, unsigned int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___tcp_open(struct __pyx_obj_6uvloop_4loop_UVStream *, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___tcp_get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *); /*proto*/
static void __pyx_f_6uvloop_4loop___tcp_connect_callback(uv_connect_t *, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___pipe_init_uv_handle(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_Loop *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___pipe_open(struct __pyx_obj_6uvloop_4loop_UVStream *, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___pipe_get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *); /*proto*/
static void __pyx_f_6uvloop_4loop___pipe_connect_callback(uv_connect_t *, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___process_convert_fileno(PyObject *); /*proto*/
static void __pyx_f_6uvloop_4loop___uvprocess_on_exit_callback(uv_process_t *, int64_t, int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___socketpair(void); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(struct sockaddr *); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___convert_pyaddr_to_sockaddr(int, PyObject *, struct sockaddr *); /*proto*/
static void __pyx_f_6uvloop_4loop___on_addrinfo_resolved(uv_getaddrinfo_t *, int, struct addrinfo *); /*proto*/
static void __pyx_f_6uvloop_4loop___on_nameinfo_resolved(uv_getnameinfo_t *, int, char const *, char const *); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_udp_on_receive(uv_udp_t *, Py_ssize_t, uv_buf_t const *, struct sockaddr const *, unsigned int); /*proto*/
static void __pyx_f_6uvloop_4loop___uv_udp_on_send(uv_udp_send_t *, int); /*proto*/
static void __pyx_f_6uvloop_4loop___signal_handler_sigint(int); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___signal_set_sigint(void); /*proto*/
static PyObject *__pyx_f_6uvloop_4loop___install_pymem(void); /*proto*/
#define __Pyx_MODULE_NAME "uvloop.loop"
int __pyx_module_is_main_uvloop__loop = 0;

/* Implementation of 'uvloop.loop' */
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_OSError;
static PyObject *__pyx_builtin_PermissionError;
static PyObject *__pyx_builtin_BlockingIOError;
static PyObject *__pyx_builtin_BrokenPipeError;
static PyObject *__pyx_builtin_ConnectionAbortedError;
static PyObject *__pyx_builtin_ConnectionRefusedError;
static PyObject *__pyx_builtin_ConnectionResetError;
static PyObject *__pyx_builtin_FileExistsError;
static PyObject *__pyx_builtin_FileNotFoundError;
static PyObject *__pyx_builtin_InterruptedError;
static PyObject *__pyx_builtin_IsADirectoryError;
static PyObject *__pyx_builtin_ProcessLookupError;
static PyObject *__pyx_builtin_TimeoutError;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_KeyboardInterrupt;
static PyObject *__pyx_builtin_SystemExit;
static PyObject *__pyx_builtin_BaseException;
static PyObject *__pyx_builtin_Exception;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_RuntimeWarning;
static PyObject *__pyx_builtin_OverflowError;
static PyObject *__pyx_builtin_id;
static PyObject *__pyx_builtin_ResourceWarning;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_print;
static const char __pyx_k_c[] = "-c";
static const char __pyx_k_n[] = "n";
static const char __pyx_k_ex[] = "ex";
static const char __pyx_k_fd[] = "fd";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_os[] = "os";
static const char __pyx_k__34[] = "";
static const char __pyx_k__42[] = ", ";
static const char __pyx_k__53[] = "{}: {}";
static const char __pyx_k__54[] = "\n";
static const char __pyx_k__76[] = "{}={}";
static const char __pyx_k__85[] = "{} ({})";
static const char __pyx_k_cmd[] = "cmd";
static const char __pyx_k_cwd[] = "cwd";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_dup[] = "dup";
static const char __pyx_k_env[] = "env";
static const char __pyx_k_exc[] = "exc";
static const char __pyx_k_fut[] = "fut";
static const char __pyx_k_get[] = "get";
static const char __pyx_k_log[] = "log";
static const char __pyx_k_low[] = "low";
static const char __pyx_k_pop[] = "pop";
static const char __pyx_k_sig[] = "sig";
static const char __pyx_k_ssl[] = "ssl";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_NSIG[] = "NSIG";
static const char __pyx_k_PIPE[] = "PIPE";
static const char __pyx_k_Task[] = "Task";
static const char __pyx_k__104[] = "=";
static const char __pyx_k_addr[] = "addr";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_bind[] = "bind";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_done[] = "done";
static const char __pyx_k_func[] = "func";
static const char __pyx_k_high[] = "high";
static const char __pyx_k_host[] = "host";
static const char __pyx_k_idna[] = "idna";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_join[] = "join";
static const char __pyx_k_loop[] = "loop";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_open[] = "open";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_pipe[] = "pipe";
static const char __pyx_k_port[] = "port";
static const char __pyx_k_proc[] = "proc";
static const char __pyx_k_recv[] = "recv";
static const char __pyx_k_repr[] = "__repr__";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_sock[] = "sock";
static const char __pyx_k_stop[] = "stop";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_time[] = "time";
static const char __pyx_k_type[] = "type";
static const char __pyx_k_wait[] = "wait";
static const char __pyx_k_warn[] = "warn";
static const char __pyx_k_when[] = "when";
static const char __pyx_k_await[] = "__await__";
static const char __pyx_k_chain[] = "chain";
static const char __pyx_k_class[] = "__class__";
static const char __pyx_k_clear[] = "clear";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_delay[] = "delay";
static const char __pyx_k_deque[] = "deque";
static const char __pyx_k_errno[] = "errno";
static const char __pyx_k_error[] = "error";
static const char __pyx_k_flags[] = "flags";
static const char __pyx_k_ident[] = "ident";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_print[] = "print";
static const char __pyx_k_proto[] = "proto";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_shell[] = "shell";
static const char __pyx_k_sleep[] = "sleep";
static const char __pyx_k_stdin[] = "stdin";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_Future[] = "Future";
static const char __pyx_k_O_RDWR[] = "O_RDWR";
static const char __pyx_k_STDOUT[] = "STDOUT";
static const char __pyx_k_accept[] = "accept";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_bin_sh[] = "/bin/sh";
static const char __pyx_k_cancel[] = "cancel";
static const char __pyx_k_decode[] = "decode";
static const char __pyx_k_detach[] = "detach";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_family[] = "family";
static const char __pyx_k_fileno[] = "fileno";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_gather[] = "gather";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_logger[] = "logger";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_name_2[] = "name";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_remove[] = "remove";
static const char __pyx_k_result[] = "result";
static const char __pyx_k_signal[] = "signal";
static const char __pyx_k_socket[] = "socket";
static const char __pyx_k_stderr[] = "stderr";
static const char __pyx_k_stdout[] = "stdout";
static const char __pyx_k_submit[] = "submit";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_waiter[] = "waiter";
static const char __pyx_k_0_0_0_0[] = "0.0.0.0";
static const char __pyx_k_Counter[] = "Counter";
static const char __pyx_k_DEVNULL[] = "DEVNULL";
static const char __pyx_k_OSError[] = "OSError";
static const char __pyx_k_address[] = "address";
static const char __pyx_k_asyncio[] = "asyncio";
static const char __pyx_k_backlog[] = "backlog";
static const char __pyx_k_bufsize[] = "bufsize";
static const char __pyx_k_connect[] = "connect";
static const char __pyx_k_context[] = "context";
static const char __pyx_k_default[] = "default";
static const char __pyx_k_devnull[] = "devnull";
static const char __pyx_k_environ[] = "environ";
static const char __pyx_k_futures[] = "futures";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_inspect[] = "inspect";
static const char __pyx_k_message[] = "message";
static const char __pyx_k_partial[] = "partial";
static const char __pyx_k_popleft[] = "popleft";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_program[] = "program";
static const char __pyx_k_sockets[] = "sockets";
static const char __pyx_k_timeout[] = "timeout";
static const char __pyx_k_AF_INET6[] = "AF_INET6";
static const char __pyx_k_EAI_FAIL[] = "EAI_FAIL";
static const char __pyx_k_Iterable[] = "Iterable";
static const char __pyx_k_KeyError[] = "KeyError";
static const char __pyx_k_Protocol[] = "Protocol";
static const char __pyx_k_callback[] = "callback";
static const char __pyx_k_closed_x[] = "<{} closed={} {:#x}>";
static const char __pyx_k_exc_info[] = "exc_info";
static const char __pyx_k_executor[] = "executor";
static const char __pyx_k_gaierror[] = "gaierror";
static const char __pyx_k_pass_fds[] = "pass_fds";
static const char __pyx_k_peername[] = "peername";
static const char __pyx_k_protocol[] = "protocol";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_shutdown[] = "shutdown";
static const char __pyx_k_sockaddr[] = "sockaddr";
static const char __pyx_k_sockname[] = "sockname";
static const char __pyx_k_sslproto[] = "sslproto";
static const char __pyx_k_strerror[] = "strerror";
static const char __pyx_k_warnings[] = "warnings";
static const char __pyx_k_EAI_AGAIN[] = "EAI_AGAIN";
static const char __pyx_k_Exception[] = "Exception";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_call_soon[] = "call_soon";
static const char __pyx_k_cancelled[] = "cancelled";
static const char __pyx_k_close_fds[] = "close_fds";
static const char __pyx_k_coroutine[] = "coroutine";
static const char __pyx_k_exception[] = "exception";
static const char __pyx_k_functools[] = "functools";
static const char __pyx_k_get_debug[] = "get_debug";
static const char __pyx_k_is_closed[] = "is_closed";
static const char __pyx_k_itertools[] = "itertools";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_set_debug[] = "set_debug";
static const char __pyx_k_stdio_fut[] = "stdio_fut";
static const char __pyx_k_threading[] = "threading";
static const char __pyx_k_traceback[] = "__traceback__";
static const char __pyx_k_transport[] = "transport";
static const char __pyx_k_EAI_FAMILY[] = "EAI_FAMILY";
static const char __pyx_k_EAI_MEMORY[] = "EAI_MEMORY";
static const char __pyx_k_EAI_NODATA[] = "EAI_NODATA";
static const char __pyx_k_EAI_NONAME[] = "EAI_NONAME";
static const char __pyx_k_Handle_r_x[] = "<Handle {!r} {:#x}>";
static const char __pyx_k_Loop__stop[] = "Loop._stop";
static const char __pyx_k_Not_paused[] = "Not paused";
static const char __pyx_k_SSLContext[] = "SSLContext";
static const char __pyx_k_SystemExit[] = "SystemExit";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_call_later[] = "call_later";
static const char __pyx_k_concurrent[] = "concurrent";
static const char __pyx_k_coroutines[] = "coroutines";
static const char __pyx_k_executable[] = "executable";
static const char __pyx_k_getsockopt[] = "getsockopt";
static const char __pyx_k_gettimeout[] = "gettimeout";
static const char __pyx_k_is_running[] = "is_running";
static const char __pyx_k_local_addr[] = "local_addr";
static const char __pyx_k_preexec_fn[] = "preexec_fn";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_reuse_port[] = "reuse_port";
static const char __pyx_k_set_result[] = "set_result";
static const char __pyx_k_std_signal[] = "std_signal";
static const char __pyx_k_subprocess[] = "subprocess";
static const char __pyx_k_EAI_SERVICE[] = "EAI_SERVICE";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_SSLProtocol[] = "SSLProtocol";
static const char __pyx_k_asyncio_log[] = "asyncio.log";
static const char __pyx_k_base_events[] = "base_events";
static const char __pyx_k_collections[] = "collections";
static const char __pyx_k_force_close[] = "_force_close";
static const char __pyx_k_getnameinfo[] = "getnameinfo";
static const char __pyx_k_getpeername[] = "getpeername";
static const char __pyx_k_getsockname[] = "getsockname";
static const char __pyx_k_iscoroutine[] = "iscoroutine";
static const char __pyx_k_main_thread[] = "main_thread";
static const char __pyx_k_remote_addr[] = "remote_addr";
static const char __pyx_k_run_forever[] = "run_forever";
static const char __pyx_k_s_sockets_r[] = "<%s sockets=%r>";
static const char __pyx_k_setblocking[] = "setblocking";
static const char __pyx_k_startupinfo[] = "startupinfo";
static const char __pyx_k_uvloop_loop[] = "uvloop.loop";
static const char __pyx_k_wait_closed[] = "wait_closed";
static const char __pyx_k_wrap_future[] = "wrap_future";
static const char __pyx_k_BaseProtocol[] = "BaseProtocol";
static const char __pyx_k_EAI_BADFLAGS[] = "EAI_BADFLAGS";
static const char __pyx_k_EAI_BADHINTS[] = "EAI_BADHINTS";
static const char __pyx_k_EAI_CANCELED[] = "EAI_CANCELED";
static const char __pyx_k_EAI_OVERFLOW[] = "EAI_OVERFLOW";
static const char __pyx_k_EAI_PROTOCOL[] = "EAI_PROTOCOL";
static const char __pyx_k_EAI_SOCKTYPE[] = "EAI_SOCKTYPE";
static const char __pyx_k_IPPROTO_IPV6[] = "IPPROTO_IPV6";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_SO_REUSEPORT[] = "SO_REUSEPORT";
static const char __pyx_k_TimeoutError[] = "TimeoutError";
static const char __pyx_k_disconnected[] = "disconnected";
static const char __pyx_k_eof_received[] = "eof_received";
static const char __pyx_k_stdio_inited[] = "__stdio_inited";
static const char __pyx_k_BaseException[] = "BaseException";
static const char __pyx_k_OverflowError[] = "OverflowError";
static const char __pyx_k_app_transport[] = "_app_transport";
static const char __pyx_k_asyncio_tasks[] = "asyncio.tasks";
static const char __pyx_k_create_server[] = "create_server";
static const char __pyx_k_creationflags[] = "creationflags";
static const char __pyx_k_data_received[] = "data_received";
static const char __pyx_k_debug_wrapper[] = "debug_wrapper";
static const char __pyx_k_ensure_future[] = "ensure_future";
static const char __pyx_k_loop__on_idle[] = "loop._on_idle";
static const char __pyx_k_pause_writing[] = "pause_writing";
static const char __pyx_k_proto_factory[] = "proto_factory";
static const char __pyx_k_reuse_address[] = "reuse_address";
static const char __pyx_k_s_fd_s_pipe_r[] = "<%s fd=%s pipe=%r>";
static const char __pyx_k_set_exception[] = "set_exception";
static const char __pyx_k_Already_paused[] = "Already paused";
static const char __pyx_k_AttributeError[] = "AttributeError";
static const char __pyx_k_CancelledError[] = "CancelledError";
static const char __pyx_k_EAI_ADDRFAMILY[] = "EAI_ADDRFAMILY";
static const char __pyx_k_RuntimeWarning[] = "RuntimeWarning";
static const char __pyx_k_connect_failed[] = "connect failed";
static const char __pyx_k_error_received[] = "error_received";
static const char __pyx_k_get_extra_info[] = "get_extra_info";
static const char __pyx_k_process_exited[] = "process_exited";
static const char __pyx_k_resume_writing[] = "resume_writing";
static const char __pyx_k_subprocess_run[] = "__subprocess_run";
static const char __pyx_k_BlockingIOError[] = "BlockingIOError";
static const char __pyx_k_BrokenPipeError[] = "BrokenPipeError";
static const char __pyx_k_FileExistsError[] = "FileExistsError";
static const char __pyx_k_Loop__sock_recv[] = "Loop._sock_recv";
static const char __pyx_k_PermissionError[] = "PermissionError";
static const char __pyx_k_ResourceWarning[] = "ResourceWarning";
static const char __pyx_k_TimerHandle_r_x[] = "<TimerHandle {!r} {:#x}>";
static const char __pyx_k_allow_broadcast[] = "allow_broadcast";
static const char __pyx_k_connection_lost[] = "connection_lost";
static const char __pyx_k_connection_made[] = "connection_made";
static const char __pyx_k_get_inheritable[] = "get_inheritable";
static const char __pyx_k_loop__on_sighup[] = "loop._on_sighup";
static const char __pyx_k_loop__on_sigint[] = "loop._on_sigint";
static const char __pyx_k_restore_signals[] = "restore_signals";
static const char __pyx_k_server_hostname[] = "server_hostname";
static const char __pyx_k_set_inheritable[] = "set_inheritable";
static const char __pyx_k_InterruptedError[] = "InterruptedError";
static const char __pyx_k_Loop_getnameinfo[] = "Loop.getnameinfo";
static const char __pyx_k_asyncio_sslproto[] = "asyncio.sslproto";
static const char __pyx_k_closed_reading_x[] = "<{} closed={} reading={} {:#x}>";
static const char __pyx_k_on_ssl_connected[] = "__on_ssl_connected";
static const char __pyx_k_protocol_factory[] = "protocol_factory";
static const char __pyx_k_FileNotFoundError[] = "FileNotFoundError";
static const char __pyx_k_IsADirectoryError[] = "IsADirectoryError";
static const char __pyx_k_KeyboardInterrupt[] = "KeyboardInterrupt";
static const char __pyx_k_Loop__sock_accept[] = "Loop._sock_accept";
static const char __pyx_k_add_done_callback[] = "add_done_callback";
static const char __pyx_k_bufsize_must_be_0[] = "bufsize must be 0";
static const char __pyx_k_connect_read_pipe[] = "connect_read_pipe";
static const char __pyx_k_create_connection[] = "create_connection";
static const char __pyx_k_datagram_received[] = "datagram_received";
static const char __pyx_k_start_new_session[] = "start_new_session";
static const char __pyx_k_Handle_cancelled_x[] = "<Handle cancelled {:#x}>";
static const char __pyx_k_Loop__sock_connect[] = "Loop._sock_connect";
static const char __pyx_k_Loop__sock_sendall[] = "Loop._sock_sendall";
static const char __pyx_k_Loop_create_server[] = "Loop.create_server";
static const char __pyx_k_PYTHONASYNCIODEBUG[] = "PYTHONASYNCIODEBUG";
static const char __pyx_k_ProcessLookupError[] = "ProcessLookupError";
static const char __pyx_k_Server_wait_closed[] = "Server.wait_closed";
static const char __pyx_k_ThreadPoolExecutor[] = "ThreadPoolExecutor";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_concurrent_futures[] = "concurrent.futures";
static const char __pyx_k_connect_write_pipe[] = "connect_write_pipe";
static const char __pyx_k_create_unix_server[] = "create_unix_server";
static const char __pyx_k_ignore_environment[] = "ignore_environment";
static const char __pyx_k_pipe_data_received[] = "pipe_data_received";
static const char __pyx_k_shell_must_be_True[] = "shell must be True";
static const char __pyx_k_sig_out_of_range_1[] = "sig {} out of range(1, {})";
static const char __pyx_k_universal_newlines[] = "universal_newlines";
static const char __pyx_k_unopened_TCPServer[] = "unopened TCPServer";
static const char __pyx_k_CALL_PROCESS_EXITED[] = "_CALL_PROCESS_EXITED";
static const char __pyx_k_Multiple_exceptions[] = "Multiple exceptions: {}";
static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
static const char __pyx_k_asyncio_base_events[] = "asyncio.base_events";
static const char __pyx_k_iscoroutinefunction[] = "iscoroutinefunction";
static const char __pyx_k_log_destroy_pending[] = "_log_destroy_pending";
static const char __pyx_k_shell_must_be_False[] = "shell must be False";
static const char __pyx_k_unclosed_resource_r[] = "unclosed resource {!r}";
static const char __pyx_k_CALL_CONNECTION_LOST[] = "_CALL_CONNECTION_LOST";
static const char __pyx_k_ConnectionResetError[] = "ConnectionResetError";
static const char __pyx_k_Event_loop_is_closed[] = "Event loop is closed";
static const char __pyx_k_pipe_connection_lost[] = "pipe_connection_lost";
static const char __pyx_k_protocol_is_required[] = "protocol is required";
static const char __pyx_k_remove_done_callback[] = "remove_done_callback";
static const char __pyx_k_running_closed_debug[] = "<{}.{} running={} closed={} debug={}>";
static const char __pyx_k_sig_cannot_be_caught[] = "sig {} cannot be caught";
static const char __pyx_k_AddrInfo_data_is_NULL[] = "AddrInfo.data is NULL";
static const char __pyx_k_Connect_call_failed_s[] = "Connect call failed %s";
static const char __pyx_k_Event_loop_is_running[] = "Event loop is running.";
static const char __pyx_k_Exception_in_callback[] = "Exception in callback {}";
static const char __pyx_k_Fatal_error_on_server[] = "Fatal error on server {}";
static const char __pyx_k_Loop___subprocess_run[] = "Loop.__subprocess_run";
static const char __pyx_k_get_coroutine_wrapper[] = "get_coroutine_wrapper";
static const char __pyx_k_set_coroutine_wrapper[] = "set_coroutine_wrapper";
static const char __pyx_k_ConnectionAbortedError[] = "ConnectionAbortedError";
static const char __pyx_k_ConnectionRefusedError[] = "ConnectionRefusedError";
static const char __pyx_k_Loop_connect_read_pipe[] = "Loop.connect_read_pipe";
static const char __pyx_k_Loop_create_connection[] = "Loop.create_connection";
static const char __pyx_k_call_exception_handler[] = "call_exception_handler";
static const char __pyx_k_check_resolved_address[] = "_check_resolved_address";
static const char __pyx_k_concurrent_allocations[] = "concurrent allocations";
static const char __pyx_k_create_unix_connection[] = "create_unix_connection";
static const char __pyx_k_invalid_Handle_cb_type[] = "invalid Handle.cb_type: {}";
static const char __pyx_k_CALL_PIPE_DATA_RECEIVED[] = "_CALL_PIPE_DATA_RECEIVED";
static const char __pyx_k_Loop_connect_write_pipe[] = "Loop.connect_write_pipe";
static const char __pyx_k_Loop_create_unix_server[] = "Loop.create_unix_server";
static const char __pyx_k_ReadSubprocessPipeProto[] = "ReadSubprocessPipeProto";
static const char __pyx_k_TimerHandle_cancelled_x[] = "<TimerHandle cancelled {:#x}>";
static const char __pyx_k_uvloop_sleep_after_fork[] = "__uvloop_sleep_after_fork";
static const char __pyx_k_AF_UNSPEC_in_DNS_results[] = "AF_UNSPEC in DNS results";
static const char __pyx_k_Fatal_error_on_transport[] = "Fatal error on transport {}";
static const char __pyx_k_WriteSubprocessPipeProto[] = "WriteSubprocessPipeProto";
static const char __pyx_k_create_datagram_endpoint[] = "create_datagram_endpoint";
static const char __pyx_k_sig_must_be_an_int_not_r[] = "sig must be an int, not {!r}";
static const char __pyx_k_CALL_PIPE_CONNECTION_LOST[] = "_CALL_PIPE_CONNECTION_LOST";
static const char __pyx_k_default_exception_handler[] = "default_exception_handler";
static const char __pyx_k_unexpected_address_family[] = "unexpected address family";
static const char __pyx_k_UVTransport__start_reading[] = "UVTransport._start_reading";
static const char __pyx_k_Loop_create_unix_connection[] = "Loop.create_unix_connection";
static const char __pyx_k_host_must_be_a_str_or_bytes[] = "host must be a str or bytes";
static const char __pyx_k_invalid__init_protocol_call[] = "invalid _init_protocol call";
static const char __pyx_k_preexec_fn_is_not_supported[] = "preexec_fn is not supported";
static const char __pyx_k_called_with_handle_data_NULL[] = "{} called with handle.data == NULL";
static const char __pyx_k_could_not_bind_to_local_addr[] = "could not bind to local_addr {}";
static const char __pyx_k_startupinfo_is_not_supported[] = "startupinfo is not supported";
static const char __pyx_k_AF_INET_address_must_be_tuple[] = "AF_INET address must be tuple";
static const char __pyx_k_IPv4_sockaddr_must_be_2_tuple[] = "IPv4 sockaddr must be 2 tuple";
static const char __pyx_k_Loop_create_datagram_endpoint[] = "Loop.create_datagram_endpoint";
static const char __pyx_k_all_args_must_be_str_or_bytes[] = "all args must be str or bytes";
static const char __pyx_k_could_not_bind_to_remote_addr[] = "could not bind to remote_addr {}";
static const char __pyx_k_dealloc____handle_is_NULL__cl[] = "{}.__dealloc__: _handle is NULL, _closed == 1";
static const char __pyx_k_protocol_pause_writing_failed[] = "protocol.pause_writing() failed";
static const char __pyx_k_r_fileno_returned_non_integer[] = "{!r}.fileno() returned non-integer";
static const char __pyx_k_AF_INET6_address_must_be_tuple[] = "AF_INET6 address must be tuple";
static const char __pyx_k_cannot_apply_subprocess_STDOUT[] = "cannot apply subprocess.STDOUT";
static const char __pyx_k_creationflags_is_not_supported[] = "creationflags is not supported";
static const char __pyx_k_high_r_must_be_low_r_must_be_0[] = "high (%r) must be >= low (%r) must be >= 0";
static const char __pyx_k_invalid_stdin_argument_value_r[] = "invalid stdin argument value {!r}";
static const char __pyx_k_protocol_resume_writing_failed[] = "protocol.resume_writing() failed";
static const char __pyx_k_AF_INET6_must_be_a_tuple_of_2_4[] = "AF_INET6 must be a tuple of 2-4 parameters: (host, port, flowinfo?, scope_id?)";
static const char __pyx_k_AddrInfoRequest_callback_called[] = "AddrInfoRequest callback called with NULL resolver.data";
static const char __pyx_k_Invalid_address_must_be_None_or[] = "Invalid address: must be None or %s";
static const char __pyx_k_Neither_host_port_nor_sock_were[] = "Neither host/port nor sock were specified";
static const char __pyx_k_SignalsStack_save_wasn_t_called[] = "SignalsStack.save() wasn't called";
static const char __pyx_k_Users_yury_dev_magic_uvloop_uvl[] = "/Users/yury/dev/magic/uvloop/uvloop/loop.pyx";
static const char __pyx_k_WriteSubprocessPipeProto___init[] = "WriteSubprocessPipeProto.__init__";
static const char __pyx_k_WriteSubprocessPipeProto___repr[] = "WriteSubprocessPipeProto.__repr__";
static const char __pyx_k_WriteSubprocessPipeProto_resume[] = "WriteSubprocessPipeProto.resume_writing";
static const char __pyx_k_called_after_destroying_the_UVH[] = "{} called after destroying the UVHandle";
static const char __pyx_k_cannot_spawn_a_process_args_are[] = "cannot spawn a process: args are empty";
static const char __pyx_k_create_datagram_endpoint_locals[] = "create_datagram_endpoint.<locals>.genexpr";
static const char __pyx_k_deallocating_an_open_event_loop[] = "deallocating an open event loop";
static const char __pyx_k_getaddrinfo_returned_empty_list[] = "getaddrinfo() returned empty list";
static const char __pyx_k_getsockaddrarg_flowinfo_must_be[] = "getsockaddrarg: flowinfo must be 0-1048575.";
static const char __pyx_k_getsockaddrarg_scope_id_must_be[] = "getsockaddrarg: scope_id must be unsigned 32 bit integer";
static const char __pyx_k_handle_data_is___NOHANDLE___yet[] = "handle.data is __NOHANDLE__ yet it's not closing";
static const char __pyx_k_host_and_port_was_not_specified[] = "host and port was not specified and no sock specified";
static const char __pyx_k_invalid_stderr_argument_value_r[] = "invalid stderr argument value {!r}";
static const char __pyx_k_invalid_stdout_argument_value_r[] = "invalid stdout argument value {!r}";
static const char __pyx_k_is_not_supposed_to_be_instantia[] = "{} is not supposed to be instantiated from Python";
static const char __pyx_k_is_open_in___dealloc___with_loo[] = "{} is open in __dealloc__ with loop set to NULL";
static const char __pyx_k_no_path_and_sock_were_specified[] = "no path and sock were specified";
static const char __pyx_k_port_must_be_a_str_bytes_or_int[] = "port must be a str, bytes or int";
static const char __pyx_k_protocol_is_not_set_cannot_call[] = "protocol is not set, cannot call connection_made()";
static const char __pyx_k_sockaddr_must_be_a_tuple_of_2_3[] = "sockaddr must be a tuple of 2, 3 or 4 values";
static const char __pyx_k_task_factory_must_be_a_callable[] = "task factory must be a callable or None";
static const char __pyx_k_the_socket_must_be_non_blocking[] = "the socket must be non-blocking";
static const char __pyx_k_unable_to_start_the_loop_it_was[] = "unable to start the loop; it was closed";
static const char __pyx_k_uv_udp_receive_callback_addr_is[] = "uv_udp.receive callback: addr is NULL and nread >= 0";
static const char __pyx_k_AF_INET_address_must_be_tuple_of[] = "AF_INET address must be tuple of (host, port)";
static const char __pyx_k_A_UNIX_Domain_Socket_was_expecte[] = "A UNIX Domain Socket was expected, got {!r}";
static const char __pyx_k_A_callable_object_or_None_is_exp[] = "A callable object or None is expected, got {!r}";
static const char __pyx_k_Cannot_call_write_after_write_eo[] = "Cannot call write() after write_eof()";
static const char __pyx_k_Cannot_close_a_running_event_loo[] = "Cannot close a running event loop";
static const char __pyx_k_Cannot_pause_reading_when_closin[] = "Cannot pause_reading() when closing";
static const char __pyx_k_Event_loop_stopped_before_Future[] = "Event loop stopped before Future completed.";
static const char __pyx_k_Exception_in_default_exception_h[] = "Exception in default exception handler";
static const char __pyx_k_Fatal_write_error_on_datagram_tr[] = "Fatal write error on datagram transport";
static const char __pyx_k_Loop__getaddrinfo_locals_callbac[] = "Loop._getaddrinfo.<locals>.callback";
static const char __pyx_k_Loop__getnameinfo_locals_callbac[] = "Loop._getnameinfo.<locals>.callback";
static const char __pyx_k_Loop__sock_connect_locals_lambda[] = "Loop._sock_connect.<locals>.<lambda>";
static const char __pyx_k_Non_thread_safe_operation_invoke[] = "Non-thread-safe operation invoked on an event loop other than the current one";
static const char __pyx_k_ReadSubprocessPipeProto_data_rec[] = "ReadSubprocessPipeProto.data_received";
static const char __pyx_k_UDPTransport_family_is_undefined[] = "UDPTransport.family is undefined; cannot create python socket";
static const char __pyx_k_UVProcessTransport__call_connect[] = "UVProcessTransport._call_connection_made";
static const char __pyx_k_UVProcess__close_after_spawn_cal[] = "UVProcess._close_after_spawn called after uv_spawn";
static const char __pyx_k_UVStream_shutdown_callback_calle[] = "UVStream.shutdown callback called with NULL req.data, status=%r";
static const char __pyx_k_UVStream_write_callback_called_w[] = "UVStream.write callback called with NULL req.data, status=%r";
static const char __pyx_k_UVTransport__call_connection_los[] = "UVTransport._call_connection_lost";
static const char __pyx_k_UVTransport__call_connection_mad[] = "UVTransport._call_connection_made";
static const char __pyx_k_Unable_to_deallocate_request_for[] = "Unable to deallocate request for {!r} (not done)";
static const char __pyx_k_Unhandled_error_in_exception_han[] = "Unhandled error in exception handler";
static const char __pyx_k_Unhandled_exception_in_event_loo[] = "Unhandled exception in event loop";
static const char __pyx_k_WriteSubprocessPipeProto_connect[] = "WriteSubprocessPipeProto.connection_made";
static const char __pyx_k_WriteSubprocessPipeProto_pause_w[] = "WriteSubprocessPipeProto.pause_writing";
static const char __pyx_k_You_must_set_server_hostname_whe[] = "You must set server_hostname when using ssl without a host";
static const char __pyx_k_all_environment_values_must_be_b[] = "all environment values must be bytes or str";
static const char __pyx_k_all_environment_vars_must_be_byt[] = "all environment vars must be bytes or str";
static const char __pyx_k_cannot_convert_sockaddr_into_Pyt[] = "cannot convert sockaddr into Python object";
static const char __pyx_k_cannot_open_a_UDP_handle_invalid[] = "cannot open a UDP handle, invalid family {}";
static const char __pyx_k_coroutines_cannot_be_used_with_a[] = "coroutines cannot be used with add_signal_handler()";
static const char __pyx_k_coroutines_cannot_be_used_with_r[] = "coroutines cannot be used with run_in_executor()";
static const char __pyx_k_could_not_close_attached_file_ob[] = "could not close attached file object {!r}";
static const char __pyx_k_create_connection_locals_genexpr[] = "create_connection.<locals>.genexpr";
static const char __pyx_k_cwd_must_be_a_str_or_bytes_objec[] = "cwd must be a str or bytes object";
static const char __pyx_k_deallocating_a_running_event_loo[] = "deallocating a running event loop!";
static const char __pyx_k_epected_AF_INET_or_AF_INET6_fami[] = "epected AF_INET or AF_INET6 family, got {}";
static const char __pyx_k_error_status_in_uv_stream_t_list[] = "error status in uv_stream_t.listen callback";
static const char __pyx_k_error_status_in_uv_stream_t_read[] = "error status in uv_stream_t.read callback";
static const char __pyx_k_error_status_in_uv_stream_t_shut[] = "error status in uv_stream_t.shutdown callback";
static const char __pyx_k_error_status_in_uv_stream_t_writ[] = "error status in uv_stream_t.write callback";
static const char __pyx_k_error_while_attempting_to_bind_o[] = "error while attempting to bind on address %r: %s";
static const char __pyx_k_failed_to_restore_signal_sigfill[] = "failed to restore signal (sigfillset failed)";
static const char __pyx_k_failed_to_set_SIGINT_signal_sigf[] = "failed to set SIGINT signal (sigfillset failed)";
static const char __pyx_k_getnameinfo_argument_1_must_be_a[] = "getnameinfo() argument 1 must be a tuple";
static const char __pyx_k_handle_data_is_NULL_in___close_a[] = "handle.data is NULL in __close_all_handles_cb";
static const char __pyx_k_host_must_be_a_string_or_bytes_o[] = "host must be a string or bytes object";
static const char __pyx_k_host_port_and_sock_can_not_be_sp[] = "host/port and sock can not be specified at the same time";
static const char __pyx_k_invalid_waiter_object_r_expected[] = "invalid waiter object {!r}, expected asyncio.Future";
static const char __pyx_k_local_addr_must_be_a_tuple_of_ho[] = "local_addr must be a tuple of host and port";
static const char __pyx_k_loop_set_debug_False_cannot_unse[] = "loop.set_debug(False): cannot unset debug coroutine wrapper; another wrapper was set %r";
static const char __pyx_k_loop_set_debug_True_cannot_set_d[] = "loop.set_debug(True): cannot set debug coroutine wrapper; another wrapper is already set %r";
static const char __pyx_k_new_callbacks_were_queued_during[] = "new callbacks were queued during loop closing: {}";
static const char __pyx_k_new_poll_handles_were_queued_dur[] = "new poll handles were queued during loop closing: {}";
static const char __pyx_k_new_timers_were_queued_during_lo[] = "new timers were queued during loop closing: {}";
static const char __pyx_k_path_and_sock_can_not_be_specifi[] = "path and sock can not be specified at the same time";
static const char __pyx_k_path_was_not_specified_and_no_so[] = "path was not specified, and no sock specified";
static const char __pyx_k_preexec_fn_parameter_is_not_supp[] = "preexec_fn parameter is not supported";
static const char __pyx_k_remote_addr_must_be_a_tuple_of_h[] = "remote_addr must be a tuple of (host, port)";
static const char __pyx_k_reuse_port_not_supported_by_sock[] = "reuse_port not supported by socket module";
static const char __pyx_k_run_until_complete_locals_lambda[] = "run_until_complete.<locals>.<lambda>";
static const char __pyx_k_server_hostname_is_only_meaningf[] = "server_hostname is only meaningful with ssl";
static const char __pyx_k_sockaddr_resolved_to_multiple_ad[] = "sockaddr resolved to multiple addresses";
static const char __pyx_k_socket_modifier_keyword_argument[] = "socket modifier keyword arguments can not be used when sock is specified. ({})";
static const char __pyx_k_ssl_argument_must_be_an_SSLConte[] = "ssl argument must be an SSLContext or None";
static const char __pyx_k_ssl_is_expected_to_be_None_or_an[] = "ssl is expected to be None or an instance of ssl.SSLContext, got {!r}";
static const char __pyx_k_subprocess_STDOUT_is_supported_o[] = "subprocess.STDOUT is supported only by stderr parameter";
static const char __pyx_k_unable_to_listen_no_protocol_fac[] = "unable to listen(); no protocol_factory";
static const char __pyx_k_unable_to_perform_operation_on_r[] = "unable to perform operation on {!r}; the handler is closed";
static const char __pyx_k_undable_to_perform_send_operatio[] = "undable to perform send operation: no address";
static const char __pyx_k_universal_newlines_must_be_False[] = "universal_newlines must be False";
static const char __pyx_k_uv_handle_t_data_is_NULL_in_clos[] = "uv_handle_t.data is NULL in close callback";
static const char __pyx_k_waiter_is_not_None_in__call_conn[] = "waiter is not None in {}._call_connection_lost";
static const char __pyx_k_Users_yury_dev_magic_uvloop_uvl_2[] = "/Users/yury/dev/magic/uvloop/uvloop/handles/process.pyx";
static const char __pyx_k_getaddrinfo_returned_empty_list_2[] = "getaddrinfo() returned empty list for local_addr";
static const char __pyx_k_Exception_in_default_exception_h_2[] = "Exception in default exception handler while handling an unexpected error in custom exception handler";
static const char __pyx_k_UDPTransport_family_is_undefined_2[] = "UDPTransport.family is undefined; cannot send";
static const char __pyx_k_WriteSubprocessPipeProto_connect_2[] = "WriteSubprocessPipeProto.connection_lost";
static const char __pyx_k_local_addr_must_be_a_tuple_of_ho_2[] = "local_addr must be a tuple of (host, port)";
static PyObject *__pyx_kp_u_0_0_0_0;
static PyObject *__pyx_n_u_AF_INET6;
static PyObject *__pyx_kp_u_AF_INET6_address_must_be_tuple;
static PyObject *__pyx_kp_u_AF_INET6_must_be_a_tuple_of_2_4;
static PyObject *__pyx_kp_u_AF_INET_address_must_be_tuple;
static PyObject *__pyx_kp_u_AF_INET_address_must_be_tuple_of;
static PyObject *__pyx_kp_u_AF_UNSPEC_in_DNS_results;
static PyObject *__pyx_kp_u_A_UNIX_Domain_Socket_was_expecte;
static PyObject *__pyx_kp_u_A_callable_object_or_None_is_exp;
static PyObject *__pyx_kp_u_AddrInfoRequest_callback_called;
static PyObject *__pyx_kp_u_AddrInfo_data_is_NULL;
static PyObject *__pyx_kp_u_Already_paused;
static PyObject *__pyx_n_s_AttributeError;
static PyObject *__pyx_n_s_BaseException;
static PyObject *__pyx_n_s_BaseProtocol;
static PyObject *__pyx_n_s_BlockingIOError;
static PyObject *__pyx_n_s_BrokenPipeError;
static PyObject *__pyx_n_s_CALL_CONNECTION_LOST;
static PyObject *__pyx_n_s_CALL_PIPE_CONNECTION_LOST;
static PyObject *__pyx_n_s_CALL_PIPE_DATA_RECEIVED;
static PyObject *__pyx_n_s_CALL_PROCESS_EXITED;
static PyObject *__pyx_n_s_CancelledError;
static PyObject *__pyx_kp_u_Cannot_call_write_after_write_eo;
static PyObject *__pyx_kp_u_Cannot_close_a_running_event_loo;
static PyObject *__pyx_kp_u_Cannot_pause_reading_when_closin;
static PyObject *__pyx_kp_u_Connect_call_failed_s;
static PyObject *__pyx_n_s_ConnectionAbortedError;
static PyObject *__pyx_n_s_ConnectionRefusedError;
static PyObject *__pyx_n_s_ConnectionResetError;
static PyObject *__pyx_n_s_Counter;
static PyObject *__pyx_n_s_DEVNULL;
static PyObject *__pyx_n_u_EAI_ADDRFAMILY;
static PyObject *__pyx_n_u_EAI_AGAIN;
static PyObject *__pyx_n_u_EAI_BADFLAGS;
static PyObject *__pyx_n_u_EAI_BADHINTS;
static PyObject *__pyx_n_u_EAI_CANCELED;
static PyObject *__pyx_n_u_EAI_FAIL;
static PyObject *__pyx_n_u_EAI_FAMILY;
static PyObject *__pyx_n_u_EAI_MEMORY;
static PyObject *__pyx_n_u_EAI_NODATA;
static PyObject *__pyx_n_u_EAI_NONAME;
static PyObject *__pyx_n_u_EAI_OVERFLOW;
static PyObject *__pyx_n_u_EAI_PROTOCOL;
static PyObject *__pyx_n_u_EAI_SERVICE;
static PyObject *__pyx_n_u_EAI_SOCKTYPE;
static PyObject *__pyx_kp_u_Event_loop_is_closed;
static PyObject *__pyx_kp_u_Event_loop_is_running;
static PyObject *__pyx_kp_u_Event_loop_stopped_before_Future;
static PyObject *__pyx_n_s_Exception;
static PyObject *__pyx_kp_u_Exception_in_callback;
static PyObject *__pyx_kp_u_Exception_in_default_exception_h;
static PyObject *__pyx_kp_u_Exception_in_default_exception_h_2;
static PyObject *__pyx_kp_u_Fatal_error_on_server;
static PyObject *__pyx_kp_u_Fatal_error_on_transport;
static PyObject *__pyx_kp_u_Fatal_write_error_on_datagram_tr;
static PyObject *__pyx_n_s_FileExistsError;
static PyObject *__pyx_n_s_FileNotFoundError;
static PyObject *__pyx_n_s_Future;
static PyObject *__pyx_kp_u_Handle_cancelled_x;
static PyObject *__pyx_kp_u_Handle_r_x;
static PyObject *__pyx_n_u_IPPROTO_IPV6;
static PyObject *__pyx_kp_u_IPv4_sockaddr_must_be_2_tuple;
static PyObject *__pyx_n_s_InterruptedError;
static PyObject *__pyx_kp_u_Invalid_address_must_be_None_or;
static PyObject *__pyx_n_s_IsADirectoryError;
static PyObject *__pyx_n_s_Iterable;
static PyObject *__pyx_n_s_KeyError;
static PyObject *__pyx_n_s_KeyboardInterrupt;
static PyObject *__pyx_n_s_Loop___subprocess_run;
static PyObject *__pyx_n_s_Loop__getaddrinfo_locals_callbac;
static PyObject *__pyx_n_s_Loop__getnameinfo_locals_callbac;
static PyObject *__pyx_kp_u_Loop__sock_accept;
static PyObject *__pyx_kp_u_Loop__sock_connect;
static PyObject *__pyx_n_s_Loop__sock_connect_locals_lambda;
static PyObject *__pyx_kp_u_Loop__sock_recv;
static PyObject *__pyx_kp_u_Loop__sock_sendall;
static PyObject *__pyx_kp_u_Loop__stop;
static PyObject *__pyx_n_s_Loop_connect_read_pipe;
static PyObject *__pyx_n_s_Loop_connect_write_pipe;
static PyObject *__pyx_n_s_Loop_create_connection;
static PyObject *__pyx_n_s_Loop_create_datagram_endpoint;
static PyObject *__pyx_n_s_Loop_create_server;
static PyObject *__pyx_n_s_Loop_create_unix_connection;
static PyObject *__pyx_n_s_Loop_create_unix_server;
static PyObject *__pyx_n_s_Loop_getnameinfo;
static PyObject *__pyx_n_s_MemoryError;
static PyObject *__pyx_kp_u_Multiple_exceptions;
static PyObject *__pyx_n_s_NSIG;
static PyObject *__pyx_kp_u_Neither_host_port_nor_sock_were;
static PyObject *__pyx_kp_u_Non_thread_safe_operation_invoke;
static PyObject *__pyx_n_s_NotImplementedError;
static PyObject *__pyx_kp_u_Not_paused;
static PyObject *__pyx_n_s_OSError;
static PyObject *__pyx_n_s_O_RDWR;
static PyObject *__pyx_n_s_OverflowError;
static PyObject *__pyx_n_s_PIPE;
static PyObject *__pyx_n_u_PYTHONASYNCIODEBUG;
static PyObject *__pyx_n_s_PermissionError;
static PyObject *__pyx_n_s_ProcessLookupError;
static PyObject *__pyx_n_s_Protocol;
static PyObject *__pyx_n_s_ReadSubprocessPipeProto;
static PyObject *__pyx_n_s_ReadSubprocessPipeProto_data_rec;
static PyObject *__pyx_n_s_ResourceWarning;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_RuntimeWarning;
static PyObject *__pyx_n_u_SO_REUSEPORT;
static PyObject *__pyx_n_s_SSLContext;
static PyObject *__pyx_n_s_SSLProtocol;
static PyObject *__pyx_n_s_STDOUT;
static PyObject *__pyx_n_s_Server_wait_closed;
static PyObject *__pyx_kp_u_SignalsStack_save_wasn_t_called;
static PyObject *__pyx_n_s_SystemExit;
static PyObject *__pyx_n_s_Task;
static PyObject *__pyx_n_s_ThreadPoolExecutor;
static PyObject *__pyx_n_s_TimeoutError;
static PyObject *__pyx_kp_u_TimerHandle_cancelled_x;
static PyObject *__pyx_kp_u_TimerHandle_r_x;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_u_UDPTransport_family_is_undefined;
static PyObject *__pyx_kp_u_UDPTransport_family_is_undefined_2;
static PyObject *__pyx_kp_u_UVProcessTransport__call_connect;
static PyObject *__pyx_kp_u_UVProcess__close_after_spawn_cal;
static PyObject *__pyx_kp_u_UVStream_shutdown_callback_calle;
static PyObject *__pyx_kp_u_UVStream_write_callback_called_w;
static PyObject *__pyx_kp_u_UVTransport__call_connection_los;
static PyObject *__pyx_kp_u_UVTransport__call_connection_mad;
static PyObject *__pyx_kp_u_UVTransport__start_reading;
static PyObject *__pyx_kp_u_Unable_to_deallocate_request_for;
static PyObject *__pyx_kp_u_Unhandled_error_in_exception_han;
static PyObject *__pyx_kp_u_Unhandled_exception_in_event_loo;
static PyObject *__pyx_kp_s_Users_yury_dev_magic_uvloop_uvl;
static PyObject *__pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto___init;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto___repr;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto_connect;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto_connect_2;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto_pause_w;
static PyObject *__pyx_n_s_WriteSubprocessPipeProto_resume;
static PyObject *__pyx_kp_u_You_must_set_server_hostname_whe;
static PyObject *__pyx_kp_b__104;
static PyObject *__pyx_kp_b__34;
static PyObject *__pyx_kp_u__34;
static PyObject *__pyx_kp_u__42;
static PyObject *__pyx_kp_u__53;
static PyObject *__pyx_kp_u__54;
static PyObject *__pyx_kp_u__76;
static PyObject *__pyx_kp_u__85;
static PyObject *__pyx_n_s_accept;
static PyObject *__pyx_n_s_add_done_callback;
static PyObject *__pyx_n_s_addr;
static PyObject *__pyx_n_s_address;
static PyObject *__pyx_kp_u_all_args_must_be_str_or_bytes;
static PyObject *__pyx_kp_u_all_environment_values_must_be_b;
static PyObject *__pyx_kp_u_all_environment_vars_must_be_byt;
static PyObject *__pyx_n_s_allow_broadcast;
static PyObject *__pyx_n_s_app_transport;
static PyObject *__pyx_n_s_append;
static PyObject *__pyx_n_s_args;
static PyObject *__pyx_n_s_asyncio;
static PyObject *__pyx_n_s_asyncio_base_events;
static PyObject *__pyx_n_s_asyncio_coroutines;
static PyObject *__pyx_n_s_asyncio_log;
static PyObject *__pyx_n_s_asyncio_sslproto;
static PyObject *__pyx_n_s_asyncio_tasks;
static PyObject *__pyx_n_s_await;
static PyObject *__pyx_n_s_backlog;
static PyObject *__pyx_n_s_base_events;
static PyObject *__pyx_kp_b_bin_sh;
static PyObject *__pyx_n_s_bind;
static PyObject *__pyx_n_s_bufsize;
static PyObject *__pyx_kp_u_bufsize_must_be_0;
static PyObject *__pyx_kp_b_c;
static PyObject *__pyx_n_s_call_exception_handler;
static PyObject *__pyx_n_s_call_later;
static PyObject *__pyx_n_s_call_soon;
static PyObject *__pyx_n_s_callback;
static PyObject *__pyx_kp_u_called_after_destroying_the_UVH;
static PyObject *__pyx_kp_u_called_with_handle_data_NULL;
static PyObject *__pyx_n_s_cancel;
static PyObject *__pyx_n_s_cancelled;
static PyObject *__pyx_kp_u_cannot_apply_subprocess_STDOUT;
static PyObject *__pyx_kp_u_cannot_convert_sockaddr_into_Pyt;
static PyObject *__pyx_kp_u_cannot_open_a_UDP_handle_invalid;
static PyObject *__pyx_kp_u_cannot_spawn_a_process_args_are;
static PyObject *__pyx_n_s_chain;
static PyObject *__pyx_n_s_check_resolved_address;
static PyObject *__pyx_n_s_class;
static PyObject *__pyx_n_s_clear;
static PyObject *__pyx_n_s_close;
static PyObject *__pyx_n_s_close_fds;
static PyObject *__pyx_kp_u_closed_reading_x;
static PyObject *__pyx_kp_u_closed_x;
static PyObject *__pyx_n_s_cmd;
static PyObject *__pyx_n_s_collections;
static PyObject *__pyx_n_s_concurrent;
static PyObject *__pyx_kp_u_concurrent_allocations;
static PyObject *__pyx_n_s_concurrent_futures;
static PyObject *__pyx_n_s_connect;
static PyObject *__pyx_kp_u_connect_failed;
static PyObject *__pyx_n_s_connect_read_pipe;
static PyObject *__pyx_n_s_connect_write_pipe;
static PyObject *__pyx_n_s_connection_lost;
static PyObject *__pyx_n_s_connection_made;
static PyObject *__pyx_n_u_context;
static PyObject *__pyx_n_s_copy;
static PyObject *__pyx_n_s_coroutine;
static PyObject *__pyx_n_s_coroutines;
static PyObject *__pyx_kp_u_coroutines_cannot_be_used_with_a;
static PyObject *__pyx_kp_u_coroutines_cannot_be_used_with_r;
static PyObject *__pyx_kp_u_could_not_bind_to_local_addr;
static PyObject *__pyx_kp_u_could_not_bind_to_remote_addr;
static PyObject *__pyx_kp_u_could_not_close_attached_file_ob;
static PyObject *__pyx_n_s_create_connection;
static PyObject *__pyx_n_s_create_connection_locals_genexpr;
static PyObject *__pyx_n_s_create_datagram_endpoint;
static PyObject *__pyx_n_s_create_datagram_endpoint_locals;
static PyObject *__pyx_n_s_create_server;
static PyObject *__pyx_n_s_create_unix_connection;
static PyObject *__pyx_n_s_create_unix_server;
static PyObject *__pyx_n_s_creationflags;
static PyObject *__pyx_kp_u_creationflags_is_not_supported;
static PyObject *__pyx_n_s_cwd;
static PyObject *__pyx_kp_u_cwd_must_be_a_str_or_bytes_objec;
static PyObject *__pyx_n_s_data;
static PyObject *__pyx_n_s_data_received;
static PyObject *__pyx_n_s_datagram_received;
static PyObject *__pyx_kp_u_dealloc____handle_is_NULL__cl;
static PyObject *__pyx_kp_u_deallocating_a_running_event_loo;
static PyObject *__pyx_kp_u_deallocating_an_open_event_loop;
static PyObject *__pyx_n_s_debug_wrapper;
static PyObject *__pyx_n_s_decode;
static PyObject *__pyx_n_s_default;
static PyObject *__pyx_n_s_default_exception_handler;
static PyObject *__pyx_n_s_delay;
static PyObject *__pyx_n_s_deque;
static PyObject *__pyx_n_s_detach;
static PyObject *__pyx_n_s_devnull;
static PyObject *__pyx_n_s_disconnected;
static PyObject *__pyx_n_s_doc;
static PyObject *__pyx_n_s_done;
static PyObject *__pyx_n_s_dup;
static PyObject *__pyx_n_s_encode;
static PyObject *__pyx_n_s_ensure_future;
static PyObject *__pyx_n_s_env;
static PyObject *__pyx_n_s_environ;
static PyObject *__pyx_n_s_eof_received;
static PyObject *__pyx_kp_u_epected_AF_INET_or_AF_INET6_fami;
static PyObject *__pyx_n_s_errno;
static PyObject *__pyx_n_s_error;
static PyObject *__pyx_n_s_error_received;
static PyObject *__pyx_kp_u_error_status_in_uv_stream_t_list;
static PyObject *__pyx_kp_u_error_status_in_uv_stream_t_read;
static PyObject *__pyx_kp_u_error_status_in_uv_stream_t_shut;
static PyObject *__pyx_kp_u_error_status_in_uv_stream_t_writ;
static PyObject *__pyx_kp_u_error_while_attempting_to_bind_o;
static PyObject *__pyx_n_s_ex;
static PyObject *__pyx_n_s_exc;
static PyObject *__pyx_n_s_exc_info;
static PyObject *__pyx_n_s_exception;
static PyObject *__pyx_n_u_exception;
static PyObject *__pyx_n_s_executable;
static PyObject *__pyx_n_s_executor;
static PyObject *__pyx_kp_u_failed_to_restore_signal_sigfill;
static PyObject *__pyx_kp_u_failed_to_set_SIGINT_signal_sigf;
static PyObject *__pyx_n_s_family;
static PyObject *__pyx_n_s_fd;
static PyObject *__pyx_n_s_fileno;
static PyObject *__pyx_n_s_flags;
static PyObject *__pyx_n_s_force_close;
static PyObject *__pyx_n_s_format;
static PyObject *__pyx_n_s_func;
static PyObject *__pyx_n_s_functools;
static PyObject *__pyx_n_s_fut;
static PyObject *__pyx_n_s_futures;
static PyObject *__pyx_n_s_gaierror;
static PyObject *__pyx_n_s_gather;
static PyObject *__pyx_n_s_genexpr;
static PyObject *__pyx_n_s_get;
static PyObject *__pyx_n_s_get_coroutine_wrapper;
static PyObject *__pyx_n_s_get_debug;
static PyObject *__pyx_n_s_get_extra_info;
static PyObject *__pyx_n_s_get_inheritable;
static PyObject *__pyx_kp_u_getaddrinfo_returned_empty_list;
static PyObject *__pyx_kp_u_getaddrinfo_returned_empty_list_2;
static PyObject *__pyx_n_s_getnameinfo;
static PyObject *__pyx_kp_u_getnameinfo_argument_1_must_be_a;
static PyObject *__pyx_n_s_getpeername;
static PyObject *__pyx_kp_u_getsockaddrarg_flowinfo_must_be;
static PyObject *__pyx_kp_u_getsockaddrarg_scope_id_must_be;
static PyObject *__pyx_n_s_getsockname;
static PyObject *__pyx_n_s_getsockopt;
static PyObject *__pyx_n_s_gettimeout;
static PyObject *__pyx_kp_u_handle_data_is_NULL_in___close_a;
static PyObject *__pyx_kp_u_handle_data_is___NOHANDLE___yet;
static PyObject *__pyx_n_s_high;
static PyObject *__pyx_kp_u_high_r_must_be_low_r_must_be_0;
static PyObject *__pyx_n_s_host;
static PyObject *__pyx_kp_u_host_and_port_was_not_specified;
static PyObject *__pyx_kp_u_host_must_be_a_str_or_bytes;
static PyObject *__pyx_kp_u_host_must_be_a_string_or_bytes_o;
static PyObject *__pyx_kp_u_host_port_and_sock_can_not_be_sp;
static PyObject *__pyx_n_s_id;
static PyObject *__pyx_n_s_ident;
static PyObject *__pyx_n_u_idna;
static PyObject *__pyx_n_s_ignore_environment;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_n_s_init;
static PyObject *__pyx_n_s_inspect;
static PyObject *__pyx_kp_u_invalid_Handle_cb_type;
static PyObject *__pyx_kp_u_invalid__init_protocol_call;
static PyObject *__pyx_kp_u_invalid_stderr_argument_value_r;
static PyObject *__pyx_kp_u_invalid_stdin_argument_value_r;
static PyObject *__pyx_kp_u_invalid_stdout_argument_value_r;
static PyObject *__pyx_kp_u_invalid_waiter_object_r_expected;
static PyObject *__pyx_n_s_is_closed;
static PyObject *__pyx_kp_u_is_not_supposed_to_be_instantia;
static PyObject *__pyx_kp_u_is_open_in___dealloc___with_loo;
static PyObject *__pyx_n_s_is_running;
static PyObject *__pyx_n_s_iscoroutine;
static PyObject *__pyx_n_s_iscoroutinefunction;
static PyObject *__pyx_n_s_items;
static PyObject *__pyx_n_s_itertools;
static PyObject *__pyx_n_s_join;
static PyObject *__pyx_n_s_local_addr;
static PyObject *__pyx_kp_u_local_addr_must_be_a_tuple_of_ho;
static PyObject *__pyx_kp_u_local_addr_must_be_a_tuple_of_ho_2;
static PyObject *__pyx_n_s_log;
static PyObject *__pyx_n_s_log_destroy_pending;
static PyObject *__pyx_n_s_logger;
static PyObject *__pyx_n_s_loop;
static PyObject *__pyx_kp_u_loop__on_idle;
static PyObject *__pyx_kp_u_loop__on_sighup;
static PyObject *__pyx_kp_u_loop__on_sigint;
static PyObject *__pyx_kp_u_loop_set_debug_False_cannot_unse;
static PyObject *__pyx_kp_u_loop_set_debug_True_cannot_set_d;
static PyObject *__pyx_n_s_low;
static PyObject *__pyx_n_s_lower;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_main_thread;
static PyObject *__pyx_n_u_message;
static PyObject *__pyx_n_s_metaclass;
static PyObject *__pyx_n_s_module;
static PyObject *__pyx_n_s_n;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_kp_u_new_callbacks_were_queued_during;
static PyObject *__pyx_kp_u_new_poll_handles_were_queued_dur;
static PyObject *__pyx_kp_u_new_timers_were_queued_during_lo;
static PyObject *__pyx_kp_u_no_path_and_sock_were_specified;
static PyObject *__pyx_n_s_object;
static PyObject *__pyx_n_s_on_ssl_connected;
static PyObject *__pyx_n_s_open;
static PyObject *__pyx_n_s_os;
static PyObject *__pyx_n_s_partial;
static PyObject *__pyx_n_s_pass_fds;
static PyObject *__pyx_n_s_path;
static PyObject *__pyx_kp_u_path_and_sock_can_not_be_specifi;
static PyObject *__pyx_kp_u_path_was_not_specified_and_no_so;
static PyObject *__pyx_n_s_pause_writing;
static PyObject *__pyx_n_u_peername;
static PyObject *__pyx_n_s_pipe;
static PyObject *__pyx_n_u_pipe;
static PyObject *__pyx_n_s_pipe_connection_lost;
static PyObject *__pyx_n_s_pipe_data_received;
static PyObject *__pyx_n_s_pop;
static PyObject *__pyx_n_s_popleft;
static PyObject *__pyx_n_s_port;
static PyObject *__pyx_kp_u_port_must_be_a_str_bytes_or_int;
static PyObject *__pyx_n_s_preexec_fn;
static PyObject *__pyx_kp_u_preexec_fn_is_not_supported;
static PyObject *__pyx_kp_u_preexec_fn_parameter_is_not_supp;
static PyObject *__pyx_n_s_prepare;
static PyObject *__pyx_n_s_print;
static PyObject *__pyx_n_s_proc;
static PyObject *__pyx_n_s_process_exited;
static PyObject *__pyx_n_s_program;
static PyObject *__pyx_n_s_proto;
static PyObject *__pyx_n_s_proto_factory;
static PyObject *__pyx_n_u_protocol;
static PyObject *__pyx_n_s_protocol_factory;
static PyObject *__pyx_kp_u_protocol_is_not_set_cannot_call;
static PyObject *__pyx_kp_u_protocol_is_required;
static PyObject *__pyx_kp_u_protocol_pause_writing_failed;
static PyObject *__pyx_kp_u_protocol_resume_writing_failed;
static PyObject *__pyx_n_s_pyx_vtable;
static PyObject *__pyx_n_s_qualname;
static PyObject *__pyx_kp_u_r_fileno_returned_non_integer;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_recv;
static PyObject *__pyx_n_s_remote_addr;
static PyObject *__pyx_kp_u_remote_addr_must_be_a_tuple_of_h;
static PyObject *__pyx_n_s_remove;
static PyObject *__pyx_n_s_remove_done_callback;
static PyObject *__pyx_n_s_repr;
static PyObject *__pyx_n_s_restore_signals;
static PyObject *__pyx_n_s_result;
static PyObject *__pyx_n_s_resume_writing;
static PyObject *__pyx_n_s_reuse_address;
static PyObject *__pyx_n_s_reuse_port;
static PyObject *__pyx_kp_u_reuse_port_not_supported_by_sock;
static PyObject *__pyx_n_s_run_forever;
static PyObject *__pyx_n_s_run_until_complete_locals_lambda;
static PyObject *__pyx_kp_u_running_closed_debug;
static PyObject *__pyx_kp_u_s_fd_s_pipe_r;
static PyObject *__pyx_kp_u_s_sockets_r;
static PyObject *__pyx_n_s_self;
static PyObject *__pyx_n_s_send;
static PyObject *__pyx_n_s_server_hostname;
static PyObject *__pyx_kp_u_server_hostname_is_only_meaningf;
static PyObject *__pyx_n_s_set_coroutine_wrapper;
static PyObject *__pyx_n_s_set_debug;
static PyObject *__pyx_n_s_set_exception;
static PyObject *__pyx_n_s_set_inheritable;
static PyObject *__pyx_n_s_set_result;
static PyObject *__pyx_n_s_setblocking;
static PyObject *__pyx_n_s_shell;
static PyObject *__pyx_kp_u_shell_must_be_False;
static PyObject *__pyx_kp_u_shell_must_be_True;
static PyObject *__pyx_n_s_shutdown;
static PyObject *__pyx_n_s_sig;
static PyObject *__pyx_kp_u_sig_cannot_be_caught;
static PyObject *__pyx_kp_u_sig_must_be_an_int_not_r;
static PyObject *__pyx_kp_u_sig_out_of_range_1;
static PyObject *__pyx_n_s_signal;
static PyObject *__pyx_n_s_sleep;
static PyObject *__pyx_n_s_sock;
static PyObject *__pyx_n_s_sockaddr;
static PyObject *__pyx_kp_u_sockaddr_must_be_a_tuple_of_2_3;
static PyObject *__pyx_kp_u_sockaddr_resolved_to_multiple_ad;
static PyObject *__pyx_n_s_socket;
static PyObject *__pyx_n_u_socket;
static PyObject *__pyx_kp_u_socket_modifier_keyword_argument;
static PyObject *__pyx_n_s_sockets;
static PyObject *__pyx_n_u_sockname;
static PyObject *__pyx_n_s_ssl;
static PyObject *__pyx_kp_u_ssl_argument_must_be_an_SSLConte;
static PyObject *__pyx_kp_u_ssl_is_expected_to_be_None_or_an;
static PyObject *__pyx_n_s_sslproto;
static PyObject *__pyx_n_s_start_new_session;
static PyObject *__pyx_n_s_startupinfo;
static PyObject *__pyx_kp_u_startupinfo_is_not_supported;
static PyObject *__pyx_n_s_std_signal;
static PyObject *__pyx_n_s_stderr;
static PyObject *__pyx_n_s_stdin;
static PyObject *__pyx_n_s_stdio_fut;
static PyObject *__pyx_n_s_stdio_inited;
static PyObject *__pyx_n_s_stdout;
static PyObject *__pyx_n_s_stop;
static PyObject *__pyx_n_s_strerror;
static PyObject *__pyx_n_s_submit;
static PyObject *__pyx_n_s_subprocess;
static PyObject *__pyx_kp_u_subprocess_STDOUT_is_supported_o;
static PyObject *__pyx_n_s_subprocess_run;
static PyObject *__pyx_n_s_super;
static PyObject *__pyx_n_s_sys;
static PyObject *__pyx_kp_u_task_factory_must_be_a_callable;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_kp_u_the_socket_must_be_non_blocking;
static PyObject *__pyx_n_s_threading;
static PyObject *__pyx_n_s_throw;
static PyObject *__pyx_n_s_time;
static PyObject *__pyx_n_s_timeout;
static PyObject *__pyx_n_s_traceback;
static PyObject *__pyx_n_s_transport;
static PyObject *__pyx_n_u_transport;
static PyObject *__pyx_n_s_type;
static PyObject *__pyx_kp_u_unable_to_listen_no_protocol_fac;
static PyObject *__pyx_kp_u_unable_to_perform_operation_on_r;
static PyObject *__pyx_kp_u_unable_to_start_the_loop_it_was;
static PyObject *__pyx_kp_u_unclosed_resource_r;
static PyObject *__pyx_kp_u_undable_to_perform_send_operatio;
static PyObject *__pyx_kp_u_unexpected_address_family;
static PyObject *__pyx_n_s_universal_newlines;
static PyObject *__pyx_kp_u_universal_newlines_must_be_False;
static PyObject *__pyx_kp_u_unopened_TCPServer;
static PyObject *__pyx_kp_u_uv_handle_t_data_is_NULL_in_clos;
static PyObject *__pyx_kp_u_uv_udp_receive_callback_addr_is;
static PyObject *__pyx_n_s_uvloop_loop;
static PyObject *__pyx_n_s_uvloop_sleep_after_fork;
static PyObject *__pyx_n_s_values;
static PyObject *__pyx_n_s_wait;
static PyObject *__pyx_n_s_wait_closed;
static PyObject *__pyx_n_s_waiter;
static PyObject *__pyx_kp_u_waiter_is_not_None_in__call_conn;
static PyObject *__pyx_n_s_warn;
static PyObject *__pyx_n_s_warnings;
static PyObject *__pyx_n_s_when;
static PyObject *__pyx_n_s_wrap_future;
static PyObject *__pyx_n_s_write;
static int __pyx_pf_6uvloop_4loop_4Loop___cinit__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_4Loop_2__init__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static void __pyx_pf_6uvloop_4loop_4Loop_4__dealloc__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12_getaddrinfo_callback(PyObject *__pyx_self, PyObject *__pyx_v_result); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12_getnameinfo_callback(PyObject *__pyx_self, PyObject *__pyx_v_result); /* proto */
static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_fut); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_6__repr__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_8call_soon(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_10call_soon_threadsafe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12call_later(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_delay, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_14call_at(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_when, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_16time(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_18stop(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_20run_forever(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_22close(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_24get_debug(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_26set_debug(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_enabled); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_28is_running(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_30is_closed(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_32create_task(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_coro); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_34set_task_factory(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_factory); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_36get_task_factory(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static PyObject *__pyx_lambda_funcdef_lambda1(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_fut); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_38run_until_complete(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_future); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_40getaddrinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_42getnameinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sockaddr, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_45create_server(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_flags, PyObject *__pyx_v_sock, int __pyx_v_backlog, PyObject *__pyx_v_ssl, CYTHON_UNUSED PyObject *__pyx_v_reuse_address, PyObject *__pyx_v_reuse_port); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_17create_connection_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_17create_connection_3genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_48create_connection(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_host, PyObject *__pyx_v_port, PyObject *__pyx_v_ssl, PyObject *__pyx_v_family, PyObject *__pyx_v_proto, PyObject *__pyx_v_flags, PyObject *__pyx_v_sock, PyObject *__pyx_v_local_addr, PyObject *__pyx_v_server_hostname); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_51create_unix_server(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_path, PyObject *__pyx_v_backlog, PyObject *__pyx_v_sock, PyObject *__pyx_v_ssl); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_54create_unix_connection(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_path, PyObject *__pyx_v_ssl, PyObject *__pyx_v_sock, PyObject *__pyx_v_server_hostname); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_57default_exception_handler(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_59set_exception_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_handler); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_61call_exception_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_63add_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_65remove_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_67add_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_69remove_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_71sock_recv(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_n); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_73sock_sendall(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_75sock_accept(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_77sock_connect(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_address); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_79run_in_executor(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_executor, PyObject *__pyx_v_func, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_81set_default_executor(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_executor); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_83__subprocess_run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_args, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_universal_newlines, CYTHON_UNUSED PyObject *__pyx_v_shell, PyObject *__pyx_v_bufsize, PyObject *__pyx_v_preexec_fn, CYTHON_UNUSED PyObject *__pyx_v_close_fds, PyObject *__pyx_v_cwd, PyObject *__pyx_v_env, PyObject *__pyx_v_startupinfo, PyObject *__pyx_v_creationflags, CYTHON_UNUSED PyObject *__pyx_v_restore_signals, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_executable, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v___uvloop_sleep_after_fork); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_86subprocess_shell(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_cmd, PyObject *__pyx_v_shell, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_88subprocess_exec(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_program, PyObject *__pyx_v_shell, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_90connect_read_pipe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_proto_factory, PyObject *__pyx_v_pipe); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_93connect_write_pipe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_proto_factory, PyObject *__pyx_v_pipe); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_96add_signal_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_98remove_signal_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_24create_datagram_endpoint_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_100create_datagram_endpoint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_local_addr, PyObject *__pyx_v_remote_addr, PyObject *__pyx_v_family, PyObject *__pyx_v_proto, PyObject *__pyx_v_flags, PyObject *__pyx_v_reuse_address, PyObject *__pyx_v_reuse_port, PyObject *__pyx_v_allow_broadcast, PyObject *__pyx_v_sock); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_4Loop_7_closed___get__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_6Handle___cinit__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_6Handle_2__init__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Handle_4__repr__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Handle_6cancel(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_11TimerHandle___cinit__(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_callback, PyObject *__pyx_v_args, uint64_t __pyx_v_delay); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_11TimerHandle_2__repr__(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_11TimerHandle_4cancel(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_8UVHandle___cinit__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_8UVHandle_2__init__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto */
static void __pyx_pf_6uvloop_4loop_8UVHandle_4__dealloc__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVHandle_6__repr__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_14UVSocketHandle___cinit__(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_15UVBaseTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_7_paused___get__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_2_force_close(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_4abort(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_6close(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_8is_closing(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_10get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_12set_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_high, PyObject *__pyx_v_low); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_14get_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_16get_extra_info(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_8_closing___get__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_8UVStream___cinit__(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_2__repr__(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_4write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_6writelines(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_bufs); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_8write_eof(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_10can_write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_12pause_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_14resume_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_14UVStreamServer___cinit__(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_14UVStreamServer_2__on_ssl_connected(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, PyObject *__pyx_v_transport, PyObject *__pyx_v_fut); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_12TCPTransport_get_extra_info(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default); /* proto */
static int __pyx_pf_6uvloop_4loop_18_TCPConnectRequest___cinit__(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_loop, PyObject *__pyx_v_transport); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_get_write_buffer_limits(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_2set_write_buffer_limits(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_high, CYTHON_UNUSED PyObject *__pyx_v_low); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_4get_write_buffer_size(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_6write(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_8writelines(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_list_of_data); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_10write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_12can_write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_14abort(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18WriteUnixTransport_pause_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18WriteUnixTransport_2resume_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_19_PipeConnectRequest___cinit__(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_loop, PyObject *__pyx_v_transport); /* proto */
static int __pyx_pf_6uvloop_4loop_9UVProcess___cinit__(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_18UVProcessTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_2__stdio_inited(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_waiter, PyObject *__pyx_v_stdio_fut); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_4get_pid(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_6get_returncode(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_8get_pipe_transport(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_fd); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_10terminate(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_12kill(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_14send_signal(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_signal); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_16is_closing(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_18close(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_20get_extra_info(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_22_wait(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_proc, PyObject *__pyx_v_fd); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_2connection_made(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_transport); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_6connection_lost(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_exc); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_8pause_writing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_10resume_writing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_23ReadSubprocessPipeProto_data_received(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_6uvloop_4loop_9UVRequest___cinit__(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v__); /* proto */
static void __pyx_pf_6uvloop_4loop_9UVRequest_2__dealloc__(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_8AddrInfo___cinit__(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self); /* proto */
static void __pyx_pf_6uvloop_4loop_8AddrInfo_2__dealloc__(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_15AddrInfoRequest___cinit__(struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags, PyObject *__pyx_v_callback); /* proto */
static int __pyx_pf_6uvloop_4loop_15NameInfoRequest___cinit__(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_callback); /* proto */
static int __pyx_pf_6uvloop_4loop_12UDPTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_12UDPTransport_2sendto(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_addr); /* proto */
static int __pyx_pf_6uvloop_4loop_6Server___cinit__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Server_2__repr__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Server_4wait_closed(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Server_7close(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6uvloop_4loop_6Server_7sockets___get__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self); /* proto */
static int __pyx_pf_6uvloop_4loop_12SignalsStack___cinit__(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self); /* proto */
static PyObject *__pyx_tp_new_6uvloop_4loop_UVHandle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVAsync(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVTimer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVSignal(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVIdle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_Loop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_Handle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_TimerHandle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVSocketHandle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVPoll(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVBaseTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVStream(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVStreamServer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_TCPServer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_TCPTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UnixServer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UnixTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_ReadUnixTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_WriteUnixTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVProcess(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVProcessTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UVRequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_UDPTransport(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_Server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_SignalsStack(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop__StreamWriteContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop__TCPConnectRequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop__PipeConnectRequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_AddrInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_AddrInfoRequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop_NameInfoRequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop__UDPSendContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct___getaddrinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_2__sock_connect(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_5_create_server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_6_create_connection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_7_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_15_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_16_wait_closed(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_3;
static PyObject *__pyx_int_5;
static PyObject *__pyx_int_100;
static PyObject *__pyx_int_1000;
static PyObject *__pyx_int_1048575;
static PyObject *__pyx_int_4294967296;
static PyObject *__pyx_int_neg_1;
static int __pyx_k__29;
static int __pyx_k__30;
static PyObject *__pyx_k__64;
static PyObject *__pyx_k__65;
static PyObject *__pyx_k__66;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__51;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__55;
static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__57;
static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__59;
static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__67;
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__69;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__71;
static PyObject *__pyx_tuple__72;
static PyObject *__pyx_tuple__73;
static PyObject *__pyx_tuple__74;
static PyObject *__pyx_tuple__75;
static PyObject *__pyx_tuple__77;
static PyObject *__pyx_tuple__78;
static PyObject *__pyx_tuple__79;
static PyObject *__pyx_tuple__80;
static PyObject *__pyx_tuple__81;
static PyObject *__pyx_tuple__82;
static PyObject *__pyx_tuple__83;
static PyObject *__pyx_tuple__84;
static PyObject *__pyx_tuple__86;
static PyObject *__pyx_tuple__87;
static PyObject *__pyx_tuple__88;
static PyObject *__pyx_tuple__89;
static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__91;
static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__93;
static PyObject *__pyx_tuple__94;
static PyObject *__pyx_tuple__95;
static PyObject *__pyx_tuple__96;
static PyObject *__pyx_tuple__97;
static PyObject *__pyx_tuple__98;
static PyObject *__pyx_tuple__99;
static PyObject *__pyx_tuple__100;
static PyObject *__pyx_tuple__101;
static PyObject *__pyx_tuple__102;
static PyObject *__pyx_tuple__103;
static PyObject *__pyx_tuple__105;
static PyObject *__pyx_tuple__106;
static PyObject *__pyx_tuple__107;
static PyObject *__pyx_tuple__108;
static PyObject *__pyx_tuple__109;
static PyObject *__pyx_tuple__110;
static PyObject *__pyx_tuple__111;
static PyObject *__pyx_tuple__112;
static PyObject *__pyx_tuple__113;
static PyObject *__pyx_tuple__114;
static PyObject *__pyx_tuple__115;
static PyObject *__pyx_tuple__116;
static PyObject *__pyx_tuple__117;
static PyObject *__pyx_tuple__118;
static PyObject *__pyx_tuple__119;
static PyObject *__pyx_tuple__120;
static PyObject *__pyx_tuple__121;
static PyObject *__pyx_tuple__122;
static PyObject *__pyx_tuple__123;
static PyObject *__pyx_tuple__124;
static PyObject *__pyx_tuple__126;
static PyObject *__pyx_tuple__128;
static PyObject *__pyx_tuple__130;
static PyObject *__pyx_tuple__132;
static PyObject *__pyx_tuple__134;
static PyObject *__pyx_tuple__136;
static PyObject *__pyx_codeobj__13;
static PyObject *__pyx_codeobj__15;
static PyObject *__pyx_codeobj__125;
static PyObject *__pyx_codeobj__127;
static PyObject *__pyx_codeobj__129;
static PyObject *__pyx_codeobj__131;
static PyObject *__pyx_codeobj__133;
static PyObject *__pyx_codeobj__135;
static PyObject *__pyx_codeobj__137;

/* "uvloop/errors.pyx":1
 * cdef str __strerr(int errno):             # <<<<<<<<<<<<<<
 *     return strerror(errno).decode()
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop___strerr(int __pyx_v_errno) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__strerr", 0);

  /* "uvloop/errors.pyx":2
 * cdef str __strerr(int errno):
 *     return strerror(errno).decode()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = strerror(__pyx_v_errno);
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_1, 0, strlen(__pyx_t_1), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_INCREF(__pyx_t_2);
  __pyx_r = ((PyObject*)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/errors.pyx":1
 * cdef str __strerr(int errno):             # <<<<<<<<<<<<<<
 *     return strerror(errno).decode()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__strerr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/errors.pyx":5
 * 
 * 
 * cdef __convert_python_error(int uverr):             # <<<<<<<<<<<<<<
 *     # XXX Won't work for Windows:
 *     # From libuv docs:
 */

static PyObject *__pyx_f_6uvloop_4loop___convert_python_error(int __pyx_v_uverr) {
  int __pyx_v_oserr;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("__convert_python_error", 0);

  /* "uvloop/errors.pyx":11
 *     #      negated errno (or -errno), while on Windows they
 *     #      are defined by libuv to arbitrary negative numbers.
 *     cdef int oserr = -uverr             # <<<<<<<<<<<<<<
 * 
 *     exc = OSError
 */
  __pyx_v_oserr = (-__pyx_v_uverr);

  /* "uvloop/errors.pyx":13
 *     cdef int oserr = -uverr
 * 
 *     exc = OSError             # <<<<<<<<<<<<<<
 * 
 *     if uverr in (uv.UV_EACCES, uv.UV_EPERM):
 */
  __Pyx_INCREF(__pyx_builtin_OSError);
  __pyx_v_exc = __pyx_builtin_OSError;

  /* "uvloop/errors.pyx":15
 *     exc = OSError
 * 
 *     if uverr in (uv.UV_EACCES, uv.UV_EPERM):             # <<<<<<<<<<<<<<
 *         exc = PermissionError
 * 
 */
  __pyx_t_1 = __pyx_v_uverr;
  __pyx_t_3 = ((__pyx_t_1 == UV_EACCES) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_t_1 == UV_EPERM) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":16
 * 
 *     if uverr in (uv.UV_EACCES, uv.UV_EPERM):
 *         exc = PermissionError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr in (uv.UV_EAGAIN, uv.UV_EALREADY):
 */
    __Pyx_INCREF(__pyx_builtin_PermissionError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_PermissionError);

    /* "uvloop/errors.pyx":15
 *     exc = OSError
 * 
 *     if uverr in (uv.UV_EACCES, uv.UV_EPERM):             # <<<<<<<<<<<<<<
 *         exc = PermissionError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":18
 *         exc = PermissionError
 * 
 *     elif uverr in (uv.UV_EAGAIN, uv.UV_EALREADY):             # <<<<<<<<<<<<<<
 *         exc = BlockingIOError
 * 
 */
  __pyx_t_1 = __pyx_v_uverr;
  __pyx_t_2 = ((__pyx_t_1 == UV_EAGAIN) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_2 = ((__pyx_t_1 == UV_EALREADY) != 0);
  __pyx_t_3 = __pyx_t_2;
  __pyx_L6_bool_binop_done:;
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {

    /* "uvloop/errors.pyx":19
 * 
 *     elif uverr in (uv.UV_EAGAIN, uv.UV_EALREADY):
 *         exc = BlockingIOError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr in (uv.UV_EPIPE, uv.UV_ESHUTDOWN):
 */
    __Pyx_INCREF(__pyx_builtin_BlockingIOError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_BlockingIOError);

    /* "uvloop/errors.pyx":18
 *         exc = PermissionError
 * 
 *     elif uverr in (uv.UV_EAGAIN, uv.UV_EALREADY):             # <<<<<<<<<<<<<<
 *         exc = BlockingIOError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":21
 *         exc = BlockingIOError
 * 
 *     elif uverr in (uv.UV_EPIPE, uv.UV_ESHUTDOWN):             # <<<<<<<<<<<<<<
 *         exc = BrokenPipeError
 * 
 */
  __pyx_t_1 = __pyx_v_uverr;
  __pyx_t_3 = ((__pyx_t_1 == UV_EPIPE) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_t_1 == UV_ESHUTDOWN) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L8_bool_binop_done:;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":22
 * 
 *     elif uverr in (uv.UV_EPIPE, uv.UV_ESHUTDOWN):
 *         exc = BrokenPipeError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ECONNABORTED:
 */
    __Pyx_INCREF(__pyx_builtin_BrokenPipeError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_BrokenPipeError);

    /* "uvloop/errors.pyx":21
 *         exc = BlockingIOError
 * 
 *     elif uverr in (uv.UV_EPIPE, uv.UV_ESHUTDOWN):             # <<<<<<<<<<<<<<
 *         exc = BrokenPipeError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":24
 *         exc = BrokenPipeError
 * 
 *     elif uverr == uv.UV_ECONNABORTED:             # <<<<<<<<<<<<<<
 *         exc = ConnectionAbortedError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ECONNABORTED) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":25
 * 
 *     elif uverr == uv.UV_ECONNABORTED:
 *         exc = ConnectionAbortedError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ECONNREFUSED:
 */
    __Pyx_INCREF(__pyx_builtin_ConnectionAbortedError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_ConnectionAbortedError);

    /* "uvloop/errors.pyx":24
 *         exc = BrokenPipeError
 * 
 *     elif uverr == uv.UV_ECONNABORTED:             # <<<<<<<<<<<<<<
 *         exc = ConnectionAbortedError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":27
 *         exc = ConnectionAbortedError
 * 
 *     elif uverr == uv.UV_ECONNREFUSED:             # <<<<<<<<<<<<<<
 *         exc = ConnectionRefusedError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ECONNREFUSED) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":28
 * 
 *     elif uverr == uv.UV_ECONNREFUSED:
 *         exc = ConnectionRefusedError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ECONNRESET:
 */
    __Pyx_INCREF(__pyx_builtin_ConnectionRefusedError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_ConnectionRefusedError);

    /* "uvloop/errors.pyx":27
 *         exc = ConnectionAbortedError
 * 
 *     elif uverr == uv.UV_ECONNREFUSED:             # <<<<<<<<<<<<<<
 *         exc = ConnectionRefusedError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":30
 *         exc = ConnectionRefusedError
 * 
 *     elif uverr == uv.UV_ECONNRESET:             # <<<<<<<<<<<<<<
 *         exc = ConnectionResetError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ECONNRESET) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":31
 * 
 *     elif uverr == uv.UV_ECONNRESET:
 *         exc = ConnectionResetError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EEXIST:
 */
    __Pyx_INCREF(__pyx_builtin_ConnectionResetError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_ConnectionResetError);

    /* "uvloop/errors.pyx":30
 *         exc = ConnectionRefusedError
 * 
 *     elif uverr == uv.UV_ECONNRESET:             # <<<<<<<<<<<<<<
 *         exc = ConnectionResetError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":33
 *         exc = ConnectionResetError
 * 
 *     elif uverr == uv.UV_EEXIST:             # <<<<<<<<<<<<<<
 *         exc = FileExistsError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_EEXIST) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":34
 * 
 *     elif uverr == uv.UV_EEXIST:
 *         exc = FileExistsError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ENOENT:
 */
    __Pyx_INCREF(__pyx_builtin_FileExistsError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_FileExistsError);

    /* "uvloop/errors.pyx":33
 *         exc = ConnectionResetError
 * 
 *     elif uverr == uv.UV_EEXIST:             # <<<<<<<<<<<<<<
 *         exc = FileExistsError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":36
 *         exc = FileExistsError
 * 
 *     elif uverr == uv.UV_ENOENT:             # <<<<<<<<<<<<<<
 *         exc = FileNotFoundError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ENOENT) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":37
 * 
 *     elif uverr == uv.UV_ENOENT:
 *         exc = FileNotFoundError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EINTR:
 */
    __Pyx_INCREF(__pyx_builtin_FileNotFoundError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_FileNotFoundError);

    /* "uvloop/errors.pyx":36
 *         exc = FileExistsError
 * 
 *     elif uverr == uv.UV_ENOENT:             # <<<<<<<<<<<<<<
 *         exc = FileNotFoundError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":39
 *         exc = FileNotFoundError
 * 
 *     elif uverr == uv.UV_EINTR:             # <<<<<<<<<<<<<<
 *         exc = InterruptedError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_EINTR) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":40
 * 
 *     elif uverr == uv.UV_EINTR:
 *         exc = InterruptedError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EISDIR:
 */
    __Pyx_INCREF(__pyx_builtin_InterruptedError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_InterruptedError);

    /* "uvloop/errors.pyx":39
 *         exc = FileNotFoundError
 * 
 *     elif uverr == uv.UV_EINTR:             # <<<<<<<<<<<<<<
 *         exc = InterruptedError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":42
 *         exc = InterruptedError
 * 
 *     elif uverr == uv.UV_EISDIR:             # <<<<<<<<<<<<<<
 *         exc = IsADirectoryError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_EISDIR) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":43
 * 
 *     elif uverr == uv.UV_EISDIR:
 *         exc = IsADirectoryError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ESRCH:
 */
    __Pyx_INCREF(__pyx_builtin_IsADirectoryError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_IsADirectoryError);

    /* "uvloop/errors.pyx":42
 *         exc = InterruptedError
 * 
 *     elif uverr == uv.UV_EISDIR:             # <<<<<<<<<<<<<<
 *         exc = IsADirectoryError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":45
 *         exc = IsADirectoryError
 * 
 *     elif uverr == uv.UV_ESRCH:             # <<<<<<<<<<<<<<
 *         exc = ProcessLookupError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ESRCH) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":46
 * 
 *     elif uverr == uv.UV_ESRCH:
 *         exc = ProcessLookupError             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_ETIMEDOUT:
 */
    __Pyx_INCREF(__pyx_builtin_ProcessLookupError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_ProcessLookupError);

    /* "uvloop/errors.pyx":45
 *         exc = IsADirectoryError
 * 
 *     elif uverr == uv.UV_ESRCH:             # <<<<<<<<<<<<<<
 *         exc = ProcessLookupError
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":48
 *         exc = ProcessLookupError
 * 
 *     elif uverr == uv.UV_ETIMEDOUT:             # <<<<<<<<<<<<<<
 *         exc = TimeoutError
 * 
 */
  __pyx_t_3 = ((__pyx_v_uverr == UV_ETIMEDOUT) != 0);
  if (__pyx_t_3) {

    /* "uvloop/errors.pyx":49
 * 
 *     elif uverr == uv.UV_ETIMEDOUT:
 *         exc = TimeoutError             # <<<<<<<<<<<<<<
 * 
 *     return exc(oserr, __strerr(oserr))
 */
    __Pyx_INCREF(__pyx_builtin_TimeoutError);
    __Pyx_DECREF_SET(__pyx_v_exc, __pyx_builtin_TimeoutError);

    /* "uvloop/errors.pyx":48
 *         exc = ProcessLookupError
 * 
 *     elif uverr == uv.UV_ETIMEDOUT:             # <<<<<<<<<<<<<<
 *         exc = TimeoutError
 * 
 */
  }
  __pyx_L3:;

  /* "uvloop/errors.pyx":51
 *         exc = TimeoutError
 * 
 *     return exc(oserr, __strerr(oserr))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_oserr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __pyx_f_6uvloop_4loop___strerr(__pyx_v_oserr); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_exc);
  __pyx_t_7 = __pyx_v_exc; __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "uvloop/errors.pyx":5
 * 
 * 
 * cdef __convert_python_error(int uverr):             # <<<<<<<<<<<<<<
 *     # XXX Won't work for Windows:
 *     # From libuv docs:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.__convert_python_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/errors.pyx":54
 * 
 * 
 * cdef int __convert_socket_error(int uverr):             # <<<<<<<<<<<<<<
 *     cdef int sock_err = 0
 * 
 */

static int __pyx_f_6uvloop_4loop___convert_socket_error(int __pyx_v_uverr) {
  int __pyx_v_sock_err;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__convert_socket_error", 0);

  /* "uvloop/errors.pyx":55
 * 
 * cdef int __convert_socket_error(int uverr):
 *     cdef int sock_err = 0             # <<<<<<<<<<<<<<
 * 
 *     if uverr == uv.UV_EAI_ADDRFAMILY:
 */
  __pyx_v_sock_err = 0;

  /* "uvloop/errors.pyx":57
 *     cdef int sock_err = 0
 * 
 *     if uverr == uv.UV_EAI_ADDRFAMILY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_ADDRFAMILY
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_ADDRFAMILY) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":58
 * 
 *     if uverr == uv.UV_EAI_ADDRFAMILY:
 *         sock_err = socket_EAI_ADDRFAMILY             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_AGAIN:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_ADDRFAMILY;

    /* "uvloop/errors.pyx":57
 *     cdef int sock_err = 0
 * 
 *     if uverr == uv.UV_EAI_ADDRFAMILY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_ADDRFAMILY
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":60
 *         sock_err = socket_EAI_ADDRFAMILY
 * 
 *     elif uverr == uv.UV_EAI_AGAIN:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_AGAIN
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_AGAIN) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":61
 * 
 *     elif uverr == uv.UV_EAI_AGAIN:
 *         sock_err = socket_EAI_AGAIN             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_BADFLAGS:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_AGAIN;

    /* "uvloop/errors.pyx":60
 *         sock_err = socket_EAI_ADDRFAMILY
 * 
 *     elif uverr == uv.UV_EAI_AGAIN:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_AGAIN
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":63
 *         sock_err = socket_EAI_AGAIN
 * 
 *     elif uverr == uv.UV_EAI_BADFLAGS:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_BADFLAGS
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_BADFLAGS) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":64
 * 
 *     elif uverr == uv.UV_EAI_BADFLAGS:
 *         sock_err = socket_EAI_BADFLAGS             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_BADHINTS:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_BADFLAGS;

    /* "uvloop/errors.pyx":63
 *         sock_err = socket_EAI_AGAIN
 * 
 *     elif uverr == uv.UV_EAI_BADFLAGS:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_BADFLAGS
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":66
 *         sock_err = socket_EAI_BADFLAGS
 * 
 *     elif uverr == uv.UV_EAI_BADHINTS:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_BADHINTS
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_BADHINTS) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":67
 * 
 *     elif uverr == uv.UV_EAI_BADHINTS:
 *         sock_err = socket_EAI_BADHINTS             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_CANCELED:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_BADHINTS;

    /* "uvloop/errors.pyx":66
 *         sock_err = socket_EAI_BADFLAGS
 * 
 *     elif uverr == uv.UV_EAI_BADHINTS:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_BADHINTS
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":69
 *         sock_err = socket_EAI_BADHINTS
 * 
 *     elif uverr == uv.UV_EAI_CANCELED:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_CANCELED
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_CANCELED) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":70
 * 
 *     elif uverr == uv.UV_EAI_CANCELED:
 *         sock_err = socket_EAI_CANCELED             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_FAIL:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_CANCELED;

    /* "uvloop/errors.pyx":69
 *         sock_err = socket_EAI_BADHINTS
 * 
 *     elif uverr == uv.UV_EAI_CANCELED:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_CANCELED
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":72
 *         sock_err = socket_EAI_CANCELED
 * 
 *     elif uverr == uv.UV_EAI_FAIL:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_FAIL
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_FAIL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":73
 * 
 *     elif uverr == uv.UV_EAI_FAIL:
 *         sock_err = socket_EAI_FAIL             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_FAMILY:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_FAIL;

    /* "uvloop/errors.pyx":72
 *         sock_err = socket_EAI_CANCELED
 * 
 *     elif uverr == uv.UV_EAI_FAIL:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_FAIL
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":75
 *         sock_err = socket_EAI_FAIL
 * 
 *     elif uverr == uv.UV_EAI_FAMILY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_FAMILY
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_FAMILY) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":76
 * 
 *     elif uverr == uv.UV_EAI_FAMILY:
 *         sock_err = socket_EAI_FAMILY             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_MEMORY:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_FAMILY;

    /* "uvloop/errors.pyx":75
 *         sock_err = socket_EAI_FAIL
 * 
 *     elif uverr == uv.UV_EAI_FAMILY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_FAMILY
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":78
 *         sock_err = socket_EAI_FAMILY
 * 
 *     elif uverr == uv.UV_EAI_MEMORY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_MEMORY
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_MEMORY) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":79
 * 
 *     elif uverr == uv.UV_EAI_MEMORY:
 *         sock_err = socket_EAI_MEMORY             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_NODATA:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_MEMORY;

    /* "uvloop/errors.pyx":78
 *         sock_err = socket_EAI_FAMILY
 * 
 *     elif uverr == uv.UV_EAI_MEMORY:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_MEMORY
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":81
 *         sock_err = socket_EAI_MEMORY
 * 
 *     elif uverr == uv.UV_EAI_NODATA:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_NODATA
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_NODATA) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":82
 * 
 *     elif uverr == uv.UV_EAI_NODATA:
 *         sock_err = socket_EAI_NODATA             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_NONAME:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_NODATA;

    /* "uvloop/errors.pyx":81
 *         sock_err = socket_EAI_MEMORY
 * 
 *     elif uverr == uv.UV_EAI_NODATA:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_NODATA
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":84
 *         sock_err = socket_EAI_NODATA
 * 
 *     elif uverr == uv.UV_EAI_NONAME:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_NONAME
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_NONAME) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":85
 * 
 *     elif uverr == uv.UV_EAI_NONAME:
 *         sock_err = socket_EAI_NONAME             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_OVERFLOW:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_NONAME;

    /* "uvloop/errors.pyx":84
 *         sock_err = socket_EAI_NODATA
 * 
 *     elif uverr == uv.UV_EAI_NONAME:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_NONAME
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":87
 *         sock_err = socket_EAI_NONAME
 * 
 *     elif uverr == uv.UV_EAI_OVERFLOW:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_OVERFLOW
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_OVERFLOW) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":88
 * 
 *     elif uverr == uv.UV_EAI_OVERFLOW:
 *         sock_err = socket_EAI_OVERFLOW             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_PROTOCOL:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_OVERFLOW;

    /* "uvloop/errors.pyx":87
 *         sock_err = socket_EAI_NONAME
 * 
 *     elif uverr == uv.UV_EAI_OVERFLOW:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_OVERFLOW
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":90
 *         sock_err = socket_EAI_OVERFLOW
 * 
 *     elif uverr == uv.UV_EAI_PROTOCOL:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_PROTOCOL
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_PROTOCOL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":91
 * 
 *     elif uverr == uv.UV_EAI_PROTOCOL:
 *         sock_err = socket_EAI_PROTOCOL             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_SERVICE:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_PROTOCOL;

    /* "uvloop/errors.pyx":90
 *         sock_err = socket_EAI_OVERFLOW
 * 
 *     elif uverr == uv.UV_EAI_PROTOCOL:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_PROTOCOL
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":93
 *         sock_err = socket_EAI_PROTOCOL
 * 
 *     elif uverr == uv.UV_EAI_SERVICE:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_SERVICE
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_SERVICE) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":94
 * 
 *     elif uverr == uv.UV_EAI_SERVICE:
 *         sock_err = socket_EAI_SERVICE             # <<<<<<<<<<<<<<
 * 
 *     elif uverr == uv.UV_EAI_SOCKTYPE:
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_SERVICE;

    /* "uvloop/errors.pyx":93
 *         sock_err = socket_EAI_PROTOCOL
 * 
 *     elif uverr == uv.UV_EAI_SERVICE:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_SERVICE
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/errors.pyx":96
 *         sock_err = socket_EAI_SERVICE
 * 
 *     elif uverr == uv.UV_EAI_SOCKTYPE:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_SOCKTYPE
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_EAI_SOCKTYPE) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":97
 * 
 *     elif uverr == uv.UV_EAI_SOCKTYPE:
 *         sock_err = socket_EAI_SOCKTYPE             # <<<<<<<<<<<<<<
 * 
 *     return sock_err
 */
    __pyx_v_sock_err = __pyx_v_6uvloop_4loop_socket_EAI_SOCKTYPE;

    /* "uvloop/errors.pyx":96
 *         sock_err = socket_EAI_SERVICE
 * 
 *     elif uverr == uv.UV_EAI_SOCKTYPE:             # <<<<<<<<<<<<<<
 *         sock_err = socket_EAI_SOCKTYPE
 * 
 */
  }
  __pyx_L3:;

  /* "uvloop/errors.pyx":99
 *         sock_err = socket_EAI_SOCKTYPE
 * 
 *     return sock_err             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_sock_err;
  goto __pyx_L0;

  /* "uvloop/errors.pyx":54
 * 
 * 
 * cdef int __convert_socket_error(int uverr):             # <<<<<<<<<<<<<<
 *     cdef int sock_err = 0
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/errors.pyx":102
 * 
 * 
 * cdef convert_error(int uverr):             # <<<<<<<<<<<<<<
 *     cdef int sock_err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_convert_error(int __pyx_v_uverr) {
  int __pyx_v_sock_err;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("convert_error", 0);

  /* "uvloop/errors.pyx":105
 *     cdef int sock_err
 * 
 *     if uverr == uv.UV_ECANCELED:             # <<<<<<<<<<<<<<
 *         return aio_CancelledError()
 * 
 */
  __pyx_t_1 = ((__pyx_v_uverr == UV_ECANCELED) != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":106
 * 
 *     if uverr == uv.UV_ECANCELED:
 *         return aio_CancelledError()             # <<<<<<<<<<<<<<
 * 
 *     sock_err = __convert_socket_error(uverr)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_CancelledError);
    __pyx_t_3 = __pyx_v_6uvloop_4loop_aio_CancelledError; __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "uvloop/errors.pyx":105
 *     cdef int sock_err
 * 
 *     if uverr == uv.UV_ECANCELED:             # <<<<<<<<<<<<<<
 *         return aio_CancelledError()
 * 
 */
  }

  /* "uvloop/errors.pyx":108
 *         return aio_CancelledError()
 * 
 *     sock_err = __convert_socket_error(uverr)             # <<<<<<<<<<<<<<
 *     if sock_err:
 *         msg = system.gai_strerror(sock_err).decode('utf-8')
 */
  __pyx_v_sock_err = __pyx_f_6uvloop_4loop___convert_socket_error(__pyx_v_uverr);

  /* "uvloop/errors.pyx":109
 * 
 *     sock_err = __convert_socket_error(uverr)
 *     if sock_err:             # <<<<<<<<<<<<<<
 *         msg = system.gai_strerror(sock_err).decode('utf-8')
 *         return socket_gaierror(sock_err, msg)
 */
  __pyx_t_1 = (__pyx_v_sock_err != 0);
  if (__pyx_t_1) {

    /* "uvloop/errors.pyx":110
 *     sock_err = __convert_socket_error(uverr)
 *     if sock_err:
 *         msg = system.gai_strerror(sock_err).decode('utf-8')             # <<<<<<<<<<<<<<
 *         return socket_gaierror(sock_err, msg)
 * 
 */
    __pyx_t_5 = gai_strerror(__pyx_v_sock_err);
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_msg = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/errors.pyx":111
 *     if sock_err:
 *         msg = system.gai_strerror(sock_err).decode('utf-8')
 *         return socket_gaierror(sock_err, msg)             # <<<<<<<<<<<<<<
 * 
 *     return __convert_python_error(uverr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_sock_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_socket_gaierror);
    __pyx_t_4 = __pyx_v_6uvloop_4loop_socket_gaierror; __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_GIVEREF(__pyx_v_msg);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_msg);
    __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "uvloop/errors.pyx":109
 * 
 *     sock_err = __convert_socket_error(uverr)
 *     if sock_err:             # <<<<<<<<<<<<<<
 *         msg = system.gai_strerror(sock_err).decode('utf-8')
 *         return socket_gaierror(sock_err, msg)
 */
  }

  /* "uvloop/errors.pyx":113
 *         return socket_gaierror(sock_err, msg)
 * 
 *     return __convert_python_error(uverr)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6uvloop_4loop___convert_python_error(__pyx_v_uverr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/errors.pyx":102
 * 
 * 
 * cdef convert_error(int uverr):             # <<<<<<<<<<<<<<
 *     cdef int sock_err
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.convert_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":40
 * @cython.no_gc_clear
 * cdef class Loop:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_4Loop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_4Loop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop___cinit__(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_4Loop___cinit__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  int __pyx_v_err;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/loop.pyx":44
 * 
 *         # Install PyMem* memory allocators if they aren't installed yet.
 *         __install_pymem()             # <<<<<<<<<<<<<<
 * 
 *         self.uvloop = <uv.uv_loop_t*> \
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___install_pymem(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":46
 *         __install_pymem()
 * 
 *         self.uvloop = <uv.uv_loop_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_loop_t))
 *         if self.uvloop is NULL:
 */
  __pyx_v_self->uvloop = ((uv_loop_t *)PyMem_Malloc((sizeof(uv_loop_t))));

  /* "uvloop/loop.pyx":48
 *         self.uvloop = <uv.uv_loop_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_loop_t))
 *         if self.uvloop is NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->uvloop == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":49
 *                             PyMem_Malloc(sizeof(uv.uv_loop_t))
 *         if self.uvloop is NULL:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         self._closed = 0
 */
    PyErr_NoMemory(); __PYX_ERR(2, 49, __pyx_L1_error)

    /* "uvloop/loop.pyx":48
 *         self.uvloop = <uv.uv_loop_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_loop_t))
 *         if self.uvloop is NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  }

  /* "uvloop/loop.pyx":51
 *             raise MemoryError()
 * 
 *         self._closed = 0             # <<<<<<<<<<<<<<
 *         self._debug = 0
 *         self._thread_is_main = 0
 */
  __pyx_v_self->_closed = 0;

  /* "uvloop/loop.pyx":52
 * 
 *         self._closed = 0
 *         self._debug = 0             # <<<<<<<<<<<<<<
 *         self._thread_is_main = 0
 *         self._thread_id = 0
 */
  __pyx_v_self->_debug = 0;

  /* "uvloop/loop.pyx":53
 *         self._closed = 0
 *         self._debug = 0
 *         self._thread_is_main = 0             # <<<<<<<<<<<<<<
 *         self._thread_id = 0
 *         self._running = 0
 */
  __pyx_v_self->_thread_is_main = 0;

  /* "uvloop/loop.pyx":54
 *         self._debug = 0
 *         self._thread_is_main = 0
 *         self._thread_id = 0             # <<<<<<<<<<<<<<
 *         self._running = 0
 *         self._stopping = 0
 */
  __pyx_v_self->_thread_id = 0;

  /* "uvloop/loop.pyx":55
 *         self._thread_is_main = 0
 *         self._thread_id = 0
 *         self._running = 0             # <<<<<<<<<<<<<<
 *         self._stopping = 0
 * 
 */
  __pyx_v_self->_running = 0;

  /* "uvloop/loop.pyx":56
 *         self._thread_id = 0
 *         self._running = 0
 *         self._stopping = 0             # <<<<<<<<<<<<<<
 * 
 *         self._custom_sigint = 0
 */
  __pyx_v_self->_stopping = 0;

  /* "uvloop/loop.pyx":58
 *         self._stopping = 0
 * 
 *         self._custom_sigint = 0             # <<<<<<<<<<<<<<
 *         self._sigint_check = 0
 *         self._signal_handlers = dict()
 */
  __pyx_v_self->_custom_sigint = 0;

  /* "uvloop/loop.pyx":59
 * 
 *         self._custom_sigint = 0
 *         self._sigint_check = 0             # <<<<<<<<<<<<<<
 *         self._signal_handlers = dict()
 * 
 */
  __pyx_v_self->_sigint_check = 0;

  /* "uvloop/loop.pyx":60
 *         self._custom_sigint = 0
 *         self._sigint_check = 0
 *         self._signal_handlers = dict()             # <<<<<<<<<<<<<<
 * 
 *         self._timers = set()
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_signal_handlers);
  __Pyx_DECREF(__pyx_v_self->_signal_handlers);
  __pyx_v_self->_signal_handlers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":62
 *         self._signal_handlers = dict()
 * 
 *         self._timers = set()             # <<<<<<<<<<<<<<
 *         self._polls = dict()
 *         self._polls_gc = dict()
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_timers);
  __Pyx_DECREF(__pyx_v_self->_timers);
  __pyx_v_self->_timers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":63
 * 
 *         self._timers = set()
 *         self._polls = dict()             # <<<<<<<<<<<<<<
 *         self._polls_gc = dict()
 * 
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_polls);
  __Pyx_DECREF(__pyx_v_self->_polls);
  __pyx_v_self->_polls = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":64
 *         self._timers = set()
 *         self._polls = dict()
 *         self._polls_gc = dict()             # <<<<<<<<<<<<<<
 * 
 *         if MAIN_THREAD_ID == PyThread_get_thread_ident():  # XXX
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_polls_gc);
  __Pyx_DECREF(__pyx_v_self->_polls_gc);
  __pyx_v_self->_polls_gc = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":66
 *         self._polls_gc = dict()
 * 
 *         if MAIN_THREAD_ID == PyThread_get_thread_ident():  # XXX             # <<<<<<<<<<<<<<
 *             self.py_signals = SignalsStack()
 *             self.uv_signals = SignalsStack()
 */
  __pyx_t_2 = ((__pyx_v_6uvloop_4loop_MAIN_THREAD_ID == PyThread_get_thread_ident()) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":67
 * 
 *         if MAIN_THREAD_ID == PyThread_get_thread_ident():  # XXX
 *             self.py_signals = SignalsStack()             # <<<<<<<<<<<<<<
 *             self.uv_signals = SignalsStack()
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_SignalsStack), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->py_signals);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->py_signals));
    __pyx_v_self->py_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":68
 *         if MAIN_THREAD_ID == PyThread_get_thread_ident():  # XXX
 *             self.py_signals = SignalsStack()
 *             self.uv_signals = SignalsStack()             # <<<<<<<<<<<<<<
 * 
 *             self.py_signals.save()
 */
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_SignalsStack), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->uv_signals);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->uv_signals));
    __pyx_v_self->uv_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":70
 *             self.uv_signals = SignalsStack()
 * 
 *             self.py_signals.save()             # <<<<<<<<<<<<<<
 *         else:
 *             self.py_signals = None
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack *)__pyx_v_self->py_signals->__pyx_vtab)->save(__pyx_v_self->py_signals); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":66
 *         self._polls_gc = dict()
 * 
 *         if MAIN_THREAD_ID == PyThread_get_thread_ident():  # XXX             # <<<<<<<<<<<<<<
 *             self.py_signals = SignalsStack()
 *             self.uv_signals = SignalsStack()
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":72
 *             self.py_signals.save()
 *         else:
 *             self.py_signals = None             # <<<<<<<<<<<<<<
 *             self.uv_signals = None
 * 
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->py_signals);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->py_signals));
    __pyx_v_self->py_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)Py_None);

    /* "uvloop/loop.pyx":73
 *         else:
 *             self.py_signals = None
 *             self.uv_signals = None             # <<<<<<<<<<<<<<
 * 
 *         self._executing_py_code = 0
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->uv_signals);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->uv_signals));
    __pyx_v_self->uv_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)Py_None);
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":75
 *             self.uv_signals = None
 * 
 *         self._executing_py_code = 0             # <<<<<<<<<<<<<<
 * 
 *         self._recv_buffer_in_use = 0
 */
  __pyx_v_self->_executing_py_code = 0;

  /* "uvloop/loop.pyx":77
 *         self._executing_py_code = 0
 * 
 *         self._recv_buffer_in_use = 0             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_loop_init(self.uvloop)
 */
  __pyx_v_self->_recv_buffer_in_use = 0;

  /* "uvloop/loop.pyx":79
 *         self._recv_buffer_in_use = 0
 * 
 *         err = uv.uv_loop_init(self.uvloop)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
  __pyx_v_err = uv_loop_init(__pyx_v_self->uvloop);

  /* "uvloop/loop.pyx":80
 * 
 *         err = uv.uv_loop_init(self.uvloop)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 *         self.uvloop.data = <void*> self
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":81
 *         err = uv.uv_loop_init(self.uvloop)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 *         self.uvloop.data = <void*> self
 * 
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 81, __pyx_L1_error)

    /* "uvloop/loop.pyx":80
 * 
 *         err = uv.uv_loop_init(self.uvloop)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 *         self.uvloop.data = <void*> self
 */
  }

  /* "uvloop/loop.pyx":82
 *         if err < 0:
 *             raise convert_error(err)
 *         self.uvloop.data = <void*> self             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
  __pyx_v_self->uvloop->data = ((void *)__pyx_v_self);

  /* "uvloop/loop.pyx":122
 *             self._debug_exception_handler_cnt = 0
 * 
 *         self._last_error = None             # <<<<<<<<<<<<<<
 * 
 *         self._task_factory = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_last_error);
  __Pyx_DECREF(__pyx_v_self->_last_error);
  __pyx_v_self->_last_error = Py_None;

  /* "uvloop/loop.pyx":124
 *         self._last_error = None
 * 
 *         self._task_factory = None             # <<<<<<<<<<<<<<
 *         self._exception_handler = None
 *         self._default_executor = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_task_factory);
  __Pyx_DECREF(__pyx_v_self->_task_factory);
  __pyx_v_self->_task_factory = Py_None;

  /* "uvloop/loop.pyx":125
 * 
 *         self._task_factory = None
 *         self._exception_handler = None             # <<<<<<<<<<<<<<
 *         self._default_executor = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_exception_handler);
  __Pyx_DECREF(__pyx_v_self->_exception_handler);
  __pyx_v_self->_exception_handler = Py_None;

  /* "uvloop/loop.pyx":126
 *         self._task_factory = None
 *         self._exception_handler = None
 *         self._default_executor = None             # <<<<<<<<<<<<<<
 * 
 *         self._ready = col_deque()
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_default_executor);
  __Pyx_DECREF(__pyx_v_self->_default_executor);
  __pyx_v_self->_default_executor = Py_None;

  /* "uvloop/loop.pyx":128
 *         self._default_executor = None
 * 
 *         self._ready = col_deque()             # <<<<<<<<<<<<<<
 *         self._ready_len = 0
 * 
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_col_deque);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_col_deque; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 128, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 128, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ready);
  __Pyx_DECREF(__pyx_v_self->_ready);
  __pyx_v_self->_ready = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":129
 * 
 *         self._ready = col_deque()
 *         self._ready_len = 0             # <<<<<<<<<<<<<<
 * 
 *         self.handler_async = UVAsync.new(
 */
  __pyx_v_self->_ready_len = 0;

  /* "uvloop/loop.pyx":131
 *         self._ready_len = 0
 * 
 *         self.handler_async = UVAsync.new(             # <<<<<<<<<<<<<<
 *             self, <method_t*>&self._on_wake, self)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_7UVAsync_new(__pyx_v_self, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_on_wake)), ((PyObject *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->handler_async);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_async));
  __pyx_v_self->handler_async = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":136
 *         self.handler_idle = UVIdle.new(
 *             self,
 *             new_MethodHandle(             # <<<<<<<<<<<<<<
 *                 self, "loop._on_idle", <method_t*>&self._on_idle, self))
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_new_MethodHandle(__pyx_v_self, __pyx_kp_u_loop__on_idle, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_on_idle)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 136, __pyx_L1_error)

  /* "uvloop/loop.pyx":134
 *             self, <method_t*>&self._on_wake, self)
 * 
 *         self.handler_idle = UVIdle.new(             # <<<<<<<<<<<<<<
 *             self,
 *             new_MethodHandle(
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6uvloop_4loop_6UVIdle_new(__pyx_v_self, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->handler_idle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_idle));
  __pyx_v_self->handler_idle = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":141
 *         self.handler_sigint = UVSignal.new(
 *             self,
 *             new_MethodHandle(             # <<<<<<<<<<<<<<
 *                 self, "loop._on_sigint", <method_t*>&self._on_sigint, self),
 *             uv.SIGINT)
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_new_MethodHandle(__pyx_v_self, __pyx_kp_u_loop__on_sigint, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_on_sigint)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 141, __pyx_L1_error)

  /* "uvloop/loop.pyx":139
 *                 self, "loop._on_idle", <method_t*>&self._on_idle, self))
 * 
 *         self.handler_sigint = UVSignal.new(             # <<<<<<<<<<<<<<
 *             self,
 *             new_MethodHandle(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_8UVSignal_new(__pyx_v_self, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_3), SIGINT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->handler_sigint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_sigint));
  __pyx_v_self->handler_sigint = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":147
 *         self.handler_sighup = UVSignal.new(
 *             self,
 *             new_MethodHandle(             # <<<<<<<<<<<<<<
 *                 self, "loop._on_sighup", <method_t*>&self._on_sighup, self),
 *             uv.SIGHUP)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_new_MethodHandle(__pyx_v_self, __pyx_kp_u_loop__on_sighup, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_on_sighup)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 147, __pyx_L1_error)

  /* "uvloop/loop.pyx":145
 *             uv.SIGINT)
 * 
 *         self.handler_sighup = UVSignal.new(             # <<<<<<<<<<<<<<
 *             self,
 *             new_MethodHandle(
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6uvloop_4loop_8UVSignal_new(__pyx_v_self, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1), SIGHUP)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->handler_sighup);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_sighup));
  __pyx_v_self->handler_sighup = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":151
 *             uv.SIGHUP)
 * 
 *         uv.uv_disable_stdio_inheritance()             # <<<<<<<<<<<<<<
 * 
 *         self._coroutine_wrapper_set = False
 */
  uv_disable_stdio_inheritance();

  /* "uvloop/loop.pyx":153
 *         uv.uv_disable_stdio_inheritance()
 * 
 *         self._coroutine_wrapper_set = False             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __pyx_v_self->_coroutine_wrapper_set = 0;

  /* "uvloop/loop.pyx":40
 * @cython.no_gc_clear
 * cdef class Loop:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":155
 *         self._coroutine_wrapper_set = False
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.set_debug((not sys_ignore_environment
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_4Loop_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_4Loop_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_2__init__(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_4Loop_2__init__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "uvloop/loop.pyx":156
 * 
 *     def __init__(self):
 *         self.set_debug((not sys_ignore_environment             # <<<<<<<<<<<<<<
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/loop.pyx":157
 *     def __init__(self):
 *         self.set_debug((not sys_ignore_environment
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_6uvloop_4loop_sys_ignore_environment); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 157, __pyx_L1_error)

  /* "uvloop/loop.pyx":156
 * 
 *     def __init__(self):
 *         self.set_debug((not sys_ignore_environment             # <<<<<<<<<<<<<<
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 * 
 */
  __pyx_t_5 = (!__pyx_t_4);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "uvloop/loop.pyx":157
 *     def __init__(self):
 *         self.set_debug((not sys_ignore_environment
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_os_environ, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyBool_FromLong((!(!__pyx_t_5))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_3 = __pyx_t_7;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":155
 *         self._coroutine_wrapper_set = False
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.set_debug((not sys_ignore_environment
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.Loop.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":159
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')
 */

/* Python wrapper */
static void __pyx_pw_6uvloop_4loop_4Loop_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6uvloop_4loop_4Loop_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_6uvloop_4loop_4Loop_4__dealloc__(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6uvloop_4loop_4Loop_4__dealloc__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "uvloop/loop.pyx":160
 * 
 *     def __dealloc__(self):
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:
 */
  __pyx_t_1 = ((__pyx_v_self->_running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":161
 *     def __dealloc__(self):
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')             # <<<<<<<<<<<<<<
 *         if self._closed == 0:
 *             aio_logger.error("deallocating an open event loop")
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 161, __pyx_L1_error)

    /* "uvloop/loop.pyx":160
 * 
 *     def __dealloc__(self):
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:
 */
  }

  /* "uvloop/loop.pyx":162
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:             # <<<<<<<<<<<<<<
 *             aio_logger.error("deallocating an open event loop")
 *             return
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":163
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:
 *             aio_logger.error("deallocating an open event loop")             # <<<<<<<<<<<<<<
 *             return
 *         PyMem_Free(self.uvloop)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":164
 *         if self._closed == 0:
 *             aio_logger.error("deallocating an open event loop")
 *             return             # <<<<<<<<<<<<<<
 *         PyMem_Free(self.uvloop)
 *         self.uvloop = NULL
 */
    goto __pyx_L0;

    /* "uvloop/loop.pyx":162
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:             # <<<<<<<<<<<<<<
 *             aio_logger.error("deallocating an open event loop")
 *             return
 */
  }

  /* "uvloop/loop.pyx":165
 *             aio_logger.error("deallocating an open event loop")
 *             return
 *         PyMem_Free(self.uvloop)             # <<<<<<<<<<<<<<
 *         self.uvloop = NULL
 * 
 */
  PyMem_Free(__pyx_v_self->uvloop);

  /* "uvloop/loop.pyx":166
 *             return
 *         PyMem_Free(self.uvloop)
 *         self.uvloop = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_wake(self):
 */
  __pyx_v_self->uvloop = NULL;

  /* "uvloop/loop.pyx":159
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("uvloop.loop.Loop.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/loop.pyx":168
 *         self.uvloop = NULL
 * 
 *     cdef _on_wake(self):             # <<<<<<<<<<<<<<
 *         if (self._ready_len > 0 or self._stopping) \
 *                             and not self.handler_idle.running:
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_wake(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_on_wake", 0);

  /* "uvloop/loop.pyx":169
 * 
 *     cdef _on_wake(self):
 *         if (self._ready_len > 0 or self._stopping) \             # <<<<<<<<<<<<<<
 *                             and not self.handler_idle.running:
 *             self.handler_idle.start()
 */
  __pyx_t_2 = ((__pyx_v_self->_ready_len > 0) != 0);
  if (!__pyx_t_2) {
  } else {
    goto __pyx_L5_next_and;
  }
  __pyx_t_2 = (__pyx_v_self->_stopping != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_L5_next_and:;

  /* "uvloop/loop.pyx":170
 *     cdef _on_wake(self):
 *         if (self._ready_len > 0 or self._stopping) \
 *                             and not self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.start()
 * 
 */
  __pyx_t_2 = ((!(__pyx_v_self->handler_idle->running != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "uvloop/loop.pyx":169
 * 
 *     cdef _on_wake(self):
 *         if (self._ready_len > 0 or self._stopping) \             # <<<<<<<<<<<<<<
 *                             and not self.handler_idle.running:
 *             self.handler_idle.start()
 */
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":171
 *         if (self._ready_len > 0 or self._stopping) \
 *                             and not self.handler_idle.running:
 *             self.handler_idle.start()             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_sigint(self):
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVIdle_start(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":169
 * 
 *     cdef _on_wake(self):
 *         if (self._ready_len > 0 or self._stopping) \             # <<<<<<<<<<<<<<
 *                             and not self.handler_idle.running:
 *             self.handler_idle.start()
 */
  }

  /* "uvloop/loop.pyx":168
 *         self.uvloop = NULL
 * 
 *     cdef _on_wake(self):             # <<<<<<<<<<<<<<
 *         if (self._ready_len > 0 or self._stopping) \
 *                             and not self.handler_idle.running:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Loop._on_wake", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":173
 *             self.handler_idle.start()
 * 
 *     cdef _on_sigint(self):             # <<<<<<<<<<<<<<
 *         try:
 *             uvs = self._signal_handlers[uv.SIGINT]
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_sigint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_v_uvs = NULL;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  char const *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  __Pyx_RefNannySetupContext("_on_sigint", 0);

  /* "uvloop/loop.pyx":174
 * 
 *     cdef _on_sigint(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGINT]
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "uvloop/loop.pyx":175
 *     cdef _on_sigint(self):
 *         try:
 *             uvs = self._signal_handlers[uv.SIGINT]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             pass
 */
      if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 175, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyInt_From_int(SIGINT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 175, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_signal_handlers, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 175, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_uvs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":174
 * 
 *     cdef _on_sigint(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGINT]
 *         except KeyError:
 */
    }

    /* "uvloop/loop.pyx":179
 *             pass
 *         else:
 *             (<UVSignal>uvs).h._run()             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_6uvloop_4loop_6Handle__run(((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_v_uvs)->h); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 179, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":180
 *         else:
 *             (<UVSignal>uvs).h._run()
 *             return             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L6_except_return;
    }
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":176
 *         try:
 *             uvs = self._signal_handlers[uv.SIGINT]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             pass
 *         else:
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/loop.pyx":174
 * 
 *     cdef _on_sigint(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGINT]
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
  }

  /* "uvloop/loop.pyx":182
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_1);
    /*try:*/ {

      /* "uvloop/loop.pyx":183
 * 
 *         try:
 *             PyErr_CheckSignals()             # <<<<<<<<<<<<<<
 *         except KeyboardInterrupt as ex:
 *             self._stop(ex)
 */
      __pyx_t_6 = PyErr_CheckSignals(); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(2, 183, __pyx_L11_error)

      /* "uvloop/loop.pyx":182
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:
 */
    }

    /* "uvloop/loop.pyx":187
 *             self._stop(ex)
 *         else:
 *             self._stop(KeyboardInterrupt())             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_sighup(self):
 */
    /*else:*/ {
      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_builtin_KeyboardInterrupt); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 187, __pyx_L13_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 187, __pyx_L13_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L18_try_end;
    __pyx_L11_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":184
 *         try:
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:             # <<<<<<<<<<<<<<
 *             self._stop(ex)
 *         else:
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyboardInterrupt);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.Loop._on_sigint", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(2, 184, __pyx_L13_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_ex = __pyx_t_5;
      /*try:*/ {

        /* "uvloop/loop.pyx":185
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:
 *             self._stop(ex)             # <<<<<<<<<<<<<<
 *         else:
 *             self._stop(KeyboardInterrupt())
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop(__pyx_v_self, __pyx_v_ex); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 185, __pyx_L24_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }

      /* "uvloop/loop.pyx":184
 *         try:
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:             # <<<<<<<<<<<<<<
 *             self._stop(ex)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L25;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L24_error:;
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __pyx_t_6 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          }
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
          goto __pyx_L13_except_error;
        }
        __pyx_L25:;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L12_exception_handled;
    }
    goto __pyx_L13_except_error;
    __pyx_L13_except_error:;

    /* "uvloop/loop.pyx":182
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             PyErr_CheckSignals()
 *         except KeyboardInterrupt as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    goto __pyx_L1_error;
    __pyx_L12_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    __pyx_L18_try_end:;
  }

  /* "uvloop/loop.pyx":173
 *             self.handler_idle.start()
 * 
 *     cdef _on_sigint(self):             # <<<<<<<<<<<<<<
 *         try:
 *             uvs = self._signal_handlers[uv.SIGINT]
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._on_sigint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_uvs);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":189
 *             self._stop(KeyboardInterrupt())
 * 
 *     cdef _on_sighup(self):             # <<<<<<<<<<<<<<
 *         try:
 *             uvs = self._signal_handlers[uv.SIGHUP]
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_sighup(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_v_uvs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_on_sighup", 0);

  /* "uvloop/loop.pyx":190
 * 
 *     cdef _on_sighup(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGHUP]
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "uvloop/loop.pyx":191
 *     cdef _on_sighup(self):
 *         try:
 *             uvs = self._signal_handlers[uv.SIGHUP]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             pass
 */
      if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 191, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyInt_From_int(SIGHUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 191, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_signal_handlers, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 191, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_uvs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":190
 * 
 *     cdef _on_sighup(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGHUP]
 *         except KeyError:
 */
    }

    /* "uvloop/loop.pyx":195
 *             pass
 *         else:
 *             (<UVSignal>uvs).h._run()             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_6uvloop_4loop_6Handle__run(((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_v_uvs)->h); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 195, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":196
 *         else:
 *             (<UVSignal>uvs).h._run()
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._stop(SystemExit())
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L6_except_return;
    }
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":192
 *         try:
 *             uvs = self._signal_handlers[uv.SIGHUP]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             pass
 *         else:
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/loop.pyx":190
 * 
 *     cdef _on_sighup(self):
 *         try:             # <<<<<<<<<<<<<<
 *             uvs = self._signal_handlers[uv.SIGHUP]
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
  }

  /* "uvloop/loop.pyx":198
 *             return
 * 
 *         self._stop(SystemExit())             # <<<<<<<<<<<<<<
 * 
 *     cdef _check_sigint(self):
 */
  __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_builtin_SystemExit); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":189
 *             self._stop(KeyboardInterrupt())
 * 
 *     cdef _on_sighup(self):             # <<<<<<<<<<<<<<
 *         try:
 *             uvs = self._signal_handlers[uv.SIGHUP]
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop._on_sighup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_uvs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":200
 *         self._stop(SystemExit())
 * 
 *     cdef _check_sigint(self):             # <<<<<<<<<<<<<<
 *         self.uv_signals.save()
 *         __signal_set_sigint()
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__check_sigint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_check_sigint", 0);

  /* "uvloop/loop.pyx":201
 * 
 *     cdef _check_sigint(self):
 *         self.uv_signals.save()             # <<<<<<<<<<<<<<
 *         __signal_set_sigint()
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack *)__pyx_v_self->uv_signals->__pyx_vtab)->save(__pyx_v_self->uv_signals); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":202
 *     cdef _check_sigint(self):
 *         self.uv_signals.save()
 *         __signal_set_sigint()             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_idle(self):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___signal_set_sigint(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":200
 *         self._stop(SystemExit())
 * 
 *     cdef _check_sigint(self):             # <<<<<<<<<<<<<<
 *         self.uv_signals.save()
 *         __signal_set_sigint()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop._check_sigint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":204
 *         __signal_set_sigint()
 * 
 *     cdef _on_idle(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int i, ntodo
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__on_idle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  CYTHON_UNUSED int __pyx_v_i;
  int __pyx_v_ntodo;
  PyObject *__pyx_v_popleft = 0;
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handler = 0;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_fd = NULL;
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  __Pyx_RefNannySetupContext("_on_idle", 0);

  /* "uvloop/loop.pyx":207
 *         cdef:
 *             int i, ntodo
 *             object popleft = self._ready.popleft             # <<<<<<<<<<<<<<
 *             Handle handler
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ready, __pyx_n_s_popleft); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_popleft = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":210
 *             Handle handler
 * 
 *         if self._sigint_check == 0 and self._thread_is_main == 1:             # <<<<<<<<<<<<<<
 *             self._sigint_check = 1
 *             self._check_sigint()
 */
  __pyx_t_3 = ((__pyx_v_self->_sigint_check == 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_self->_thread_is_main == 1) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":211
 * 
 *         if self._sigint_check == 0 and self._thread_is_main == 1:
 *             self._sigint_check = 1             # <<<<<<<<<<<<<<
 *             self._check_sigint()
 * 
 */
    __pyx_v_self->_sigint_check = 1;

    /* "uvloop/loop.pyx":212
 *         if self._sigint_check == 0 and self._thread_is_main == 1:
 *             self._sigint_check = 1
 *             self._check_sigint()             # <<<<<<<<<<<<<<
 * 
 *         ntodo = len(self._ready)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_check_sigint(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":210
 *             Handle handler
 * 
 *         if self._sigint_check == 0 and self._thread_is_main == 1:             # <<<<<<<<<<<<<<
 *             self._sigint_check = 1
 *             self._check_sigint()
 */
  }

  /* "uvloop/loop.pyx":214
 *             self._check_sigint()
 * 
 *         ntodo = len(self._ready)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < ntodo:
 *             handler = <Handle> popleft()
 */
  __pyx_t_1 = __pyx_v_self->_ready;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(2, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ntodo = __pyx_t_4;

  /* "uvloop/loop.pyx":215
 * 
 *         ntodo = len(self._ready)
 *         for i from 0 <= i < ntodo:             # <<<<<<<<<<<<<<
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:
 */
  __pyx_t_5 = __pyx_v_ntodo;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

    /* "uvloop/loop.pyx":216
 *         ntodo = len(self._ready)
 *         for i from 0 <= i < ntodo:
 *             handler = <Handle> popleft()             # <<<<<<<<<<<<<<
 *             if handler.cancelled == 0:
 *                 try:
 */
    __Pyx_INCREF(__pyx_v_popleft);
    __pyx_t_6 = __pyx_v_popleft; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 216, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 216, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_handler, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_6));
    __pyx_t_6 = 0;

    /* "uvloop/loop.pyx":217
 *         for i from 0 <= i < ntodo:
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:             # <<<<<<<<<<<<<<
 *                 try:
 *                     handler._run()
 */
    __pyx_t_2 = ((__pyx_v_handler->cancelled == 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":218
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:
 *                 try:             # <<<<<<<<<<<<<<
 *                     handler._run()
 *                 except BaseException as ex:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "uvloop/loop.pyx":219
 *             if handler.cancelled == 0:
 *                 try:
 *                     handler._run()             # <<<<<<<<<<<<<<
 *                 except BaseException as ex:
 *                     self._stop(ex)
 */
          __pyx_t_6 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_handler); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 219, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/loop.pyx":218
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:
 *                 try:             # <<<<<<<<<<<<<<
 *                     handler._run()
 *                 except BaseException as ex:
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L16_try_end;
        __pyx_L9_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":220
 *                 try:
 *                     handler._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._stop(ex)
 *                     return
 */
        __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_11) {
          __Pyx_AddTraceback("uvloop.loop.Loop._on_idle", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(2, 220, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_1);
          __pyx_v_ex = __pyx_t_1;
          /*try:*/ {

            /* "uvloop/loop.pyx":221
 *                     handler._run()
 *                 except BaseException as ex:
 *                     self._stop(ex)             # <<<<<<<<<<<<<<
 *                     return
 * 
 */
            __pyx_t_12 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop(__pyx_v_self, __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 221, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

            /* "uvloop/loop.pyx":222
 *                 except BaseException as ex:
 *                     self._stop(ex)
 *                     return             # <<<<<<<<<<<<<<
 * 
 *         if len(self._polls_gc):
 */
            __Pyx_XDECREF(__pyx_r);
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L21_return;
          }

          /* "uvloop/loop.pyx":220
 *                 try:
 *                     handler._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._stop(ex)
 *                     return
 */
          /*finally:*/ {
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __pyx_L22_error:;
              __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
              __Pyx_PyThreadState_assign
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_15);
              __Pyx_XGOTREF(__pyx_t_16);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_20);
              __pyx_t_11 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_ex);
                __pyx_v_ex = NULL;
              }
              __Pyx_PyThreadState_assign
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
              }
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_XGIVEREF(__pyx_t_16);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
              __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
              __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
              goto __pyx_L11_except_error;
            }
            __pyx_L21_return: {
              __pyx_t_20 = __pyx_r;
              __pyx_r = 0;
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
              __pyx_r = __pyx_t_20;
              __pyx_t_20 = 0;
              goto __pyx_L12_except_return;
            }
          }
        }
        goto __pyx_L11_except_error;
        __pyx_L11_except_error:;

        /* "uvloop/loop.pyx":218
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:
 *                 try:             # <<<<<<<<<<<<<<
 *                     handler._run()
 *                 except BaseException as ex:
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L12_except_return:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L0;
        __pyx_L16_try_end:;
      }

      /* "uvloop/loop.pyx":217
 *         for i from 0 <= i < ntodo:
 *             handler = <Handle> popleft()
 *             if handler.cancelled == 0:             # <<<<<<<<<<<<<<
 *                 try:
 *                     handler._run()
 */
    }
  }

  /* "uvloop/loop.pyx":224
 *                     return
 * 
 *         if len(self._polls_gc):             # <<<<<<<<<<<<<<
 *             for fd in tuple(self._polls_gc):
 *                 poll = <UVPoll> self._polls_gc[fd]
 */
  __pyx_t_7 = __pyx_v_self->_polls_gc;
  __Pyx_INCREF(__pyx_t_7);
  if (unlikely(__pyx_t_7 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(2, 224, __pyx_L1_error)
  }
  __pyx_t_4 = PyDict_Size(__pyx_t_7); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(2, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = (__pyx_t_4 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":225
 * 
 *         if len(self._polls_gc):
 *             for fd in tuple(self._polls_gc):             # <<<<<<<<<<<<<<
 *                 poll = <UVPoll> self._polls_gc[fd]
 *                 if not poll.is_active():
 */
    __pyx_t_7 = PySequence_Tuple(__pyx_v_self->_polls_gc); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    for (;;) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(2, 225, __pyx_L1_error)
      #else
      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      #endif
      __Pyx_XDECREF_SET(__pyx_v_fd, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "uvloop/loop.pyx":226
 *         if len(self._polls_gc):
 *             for fd in tuple(self._polls_gc):
 *                 poll = <UVPoll> self._polls_gc[fd]             # <<<<<<<<<<<<<<
 *                 if not poll.is_active():
 *                     poll._close()
 */
      if (unlikely(__pyx_v_self->_polls_gc == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 226, __pyx_L1_error)
      }
      __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_self->_polls_gc, __pyx_v_fd); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __pyx_t_7;
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_v_poll, ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_6));
      __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":227
 *             for fd in tuple(self._polls_gc):
 *                 poll = <UVPoll> self._polls_gc[fd]
 *                 if not poll.is_active():             # <<<<<<<<<<<<<<
 *                     poll._close()
 *                     self._polls.pop(fd)
 */
      __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->is_active(__pyx_v_poll) != 0)) != 0);
      if (__pyx_t_2) {

        /* "uvloop/loop.pyx":228
 *                 poll = <UVPoll> self._polls_gc[fd]
 *                 if not poll.is_active():
 *                     poll._close()             # <<<<<<<<<<<<<<
 *                     self._polls.pop(fd)
 *                 self._polls_gc.pop(fd)
 */
        __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 228, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":229
 *                 if not poll.is_active():
 *                     poll._close()
 *                     self._polls.pop(fd)             # <<<<<<<<<<<<<<
 *                 self._polls_gc.pop(fd)
 * 
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_polls, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 229, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_12 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_12)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_12);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_12) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_fd); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 229, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(2, 229, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_21);
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_12); __pyx_t_12 = NULL;
          __Pyx_INCREF(__pyx_v_fd);
          __Pyx_GIVEREF(__pyx_v_fd);
          PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_v_fd);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 229, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":227
 *             for fd in tuple(self._polls_gc):
 *                 poll = <UVPoll> self._polls_gc[fd]
 *                 if not poll.is_active():             # <<<<<<<<<<<<<<
 *                     poll._close()
 *                     self._polls.pop(fd)
 */
      }

      /* "uvloop/loop.pyx":230
 *                     poll._close()
 *                     self._polls.pop(fd)
 *                 self._polls_gc.pop(fd)             # <<<<<<<<<<<<<<
 * 
 *         self._ready_len = len(self._ready)
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_polls_gc, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_21 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_21)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_21);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_21) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_fd); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 230, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 230, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_21); __pyx_t_21 = NULL;
        __Pyx_INCREF(__pyx_v_fd);
        __Pyx_GIVEREF(__pyx_v_fd);
        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_fd);
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 230, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":225
 * 
 *         if len(self._polls_gc):
 *             for fd in tuple(self._polls_gc):             # <<<<<<<<<<<<<<
 *                 poll = <UVPoll> self._polls_gc[fd]
 *                 if not poll.is_active():
 */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":224
 *                     return
 * 
 *         if len(self._polls_gc):             # <<<<<<<<<<<<<<
 *             for fd in tuple(self._polls_gc):
 *                 poll = <UVPoll> self._polls_gc[fd]
 */
  }

  /* "uvloop/loop.pyx":232
 *                 self._polls_gc.pop(fd)
 * 
 *         self._ready_len = len(self._ready)             # <<<<<<<<<<<<<<
 *         if self._ready_len == 0 and self.handler_idle.running:
 *             self.handler_idle.stop()
 */
  __pyx_t_1 = __pyx_v_self->_ready;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_ready_len = __pyx_t_4;

  /* "uvloop/loop.pyx":233
 * 
 *         self._ready_len = len(self._ready)
 *         if self._ready_len == 0 and self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.stop()
 * 
 */
  __pyx_t_3 = ((__pyx_v_self->_ready_len == 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L33_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_self->handler_idle->running != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L33_bool_binop_done:;
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":234
 *         self._ready_len = len(self._ready)
 *         if self._ready_len == 0 and self.handler_idle.running:
 *             self.handler_idle.stop()             # <<<<<<<<<<<<<<
 * 
 *         if self._stopping:
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_6UVIdle_stop(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":233
 * 
 *         self._ready_len = len(self._ready)
 *         if self._ready_len == 0 and self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.stop()
 * 
 */
  }

  /* "uvloop/loop.pyx":236
 *             self.handler_idle.stop()
 * 
 *         if self._stopping:             # <<<<<<<<<<<<<<
 *             uv.uv_stop(self.uvloop)  # void
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_stopping != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":237
 * 
 *         if self._stopping:
 *             uv.uv_stop(self.uvloop)  # void             # <<<<<<<<<<<<<<
 * 
 *     cdef _stop(self, exc):
 */
    uv_stop(__pyx_v_self->uvloop);

    /* "uvloop/loop.pyx":236
 *             self.handler_idle.stop()
 * 
 *         if self._stopping:             # <<<<<<<<<<<<<<
 *             uv.uv_stop(self.uvloop)  # void
 * 
 */
  }

  /* "uvloop/loop.pyx":204
 *         __signal_set_sigint()
 * 
 *     cdef _on_idle(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int i, ntodo
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_AddTraceback("uvloop.loop.Loop._on_idle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_popleft);
  __Pyx_XDECREF((PyObject *)__pyx_v_handler);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":239
 *             uv.uv_stop(self.uvloop)  # void
 * 
 *     cdef _stop(self, exc):             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             self._last_error = exc
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__stop(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_stop", 0);

  /* "uvloop/loop.pyx":240
 * 
 *     cdef _stop(self, exc):
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             self._last_error = exc
 *         if self._stopping == 1:
 */
  __pyx_t_1 = (__pyx_v_exc != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":241
 *     cdef _stop(self, exc):
 *         if exc is not None:
 *             self._last_error = exc             # <<<<<<<<<<<<<<
 *         if self._stopping == 1:
 *             return
 */
    __Pyx_INCREF(__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_v_exc);
    __Pyx_GOTREF(__pyx_v_self->_last_error);
    __Pyx_DECREF(__pyx_v_self->_last_error);
    __pyx_v_self->_last_error = __pyx_v_exc;

    /* "uvloop/loop.pyx":240
 * 
 *     cdef _stop(self, exc):
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             self._last_error = exc
 *         if self._stopping == 1:
 */
  }

  /* "uvloop/loop.pyx":242
 *         if exc is not None:
 *             self._last_error = exc
 *         if self._stopping == 1:             # <<<<<<<<<<<<<<
 *             return
 *         self._stopping = 1
 */
  __pyx_t_2 = ((__pyx_v_self->_stopping == 1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":243
 *             self._last_error = exc
 *         if self._stopping == 1:
 *             return             # <<<<<<<<<<<<<<
 *         self._stopping = 1
 *         if not self.handler_idle.running:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":242
 *         if exc is not None:
 *             self._last_error = exc
 *         if self._stopping == 1:             # <<<<<<<<<<<<<<
 *             return
 *         self._stopping = 1
 */
  }

  /* "uvloop/loop.pyx":244
 *         if self._stopping == 1:
 *             return
 *         self._stopping = 1             # <<<<<<<<<<<<<<
 *         if not self.handler_idle.running:
 *             self.handler_idle.start()
 */
  __pyx_v_self->_stopping = 1;

  /* "uvloop/loop.pyx":245
 *             return
 *         self._stopping = 1
 *         if not self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.start()
 * 
 */
  __pyx_t_2 = ((!(__pyx_v_self->handler_idle->running != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":246
 *         self._stopping = 1
 *         if not self.handler_idle.running:
 *             self.handler_idle.start()             # <<<<<<<<<<<<<<
 * 
 *     cdef __run(self, uv.uv_run_mode mode):
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVIdle_start(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":245
 *             return
 *         self._stopping = 1
 *         if not self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.start()
 * 
 */
  }

  /* "uvloop/loop.pyx":239
 *             uv.uv_stop(self.uvloop)  # void
 * 
 *     cdef _stop(self, exc):             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             self._last_error = exc
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Loop._stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":248
 *             self.handler_idle.start()
 * 
 *     cdef __run(self, uv.uv_run_mode mode):             # <<<<<<<<<<<<<<
 *         global __main_loop__
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop___run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uv_run_mode __pyx_v_mode) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__run", 0);

  /* "uvloop/loop.pyx":251
 *         global __main_loop__
 * 
 *         if self.py_signals is not None:             # <<<<<<<<<<<<<<
 *             # self.py_signals is not None only for the main thread
 *             __main_loop__ = self
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->py_signals) != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":253
 *         if self.py_signals is not None:
 *             # self.py_signals is not None only for the main thread
 *             __main_loop__ = self             # <<<<<<<<<<<<<<
 * 
 *         self._executing_py_code = 0
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_XGOTREF(((PyObject *)__pyx_v_6uvloop_4loop___main_loop__));
    __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop___main_loop__, __pyx_v_self);
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));

    /* "uvloop/loop.pyx":251
 *         global __main_loop__
 * 
 *         if self.py_signals is not None:             # <<<<<<<<<<<<<<
 *             # self.py_signals is not None only for the main thread
 *             __main_loop__ = self
 */
  }

  /* "uvloop/loop.pyx":255
 *             __main_loop__ = self
 * 
 *         self._executing_py_code = 0             # <<<<<<<<<<<<<<
 *         # Although every UVHandle holds a reference to the loop,
 *         # we want to do everything to ensure that the loop will
 */
  __pyx_v_self->_executing_py_code = 0;

  /* "uvloop/loop.pyx":260
 *         # never deallocate during the run -- so we do some
 *         # manual refs management.
 *         Py_INCREF(self)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             err = uv.uv_run(self.uvloop, mode)
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/loop.pyx":261
 *         # manual refs management.
 *         Py_INCREF(self)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             err = uv.uv_run(self.uvloop, mode)
 *         Py_DECREF(self)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      #endif
      /*try:*/ {

        /* "uvloop/loop.pyx":262
 *         Py_INCREF(self)
 *         with nogil:
 *             err = uv.uv_run(self.uvloop, mode)             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 *         self._executing_py_code = 1
 */
        __pyx_v_err = uv_run(__pyx_v_self->uvloop, __pyx_v_mode);
      }

      /* "uvloop/loop.pyx":261
 *         # manual refs management.
 *         Py_INCREF(self)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             err = uv.uv_run(self.uvloop, mode)
 *         Py_DECREF(self)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "uvloop/loop.pyx":263
 *         with nogil:
 *             err = uv.uv_run(self.uvloop, mode)
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 *         self._executing_py_code = 1
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/loop.pyx":264
 *             err = uv.uv_run(self.uvloop, mode)
 *         Py_DECREF(self)
 *         self._executing_py_code = 1             # <<<<<<<<<<<<<<
 * 
 *         if self.py_signals is not None:
 */
  __pyx_v_self->_executing_py_code = 1;

  /* "uvloop/loop.pyx":266
 *         self._executing_py_code = 1
 * 
 *         if self.py_signals is not None:             # <<<<<<<<<<<<<<
 *             # self.py_signals is not None only for the main thread
 *             self.py_signals.restore()
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->py_signals) != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":268
 *         if self.py_signals is not None:
 *             # self.py_signals is not None only for the main thread
 *             self.py_signals.restore()             # <<<<<<<<<<<<<<
 *             __main_loop__ = None
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack *)__pyx_v_self->py_signals->__pyx_vtab)->restore(__pyx_v_self->py_signals); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":269
 *             # self.py_signals is not None only for the main thread
 *             self.py_signals.restore()
 *             __main_loop__ = None             # <<<<<<<<<<<<<<
 * 
 *         if err < 0:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_XGOTREF(((PyObject *)__pyx_v_6uvloop_4loop___main_loop__));
    __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop___main_loop__, ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None));
    __Pyx_GIVEREF(Py_None);

    /* "uvloop/loop.pyx":266
 *         self._executing_py_code = 1
 * 
 *         if self.py_signals is not None:             # <<<<<<<<<<<<<<
 *             # self.py_signals is not None only for the main thread
 *             self.py_signals.restore()
 */
  }

  /* "uvloop/loop.pyx":271
 *             __main_loop__ = None
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":272
 * 
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     cdef _run(self, uv.uv_run_mode mode):
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 272, __pyx_L1_error)

    /* "uvloop/loop.pyx":271
 *             __main_loop__ = None
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  }

  /* "uvloop/loop.pyx":248
 *             self.handler_idle.start()
 * 
 *     cdef __run(self, uv.uv_run_mode mode):             # <<<<<<<<<<<<<<
 *         global __main_loop__
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Loop.__run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":274
 *             raise convert_error(err)
 * 
 *     cdef _run(self, uv.uv_run_mode mode):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uv_run_mode __pyx_v_mode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_run", 0);

  /* "uvloop/loop.pyx":277
 *         cdef int err
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unable to start the loop; it was closed')
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":278
 * 
 *         if self._closed == 1:
 *             raise RuntimeError('unable to start the loop; it was closed')             # <<<<<<<<<<<<<<
 * 
 *         if self._running == 1:
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 278, __pyx_L1_error)

    /* "uvloop/loop.pyx":277
 *         cdef int err
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unable to start the loop; it was closed')
 * 
 */
  }

  /* "uvloop/loop.pyx":280
 *             raise RuntimeError('unable to start the loop; it was closed')
 * 
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop is running.')
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":281
 * 
 *         if self._running == 1:
 *             raise RuntimeError('Event loop is running.')             # <<<<<<<<<<<<<<
 * 
 *         # reset _last_error
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 281, __pyx_L1_error)

    /* "uvloop/loop.pyx":280
 *             raise RuntimeError('unable to start the loop; it was closed')
 * 
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop is running.')
 * 
 */
  }

  /* "uvloop/loop.pyx":284
 * 
 *         # reset _last_error
 *         self._last_error = None             # <<<<<<<<<<<<<<
 * 
 *         self._thread_id = PyThread_get_thread_ident()
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_last_error);
  __Pyx_DECREF(__pyx_v_self->_last_error);
  __pyx_v_self->_last_error = Py_None;

  /* "uvloop/loop.pyx":286
 *         self._last_error = None
 * 
 *         self._thread_id = PyThread_get_thread_ident()             # <<<<<<<<<<<<<<
 *         self._thread_is_main = MAIN_THREAD_ID == self._thread_id
 *         self._sigint_check = 0
 */
  __pyx_v_self->_thread_id = PyThread_get_thread_ident();

  /* "uvloop/loop.pyx":287
 * 
 *         self._thread_id = PyThread_get_thread_ident()
 *         self._thread_is_main = MAIN_THREAD_ID == self._thread_id             # <<<<<<<<<<<<<<
 *         self._sigint_check = 0
 *         self._running = 1
 */
  __pyx_v_self->_thread_is_main = (__pyx_v_6uvloop_4loop_MAIN_THREAD_ID == __pyx_v_self->_thread_id);

  /* "uvloop/loop.pyx":288
 *         self._thread_id = PyThread_get_thread_ident()
 *         self._thread_is_main = MAIN_THREAD_ID == self._thread_id
 *         self._sigint_check = 0             # <<<<<<<<<<<<<<
 *         self._running = 1
 * 
 */
  __pyx_v_self->_sigint_check = 0;

  /* "uvloop/loop.pyx":289
 *         self._thread_is_main = MAIN_THREAD_ID == self._thread_id
 *         self._sigint_check = 0
 *         self._running = 1             # <<<<<<<<<<<<<<
 * 
 *         self.handler_idle.start()
 */
  __pyx_v_self->_running = 1;

  /* "uvloop/loop.pyx":291
 *         self._running = 1
 * 
 *         self.handler_idle.start()             # <<<<<<<<<<<<<<
 *         self.handler_sigint.start()
 *         self.handler_sighup.start()
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_6UVIdle_start(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":292
 * 
 *         self.handler_idle.start()
 *         self.handler_sigint.start()             # <<<<<<<<<<<<<<
 *         self.handler_sighup.start()
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sigint->__pyx_base.__pyx_vtab)->start(__pyx_v_self->handler_sigint); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":293
 *         self.handler_idle.start()
 *         self.handler_sigint.start()
 *         self.handler_sighup.start()             # <<<<<<<<<<<<<<
 * 
 *         self.__run(mode)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sighup->__pyx_base.__pyx_vtab)->start(__pyx_v_self->handler_sighup); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":295
 *         self.handler_sighup.start()
 * 
 *         self.__run(mode)             # <<<<<<<<<<<<<<
 * 
 *         self.handler_idle.stop()
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->__pyx___run(__pyx_v_self, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":297
 *         self.__run(mode)
 * 
 *         self.handler_idle.stop()             # <<<<<<<<<<<<<<
 *         self.handler_sigint.stop()
 *         self.handler_sighup.stop()
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_6UVIdle_stop(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":298
 * 
 *         self.handler_idle.stop()
 *         self.handler_sigint.stop()             # <<<<<<<<<<<<<<
 *         self.handler_sighup.stop()
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sigint->__pyx_base.__pyx_vtab)->stop(__pyx_v_self->handler_sigint); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":299
 *         self.handler_idle.stop()
 *         self.handler_sigint.stop()
 *         self.handler_sighup.stop()             # <<<<<<<<<<<<<<
 * 
 *         self._sigint_check = 0
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sighup->__pyx_base.__pyx_vtab)->stop(__pyx_v_self->handler_sighup); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":301
 *         self.handler_sighup.stop()
 * 
 *         self._sigint_check = 0             # <<<<<<<<<<<<<<
 *         self._thread_is_main = 0
 *         self._thread_id = 0
 */
  __pyx_v_self->_sigint_check = 0;

  /* "uvloop/loop.pyx":302
 * 
 *         self._sigint_check = 0
 *         self._thread_is_main = 0             # <<<<<<<<<<<<<<
 *         self._thread_id = 0
 *         self._running = 0
 */
  __pyx_v_self->_thread_is_main = 0;

  /* "uvloop/loop.pyx":303
 *         self._sigint_check = 0
 *         self._thread_is_main = 0
 *         self._thread_id = 0             # <<<<<<<<<<<<<<
 *         self._running = 0
 *         self._stopping = 0
 */
  __pyx_v_self->_thread_id = 0;

  /* "uvloop/loop.pyx":304
 *         self._thread_is_main = 0
 *         self._thread_id = 0
 *         self._running = 0             # <<<<<<<<<<<<<<
 *         self._stopping = 0
 * 
 */
  __pyx_v_self->_running = 0;

  /* "uvloop/loop.pyx":305
 *         self._thread_id = 0
 *         self._running = 0
 *         self._stopping = 0             # <<<<<<<<<<<<<<
 * 
 *         if self._last_error is not None:
 */
  __pyx_v_self->_stopping = 0;

  /* "uvloop/loop.pyx":307
 *         self._stopping = 0
 * 
 *         if self._last_error is not None:             # <<<<<<<<<<<<<<
 *             # The loop was stopped with an error with 'loop._stop(error)' call
 *             raise self._last_error
 */
  __pyx_t_1 = (__pyx_v_self->_last_error != Py_None);
  __pyx_t_3 = (__pyx_t_1 != 0);
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":309
 *         if self._last_error is not None:
 *             # The loop was stopped with an error with 'loop._stop(error)' call
 *             raise self._last_error             # <<<<<<<<<<<<<<
 * 
 *     cdef _close(self):
 */
    __Pyx_Raise(__pyx_v_self->_last_error, 0, 0, 0);
    __PYX_ERR(2, 309, __pyx_L1_error)

    /* "uvloop/loop.pyx":307
 *         self._stopping = 0
 * 
 *         if self._last_error is not None:             # <<<<<<<<<<<<<<
 *             # The loop was stopped with an error with 'loop._stop(error)' call
 *             raise self._last_error
 */
  }

  /* "uvloop/loop.pyx":274
 *             raise convert_error(err)
 * 
 *     cdef _run(self, uv.uv_run_mode mode):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":311
 *             raise self._last_error
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__close(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_cb_handle = NULL;
  PyObject *__pyx_v_poll_handle = NULL;
  PyObject *__pyx_v_timer_cbhandle = NULL;
  PyObject *__pyx_v_sig_handle = NULL;
  PyObject *__pyx_v_executor = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "uvloop/loop.pyx":314
 *         cdef int err
 * 
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Cannot close a running event loop")
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":315
 * 
 *         if self._running == 1:
 *             raise RuntimeError("Cannot close a running event loop")             # <<<<<<<<<<<<<<
 * 
 *         if self._closed == 1:
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 315, __pyx_L1_error)

    /* "uvloop/loop.pyx":314
 *         cdef int err
 * 
 *         if self._running == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Cannot close a running event loop")
 * 
 */
  }

  /* "uvloop/loop.pyx":317
 *             raise RuntimeError("Cannot close a running event loop")
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":318
 * 
 *         if self._closed == 1:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._closed = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":317
 *             raise RuntimeError("Cannot close a running event loop")
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/loop.pyx":320
 *             return
 * 
 *         self._closed = 1             # <<<<<<<<<<<<<<
 * 
 *         for cb_handle in self._ready:
 */
  __pyx_v_self->_closed = 1;

  /* "uvloop/loop.pyx":322
 *         self._closed = 1
 * 
 *         for cb_handle in self._ready:             # <<<<<<<<<<<<<<
 *             cb_handle.cancel()
 *         self._ready.clear()
 */
  if (likely(PyList_CheckExact(__pyx_v_self->_ready)) || PyTuple_CheckExact(__pyx_v_self->_ready)) {
    __pyx_t_2 = __pyx_v_self->_ready; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ready); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 322, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 322, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 322, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 322, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 322, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 322, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_cb_handle, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":323
 * 
 *         for cb_handle in self._ready:
 *             cb_handle.cancel()             # <<<<<<<<<<<<<<
 *         self._ready.clear()
 *         self._ready_len = 0
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cb_handle, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 323, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 323, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":322
 *         self._closed = 1
 * 
 *         for cb_handle in self._ready:             # <<<<<<<<<<<<<<
 *             cb_handle.cancel()
 *         self._ready.clear()
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":324
 *         for cb_handle in self._ready:
 *             cb_handle.cancel()
 *         self._ready.clear()             # <<<<<<<<<<<<<<
 *         self._ready_len = 0
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ready, __pyx_n_s_clear); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 324, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 324, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":325
 *             cb_handle.cancel()
 *         self._ready.clear()
 *         self._ready_len = 0             # <<<<<<<<<<<<<<
 * 
 *         if self._polls:
 */
  __pyx_v_self->_ready_len = 0;

  /* "uvloop/loop.pyx":327
 *         self._ready_len = 0
 * 
 *         if self._polls:             # <<<<<<<<<<<<<<
 *             for poll_handle in self._polls.values():
 *                 (<UVHandle>poll_handle)._close()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_polls); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 327, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":328
 * 
 *         if self._polls:
 *             for poll_handle in self._polls.values():             # <<<<<<<<<<<<<<
 *                 (<UVHandle>poll_handle)._close()
 * 
 */
    __pyx_t_3 = 0;
    if (unlikely(__pyx_v_self->_polls == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
      __PYX_ERR(2, 328, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_self->_polls, 1, __pyx_n_s_values, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2);
    __pyx_t_2 = __pyx_t_5;
    __pyx_t_5 = 0;
    while (1) {
      __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_8, &__pyx_t_3, NULL, &__pyx_t_5, NULL, __pyx_t_9);
      if (unlikely(__pyx_t_10 == 0)) break;
      if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(2, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_poll_handle, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":329
 *         if self._polls:
 *             for poll_handle in self._polls.values():
 *                 (<UVHandle>poll_handle)._close()             # <<<<<<<<<<<<<<
 * 
 *             self._polls.clear()
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll_handle)->__pyx_vtab)->_close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll_handle)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":331
 *                 (<UVHandle>poll_handle)._close()
 * 
 *             self._polls.clear()             # <<<<<<<<<<<<<<
 *             self._polls_gc.clear()
 * 
 */
    if (unlikely(__pyx_v_self->_polls == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "clear");
      __PYX_ERR(2, 331, __pyx_L1_error)
    }
    __pyx_t_11 = __Pyx_PyDict_Clear(__pyx_v_self->_polls); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 331, __pyx_L1_error)

    /* "uvloop/loop.pyx":332
 * 
 *             self._polls.clear()
 *             self._polls_gc.clear()             # <<<<<<<<<<<<<<
 * 
 *         if self._timers:
 */
    if (unlikely(__pyx_v_self->_polls_gc == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "clear");
      __PYX_ERR(2, 332, __pyx_L1_error)
    }
    __pyx_t_11 = __Pyx_PyDict_Clear(__pyx_v_self->_polls_gc); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 332, __pyx_L1_error)

    /* "uvloop/loop.pyx":327
 *         self._ready_len = 0
 * 
 *         if self._polls:             # <<<<<<<<<<<<<<
 *             for poll_handle in self._polls.values():
 *                 (<UVHandle>poll_handle)._close()
 */
  }

  /* "uvloop/loop.pyx":334
 *             self._polls_gc.clear()
 * 
 *         if self._timers:             # <<<<<<<<<<<<<<
 *             for timer_cbhandle in tuple(self._timers):
 *                 timer_cbhandle.cancel()
 */
  __pyx_t_1 = (__pyx_v_self->_timers != Py_None) && (PySet_GET_SIZE(__pyx_v_self->_timers) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":335
 * 
 *         if self._timers:
 *             for timer_cbhandle in tuple(self._timers):             # <<<<<<<<<<<<<<
 *                 timer_cbhandle.cancel()
 * 
 */
    __pyx_t_2 = PySequence_Tuple(__pyx_v_self->_timers); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(2, 335, __pyx_L1_error)
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
      __Pyx_XDECREF_SET(__pyx_v_timer_cbhandle, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":336
 *         if self._timers:
 *             for timer_cbhandle in tuple(self._timers):
 *                 timer_cbhandle.cancel()             # <<<<<<<<<<<<<<
 * 
 *         for sig_handle in self._signal_handlers.values():
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_timer_cbhandle, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 336, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 336, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 336, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":335
 * 
 *         if self._timers:
 *             for timer_cbhandle in tuple(self._timers):             # <<<<<<<<<<<<<<
 *                 timer_cbhandle.cancel()
 * 
 */
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":334
 *             self._polls_gc.clear()
 * 
 *         if self._timers:             # <<<<<<<<<<<<<<
 *             for timer_cbhandle in tuple(self._timers):
 *                 timer_cbhandle.cancel()
 */
  }

  /* "uvloop/loop.pyx":338
 *                 timer_cbhandle.cancel()
 * 
 *         for sig_handle in self._signal_handlers.values():             # <<<<<<<<<<<<<<
 *             (<UVSignal>sig_handle)._close()
 *         self._signal_handlers.clear()
 */
  __pyx_t_8 = 0;
  if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
    __PYX_ERR(2, 338, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_self->_signal_handlers, 1, __pyx_n_s_values, (&__pyx_t_3), (&__pyx_t_9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_2;
  __pyx_t_2 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_3, &__pyx_t_8, NULL, &__pyx_t_2, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(2, 338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_sig_handle, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":339
 * 
 *         for sig_handle in self._signal_handlers.values():
 *             (<UVSignal>sig_handle)._close()             # <<<<<<<<<<<<<<
 *         self._signal_handlers.clear()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_v_sig_handle)->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_v_sig_handle))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":340
 *         for sig_handle in self._signal_handlers.values():
 *             (<UVSignal>sig_handle)._close()
 *         self._signal_handlers.clear()             # <<<<<<<<<<<<<<
 * 
 *         # Close all remaining handles
 */
  if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "clear");
    __PYX_ERR(2, 340, __pyx_L1_error)
  }
  __pyx_t_11 = __Pyx_PyDict_Clear(__pyx_v_self->_signal_handlers); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 340, __pyx_L1_error)

  /* "uvloop/loop.pyx":343
 * 
 *         # Close all remaining handles
 *         self.handler_async._close()             # <<<<<<<<<<<<<<
 *         self.handler_idle._close()
 *         self.handler_sigint._close()
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->handler_async->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->handler_async)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":344
 *         # Close all remaining handles
 *         self.handler_async._close()
 *         self.handler_idle._close()             # <<<<<<<<<<<<<<
 *         self.handler_sigint._close()
 *         self.handler_sighup._close()
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->handler_idle->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->handler_idle)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":345
 *         self.handler_async._close()
 *         self.handler_idle._close()
 *         self.handler_sigint._close()             # <<<<<<<<<<<<<<
 *         self.handler_sighup._close()
 *         __close_all_handles(self)
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sigint->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->handler_sigint)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":346
 *         self.handler_idle._close()
 *         self.handler_sigint._close()
 *         self.handler_sighup._close()             # <<<<<<<<<<<<<<
 *         __close_all_handles(self)
 *         # During this run there should be no open handles,
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->handler_sighup->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->handler_sighup)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":347
 *         self.handler_sigint._close()
 *         self.handler_sighup._close()
 *         __close_all_handles(self)             # <<<<<<<<<<<<<<
 *         # During this run there should be no open handles,
 *         # so it should finish right away
 */
  __pyx_f_6uvloop_4loop___close_all_handles(__pyx_v_self);

  /* "uvloop/loop.pyx":350
 *         # During this run there should be no open handles,
 *         # so it should finish right away
 *         self.__run(uv.UV_RUN_DEFAULT)             # <<<<<<<<<<<<<<
 * 
 *         if self._timers:
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->__pyx___run(__pyx_v_self, UV_RUN_DEFAULT); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":352
 *         self.__run(uv.UV_RUN_DEFAULT)
 * 
 *         if self._timers:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new timers were queued during loop closing: {}"
 */
  __pyx_t_1 = (__pyx_v_self->_timers != Py_None) && (PySet_GET_SIZE(__pyx_v_self->_timers) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":355
 *             raise RuntimeError(
 *                 "new timers were queued during loop closing: {}"
 *                     .format(self._timers))             # <<<<<<<<<<<<<<
 * 
 *         if self._polls:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_new_timers_were_queued_during_lo, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->_timers); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_self->_timers);
      __Pyx_GIVEREF(__pyx_v_self->_timers);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->_timers);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":353
 * 
 *         if self._timers:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "new timers were queued during loop closing: {}"
 *                     .format(self._timers))
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 353, __pyx_L1_error)

    /* "uvloop/loop.pyx":352
 *         self.__run(uv.UV_RUN_DEFAULT)
 * 
 *         if self._timers:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new timers were queued during loop closing: {}"
 */
  }

  /* "uvloop/loop.pyx":357
 *                     .format(self._timers))
 * 
 *         if self._polls:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new poll handles were queued during loop closing: {}"
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_polls); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":360
 *             raise RuntimeError(
 *                 "new poll handles were queued during loop closing: {}"
 *                     .format(self._polls))             # <<<<<<<<<<<<<<
 * 
 *         if self._ready:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_new_poll_handles_were_queued_dur, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->_polls); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(__pyx_v_self->_polls);
      __Pyx_GIVEREF(__pyx_v_self->_polls);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->_polls);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":358
 * 
 *         if self._polls:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "new poll handles were queued during loop closing: {}"
 *                     .format(self._polls))
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 358, __pyx_L1_error)

    /* "uvloop/loop.pyx":357
 *                     .format(self._timers))
 * 
 *         if self._polls:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new poll handles were queued during loop closing: {}"
 */
  }

  /* "uvloop/loop.pyx":362
 *                     .format(self._polls))
 * 
 *         if self._ready:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new callbacks were queued during loop closing: {}"
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_ready); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 362, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":365
 *             raise RuntimeError(
 *                 "new callbacks were queued during loop closing: {}"
 *                     .format(self._ready))             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_loop_close(self.uvloop)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_new_callbacks_were_queued_during, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->_ready); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_self->_ready);
      __Pyx_GIVEREF(__pyx_v_self->_ready);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->_ready);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":363
 * 
 *         if self._ready:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "new callbacks were queued during loop closing: {}"
 *                     .format(self._ready))
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 363, __pyx_L1_error)

    /* "uvloop/loop.pyx":362
 *                     .format(self._polls))
 * 
 *         if self._ready:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "new callbacks were queued during loop closing: {}"
 */
  }

  /* "uvloop/loop.pyx":367
 *                     .format(self._ready))
 * 
 *         err = uv.uv_loop_close(self.uvloop)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
  __pyx_v_err = uv_loop_close(__pyx_v_self->uvloop);

  /* "uvloop/loop.pyx":368
 * 
 *         err = uv.uv_loop_close(self.uvloop)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":369
 *         err = uv.uv_loop_close(self.uvloop)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self.handler_async = None
 */
    __pyx_t_5 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 369, __pyx_L1_error)

    /* "uvloop/loop.pyx":368
 * 
 *         err = uv.uv_loop_close(self.uvloop)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  }

  /* "uvloop/loop.pyx":371
 *             raise convert_error(err)
 * 
 *         self.handler_async = None             # <<<<<<<<<<<<<<
 *         self.handler_idle = None
 *         self.handler_sigint = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->handler_async);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_async));
  __pyx_v_self->handler_async = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)Py_None);

  /* "uvloop/loop.pyx":372
 * 
 *         self.handler_async = None
 *         self.handler_idle = None             # <<<<<<<<<<<<<<
 *         self.handler_sigint = None
 *         self.handler_sighup = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->handler_idle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_idle));
  __pyx_v_self->handler_idle = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)Py_None);

  /* "uvloop/loop.pyx":373
 *         self.handler_async = None
 *         self.handler_idle = None
 *         self.handler_sigint = None             # <<<<<<<<<<<<<<
 *         self.handler_sighup = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->handler_sigint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_sigint));
  __pyx_v_self->handler_sigint = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)Py_None);

  /* "uvloop/loop.pyx":374
 *         self.handler_idle = None
 *         self.handler_sigint = None
 *         self.handler_sighup = None             # <<<<<<<<<<<<<<
 * 
 *         executor = self._default_executor
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->handler_sighup);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->handler_sighup));
  __pyx_v_self->handler_sighup = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)Py_None);

  /* "uvloop/loop.pyx":376
 *         self.handler_sighup = None
 * 
 *         executor = self._default_executor             # <<<<<<<<<<<<<<
 *         if executor is not None:
 *             self._default_executor = None
 */
  __pyx_t_5 = __pyx_v_self->_default_executor;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_executor = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":377
 * 
 *         executor = self._default_executor
 *         if executor is not None:             # <<<<<<<<<<<<<<
 *             self._default_executor = None
 *             executor.shutdown(wait=False)
 */
  __pyx_t_1 = (__pyx_v_executor != Py_None);
  __pyx_t_12 = (__pyx_t_1 != 0);
  if (__pyx_t_12) {

    /* "uvloop/loop.pyx":378
 *         executor = self._default_executor
 *         if executor is not None:
 *             self._default_executor = None             # <<<<<<<<<<<<<<
 *             executor.shutdown(wait=False)
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_default_executor);
    __Pyx_DECREF(__pyx_v_self->_default_executor);
    __pyx_v_self->_default_executor = Py_None;

    /* "uvloop/loop.pyx":379
 *         if executor is not None:
 *             self._default_executor = None
 *             executor.shutdown(wait=False)             # <<<<<<<<<<<<<<
 * 
 *     cdef uint64_t _time(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_executor, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_wait, Py_False) < 0) __PYX_ERR(2, 379, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "uvloop/loop.pyx":377
 * 
 *         executor = self._default_executor
 *         if executor is not None:             # <<<<<<<<<<<<<<
 *             self._default_executor = None
 *             executor.shutdown(wait=False)
 */
  }

  /* "uvloop/loop.pyx":311
 *             raise self._last_error
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.Loop._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cb_handle);
  __Pyx_XDECREF(__pyx_v_poll_handle);
  __Pyx_XDECREF(__pyx_v_timer_cbhandle);
  __Pyx_XDECREF(__pyx_v_sig_handle);
  __Pyx_XDECREF(__pyx_v_executor);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":381
 *             executor.shutdown(wait=False)
 * 
 *     cdef uint64_t _time(self):             # <<<<<<<<<<<<<<
 *         return uv.uv_now(self.uvloop)
 * 
 */

static uint64_t __pyx_f_6uvloop_4loop_4Loop__time(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  uint64_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_time", 0);

  /* "uvloop/loop.pyx":382
 * 
 *     cdef uint64_t _time(self):
 *         return uv.uv_now(self.uvloop)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _call_soon(self, object callback, object args):
 */
  __pyx_r = uv_now(__pyx_v_self->uvloop);
  goto __pyx_L0;

  /* "uvloop/loop.pyx":381
 *             executor.shutdown(wait=False)
 * 
 *     cdef uint64_t _time(self):             # <<<<<<<<<<<<<<
 *         return uv.uv_now(self.uvloop)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":384
 *         return uv.uv_now(self.uvloop)
 * 
 *     cdef inline _call_soon(self, object callback, object args):             # <<<<<<<<<<<<<<
 *         cdef Handle handle
 *         handle = new_Handle(self, callback, args)
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_call_soon", 0);

  /* "uvloop/loop.pyx":386
 *     cdef inline _call_soon(self, object callback, object args):
 *         cdef Handle handle
 *         handle = new_Handle(self, callback, args)             # <<<<<<<<<<<<<<
 *         self._call_soon_handle(handle)
 *         return handle
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_new_Handle(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 386, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":387
 *         cdef Handle handle
 *         handle = new_Handle(self, callback, args)
 *         self._call_soon_handle(handle)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self, __pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":388
 *         handle = new_Handle(self, callback, args)
 *         self._call_soon_handle(handle)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _call_soon_handle(self, Handle handle):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/loop.pyx":384
 *         return uv.uv_now(self.uvloop)
 * 
 *     cdef inline _call_soon(self, object callback, object args):             # <<<<<<<<<<<<<<
 *         cdef Handle handle
 *         handle = new_Handle(self, callback, args)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop._call_soon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":390
 *         return handle
 * 
 *     cdef inline _call_soon_handle(self, Handle handle):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         self._ready.append(handle)
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__call_soon_handle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_call_soon_handle", 0);

  /* "uvloop/loop.pyx":391
 * 
 *     cdef inline _call_soon_handle(self, Handle handle):
 *         self._check_closed()             # <<<<<<<<<<<<<<
 *         self._ready.append(handle)
 *         self._ready_len += 1;
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":392
 *     cdef inline _call_soon_handle(self, Handle handle):
 *         self._check_closed()
 *         self._ready.append(handle)             # <<<<<<<<<<<<<<
 *         self._ready_len += 1;
 *         if not self.handler_idle.running:
 */
  __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_self->_ready, ((PyObject *)__pyx_v_handle)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(2, 392, __pyx_L1_error)

  /* "uvloop/loop.pyx":393
 *         self._check_closed()
 *         self._ready.append(handle)
 *         self._ready_len += 1;             # <<<<<<<<<<<<<<
 *         if not self.handler_idle.running:
 *             self.handler_idle.start()
 */
  __pyx_v_self->_ready_len = (__pyx_v_self->_ready_len + 1);

  /* "uvloop/loop.pyx":394
 *         self._ready.append(handle)
 *         self._ready_len += 1;
 *         if not self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.start()
 * 
 */
  __pyx_t_3 = ((!(__pyx_v_self->handler_idle->running != 0)) != 0);
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":395
 *         self._ready_len += 1;
 *         if not self.handler_idle.running:
 *             self.handler_idle.start()             # <<<<<<<<<<<<<<
 * 
 *     cdef _call_later(self, uint64_t delay, object callback, object args):
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_6UVIdle_start(__pyx_v_self->handler_idle); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":394
 *         self._ready.append(handle)
 *         self._ready_len += 1;
 *         if not self.handler_idle.running:             # <<<<<<<<<<<<<<
 *             self.handler_idle.start()
 * 
 */
  }

  /* "uvloop/loop.pyx":390
 *         return handle
 * 
 *     cdef inline _call_soon_handle(self, Handle handle):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         self._ready.append(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop._call_soon_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":397
 *             self.handler_idle.start()
 * 
 *     cdef _call_later(self, uint64_t delay, object callback, object args):             # <<<<<<<<<<<<<<
 *         return TimerHandle(self, callback, args, delay)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__call_later(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, uint64_t __pyx_v_delay, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_call_later", 0);

  /* "uvloop/loop.pyx":398
 * 
 *     cdef _call_later(self, uint64_t delay, object callback, object args):
 *         return TimerHandle(self, callback, args, delay)             # <<<<<<<<<<<<<<
 * 
 *     cdef void _handle_exception(self, object ex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_delay); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_callback);
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_args);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_TimerHandle), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":397
 *             self.handler_idle.start()
 * 
 *     cdef _call_later(self, uint64_t delay, object callback, object args):             # <<<<<<<<<<<<<<
 *         return TimerHandle(self, callback, args, delay)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._call_later", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":400
 *         return TimerHandle(self, callback, args, delay)
 * 
 *     cdef void _handle_exception(self, object ex):             # <<<<<<<<<<<<<<
 *         if isinstance(ex, Exception):
 *             self.call_exception_handler({'exception': ex})
 */

static void __pyx_f_6uvloop_4loop_4Loop__handle_exception(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_ex) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_handle_exception", 0);

  /* "uvloop/loop.pyx":401
 * 
 *     cdef void _handle_exception(self, object ex):
 *         if isinstance(ex, Exception):             # <<<<<<<<<<<<<<
 *             self.call_exception_handler({'exception': ex})
 *         else:
 */
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_ex, __pyx_builtin_Exception); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 401, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":402
 *     cdef void _handle_exception(self, object ex):
 *         if isinstance(ex, Exception):
 *             self.call_exception_handler({'exception': ex})             # <<<<<<<<<<<<<<
 *         else:
 *             # BaseException
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_exception, __pyx_v_ex) < 0) __PYX_ERR(2, 402, __pyx_L1_error)
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 402, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":401
 * 
 *     cdef void _handle_exception(self, object ex):
 *         if isinstance(ex, Exception):             # <<<<<<<<<<<<<<
 *             self.call_exception_handler({'exception': ex})
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":405
 *         else:
 *             # BaseException
 *             self._last_error = ex             # <<<<<<<<<<<<<<
 *             # Exit ASAP
 *             self._stop(None)
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_ex);
    __Pyx_GIVEREF(__pyx_v_ex);
    __Pyx_GOTREF(__pyx_v_self->_last_error);
    __Pyx_DECREF(__pyx_v_self->_last_error);
    __pyx_v_self->_last_error = __pyx_v_ex;

    /* "uvloop/loop.pyx":407
 *             self._last_error = ex
 *             # Exit ASAP
 *             self._stop(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _check_signal(self, sig):
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop(__pyx_v_self, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":400
 *         return TimerHandle(self, callback, args, delay)
 * 
 *     cdef void _handle_exception(self, object ex):             # <<<<<<<<<<<<<<
 *         if isinstance(ex, Exception):
 *             self.call_exception_handler({'exception': ex})
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("uvloop.loop.Loop._handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/loop.pyx":409
 *             self._stop(None)
 * 
 *     cdef inline _check_signal(self, sig):             # <<<<<<<<<<<<<<
 *         if not isinstance(sig, int):
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_signal(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_check_signal", 0);

  /* "uvloop/loop.pyx":410
 * 
 *     cdef inline _check_signal(self, sig):
 *         if not isinstance(sig, int):             # <<<<<<<<<<<<<<
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 * 
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_sig); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":411
 *     cdef inline _check_signal(self, sig):
 *         if not isinstance(sig, int):
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))             # <<<<<<<<<<<<<<
 * 
 *         if not (1 <= sig < signal_NSIG):
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_sig_must_be_an_int_not_r, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_sig); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_sig);
      __Pyx_GIVEREF(__pyx_v_sig);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_sig);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 411, __pyx_L1_error)

    /* "uvloop/loop.pyx":410
 * 
 *     cdef inline _check_signal(self, sig):
 *         if not isinstance(sig, int):             # <<<<<<<<<<<<<<
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 * 
 */
  }

  /* "uvloop/loop.pyx":413
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 * 
 *         if not (1 <= sig < signal_NSIG):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_int_1, __pyx_v_sig, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 413, __pyx_L1_error)
  if (__Pyx_PyObject_IsTrue(__pyx_t_3)) {
    __Pyx_DECREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_signal_NSIG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_sig, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 413, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = ((!__pyx_t_2) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":415
 *         if not (1 <= sig < signal_NSIG):
 *             raise ValueError(
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _check_closed(self):
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_sig_out_of_range_1, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_signal_NSIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_sig);
    __Pyx_GIVEREF(__pyx_v_sig);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_sig);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":414
 * 
 *         if not (1 <= sig < signal_NSIG):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))
 * 
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 414, __pyx_L1_error)

    /* "uvloop/loop.pyx":413
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 * 
 *         if not (1 <= sig < signal_NSIG):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))
 */
  }

  /* "uvloop/loop.pyx":409
 *             self._stop(None)
 * 
 *     cdef inline _check_signal(self, sig):             # <<<<<<<<<<<<<<
 *         if not isinstance(sig, int):
 *             raise TypeError('sig must be an int, not {!r}'.format(sig))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._check_signal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":417
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))
 * 
 *     cdef inline _check_closed(self):             # <<<<<<<<<<<<<<
 *         if self._closed == 1:
 *             raise RuntimeError('Event loop is closed')
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_closed(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_check_closed", 0);

  /* "uvloop/loop.pyx":418
 * 
 *     cdef inline _check_closed(self):
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop is closed')
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":419
 *     cdef inline _check_closed(self):
 *         if self._closed == 1:
 *             raise RuntimeError('Event loop is closed')             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _check_thread(self):
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 419, __pyx_L1_error)

    /* "uvloop/loop.pyx":418
 * 
 *     cdef inline _check_closed(self):
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop is closed')
 * 
 */
  }

  /* "uvloop/loop.pyx":417
 *                 'sig {} out of range(1, {})'.format(sig, signal_NSIG))
 * 
 *     cdef inline _check_closed(self):             # <<<<<<<<<<<<<<
 *         if self._closed == 1:
 *             raise RuntimeError('Event loop is closed')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._check_closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":421
 *             raise RuntimeError('Event loop is closed')
 * 
 *     cdef inline _check_thread(self):             # <<<<<<<<<<<<<<
 *         if self._thread_id == 0:
 *             return
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__check_thread(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  long __pyx_v_thread_id;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_check_thread", 0);

  /* "uvloop/loop.pyx":422
 * 
 *     cdef inline _check_thread(self):
 *         if self._thread_id == 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef long thread_id = PyThread_get_thread_ident()
 */
  __pyx_t_1 = ((__pyx_v_self->_thread_id == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":423
 *     cdef inline _check_thread(self):
 *         if self._thread_id == 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef long thread_id = PyThread_get_thread_ident()
 *         if thread_id != self._thread_id:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":422
 * 
 *     cdef inline _check_thread(self):
 *         if self._thread_id == 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef long thread_id = PyThread_get_thread_ident()
 */
  }

  /* "uvloop/loop.pyx":424
 *         if self._thread_id == 0:
 *             return
 *         cdef long thread_id = PyThread_get_thread_ident()             # <<<<<<<<<<<<<<
 *         if thread_id != self._thread_id:
 *             raise RuntimeError(
 */
  __pyx_v_thread_id = PyThread_get_thread_ident();

  /* "uvloop/loop.pyx":425
 *             return
 *         cdef long thread_id = PyThread_get_thread_ident()
 *         if thread_id != self._thread_id:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "Non-thread-safe operation invoked on an event loop other "
 */
  __pyx_t_1 = ((__pyx_v_thread_id != __pyx_v_self->_thread_id) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":426
 *         cdef long thread_id = PyThread_get_thread_ident()
 *         if thread_id != self._thread_id:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "Non-thread-safe operation invoked on an event loop other "
 *                 "than the current one")
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 426, __pyx_L1_error)

    /* "uvloop/loop.pyx":425
 *             return
 *         cdef long thread_id = PyThread_get_thread_ident()
 *         if thread_id != self._thread_id:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 "Non-thread-safe operation invoked on an event loop other "
 */
  }

  /* "uvloop/loop.pyx":421
 *             raise RuntimeError('Event loop is closed')
 * 
 *     cdef inline _check_thread(self):             # <<<<<<<<<<<<<<
 *         if self._thread_id == 0:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._check_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":430
 *                 "than the current one")
 * 
 *     cdef inline _new_future(self):             # <<<<<<<<<<<<<<
 *         return aio_Future(loop=self)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_4Loop__new_future(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_new_future", 0);

  /* "uvloop/loop.pyx":431
 * 
 *     cdef inline _new_future(self):
 *         return aio_Future(loop=self)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _add_reader(self, fd, Handle handle):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_loop, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(2, 431, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_Future, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":430
 *                 "than the current one")
 * 
 *     cdef inline _new_future(self):             # <<<<<<<<<<<<<<
 *         return aio_Future(loop=self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._new_future", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":433
 *         return aio_Future(loop=self)
 * 
 *     cdef inline _add_reader(self, fd, Handle handle):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_add_reader", 0);

  /* "uvloop/loop.pyx":437
 *             UVPoll poll
 * 
 *         self._check_closed()             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":439
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/loop.pyx":440
 * 
 *         try:
 *             poll = <UVPoll>(self._polls[fd])             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 440, __pyx_L3_error)
      }
      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_self->_polls, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 440, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __pyx_t_1;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_poll = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":439
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":441
 *         try:
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             poll = UVPoll.new(self, fd)
 *             self._polls[fd] = poll
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.Loop._add_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(2, 441, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_7);

      /* "uvloop/loop.pyx":442
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)             # <<<<<<<<<<<<<<
 *             self._polls[fd] = poll
 * 
 */
      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 442, __pyx_L5_except_error)
      __pyx_t_8 = ((PyObject *)__pyx_f_6uvloop_4loop_6UVPoll_new(__pyx_v_self, __pyx_t_6)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 442, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_poll, ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_8));
      __pyx_t_8 = 0;

      /* "uvloop/loop.pyx":443
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)
 *             self._polls[fd] = poll             # <<<<<<<<<<<<<<
 * 
 *         poll.start_reading(handle)
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 443, __pyx_L5_except_error)
      }
      if (unlikely(PyDict_SetItem(__pyx_v_self->_polls, __pyx_v_fd, ((PyObject *)__pyx_v_poll)) < 0)) __PYX_ERR(2, 443, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/loop.pyx":439
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L10_try_end:;
  }

  /* "uvloop/loop.pyx":445
 *             self._polls[fd] = poll
 * 
 *         poll.start_reading(handle)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _remove_reader(self, fd):
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->start_reading(__pyx_v_poll, __pyx_v_handle); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "uvloop/loop.pyx":433
 *         return aio_Future(loop=self)
 * 
 *     cdef inline _add_reader(self, fd, Handle handle):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._add_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":447
 *         poll.start_reading(handle)
 * 
 *     cdef inline _remove_reader(self, fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = 0;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_remove_reader", 0);

  /* "uvloop/loop.pyx":451
 *             UVPoll poll
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":452
 * 
 *         if self._closed == 1:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":451
 *             UVPoll poll
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "uvloop/loop.pyx":454
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/loop.pyx":455
 * 
 *         try:
 *             poll = <UVPoll>(self._polls[fd])             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             return False
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 455, __pyx_L4_error)
      }
      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_polls, __pyx_v_fd); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 455, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_t_5;
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_poll = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_6);
      __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":454
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/loop.pyx":456
 *         try:
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.Loop._remove_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(2, 456, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_8);

      /* "uvloop/loop.pyx":457
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         result = poll.stop_reading()
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":454
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":459
 *             return False
 * 
 *         result = poll.stop_reading()             # <<<<<<<<<<<<<<
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll
 */
  __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->stop_reading(__pyx_v_poll); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_v_result = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "uvloop/loop.pyx":460
 * 
 *         result = poll.stop_reading()
 *         if not poll.is_active():             # <<<<<<<<<<<<<<
 *             self._polls_gc[fd] = poll
 *         return result
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->is_active(__pyx_v_poll) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":461
 *         result = poll.stop_reading()
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    if (unlikely(__pyx_v_self->_polls_gc == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(2, 461, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_v_self->_polls_gc, __pyx_v_fd, ((PyObject *)__pyx_v_poll)) < 0)) __PYX_ERR(2, 461, __pyx_L1_error)

    /* "uvloop/loop.pyx":460
 * 
 *         result = poll.stop_reading()
 *         if not poll.is_active():             # <<<<<<<<<<<<<<
 *             self._polls_gc[fd] = poll
 *         return result
 */
  }

  /* "uvloop/loop.pyx":462
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _add_writer(self, fd, Handle handle):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":447
 *         poll.start_reading(handle)
 * 
 *     cdef inline _remove_reader(self, fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._remove_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":464
 *         return result
 * 
 *     cdef inline _add_writer(self, fd, Handle handle):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__add_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_add_writer", 0);

  /* "uvloop/loop.pyx":468
 *             UVPoll poll
 * 
 *         self._check_closed()             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":470
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/loop.pyx":471
 * 
 *         try:
 *             poll = <UVPoll>(self._polls[fd])             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 471, __pyx_L3_error)
      }
      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_self->_polls, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 471, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __pyx_t_1;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_poll = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":470
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":472
 *         try:
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             poll = UVPoll.new(self, fd)
 *             self._polls[fd] = poll
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.Loop._add_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(2, 472, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_7);

      /* "uvloop/loop.pyx":473
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)             # <<<<<<<<<<<<<<
 *             self._polls[fd] = poll
 * 
 */
      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 473, __pyx_L5_except_error)
      __pyx_t_8 = ((PyObject *)__pyx_f_6uvloop_4loop_6UVPoll_new(__pyx_v_self, __pyx_t_6)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 473, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_poll, ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_8));
      __pyx_t_8 = 0;

      /* "uvloop/loop.pyx":474
 *         except KeyError:
 *             poll = UVPoll.new(self, fd)
 *             self._polls[fd] = poll             # <<<<<<<<<<<<<<
 * 
 *         poll.start_writing(handle)
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 474, __pyx_L5_except_error)
      }
      if (unlikely(PyDict_SetItem(__pyx_v_self->_polls, __pyx_v_fd, ((PyObject *)__pyx_v_poll)) < 0)) __PYX_ERR(2, 474, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/loop.pyx":470
 *         self._check_closed()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L10_try_end:;
  }

  /* "uvloop/loop.pyx":476
 *             self._polls[fd] = poll
 * 
 *         poll.start_writing(handle)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _remove_writer(self, fd):
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->start_writing(__pyx_v_poll, __pyx_v_handle); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "uvloop/loop.pyx":464
 *         return result
 * 
 *     cdef inline _add_writer(self, fd, Handle handle):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._add_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":478
 *         poll.start_writing(handle)
 * 
 *     cdef inline _remove_writer(self, fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__remove_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = 0;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_remove_writer", 0);

  /* "uvloop/loop.pyx":482
 *             UVPoll poll
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":483
 * 
 *         if self._closed == 1:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":482
 *             UVPoll poll
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "uvloop/loop.pyx":485
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/loop.pyx":486
 * 
 *         try:
 *             poll = <UVPoll>(self._polls[fd])             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             return False
 */
      if (unlikely(__pyx_v_self->_polls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(2, 486, __pyx_L4_error)
      }
      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_polls, __pyx_v_fd); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 486, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_t_5;
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_poll = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_6);
      __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":485
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/loop.pyx":487
 *         try:
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.Loop._remove_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(2, 487, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_8);

      /* "uvloop/loop.pyx":488
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         result = poll.stop_writing()
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":485
 *             return False
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             poll = <UVPoll>(self._polls[fd])
 *         except KeyError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":490
 *             return False
 * 
 *         result = poll.stop_writing()             # <<<<<<<<<<<<<<
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll
 */
  __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->stop_writing(__pyx_v_poll); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_v_result = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "uvloop/loop.pyx":491
 * 
 *         result = poll.stop_writing()
 *         if not poll.is_active():             # <<<<<<<<<<<<<<
 *             self._polls_gc[fd] = poll
 *         return result
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->is_active(__pyx_v_poll) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":492
 *         result = poll.stop_writing()
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    if (unlikely(__pyx_v_self->_polls_gc == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(2, 492, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_v_self->_polls_gc, __pyx_v_fd, ((PyObject *)__pyx_v_poll)) < 0)) __PYX_ERR(2, 492, __pyx_L1_error)

    /* "uvloop/loop.pyx":491
 * 
 *         result = poll.stop_writing()
 *         if not poll.is_active():             # <<<<<<<<<<<<<<
 *             self._polls_gc[fd] = poll
 *         return result
 */
  }

  /* "uvloop/loop.pyx":493
 *         if not poll.is_active():
 *             self._polls_gc[fd] = poll
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     cdef _getaddrinfo(self, object host, object port,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":478
 *         poll.start_writing(handle)
 * 
 *     cdef inline _remove_writer(self, fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVPoll poll
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._remove_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":515
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if AddrInfo.isinstance(result):
 *                 try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_12_getaddrinfo_1callback(PyObject *__pyx_self, PyObject *__pyx_v_result); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_4Loop_12_getaddrinfo_1callback = {"callback", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_12_getaddrinfo_1callback, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_12_getaddrinfo_1callback(PyObject *__pyx_self, PyObject *__pyx_v_result) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callback (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_12_getaddrinfo_callback(__pyx_self, ((PyObject *)__pyx_v_result));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12_getaddrinfo_callback(PyObject *__pyx_self, PyObject *__pyx_v_result) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *__pyx_outer_scope;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  __Pyx_RefNannySetupContext("callback", 0);
  __pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "uvloop/loop.pyx":516
 * 
 *         def callback(result):
 *             if AddrInfo.isinstance(result):             # <<<<<<<<<<<<<<
 *                 try:
 *                     if unpack == 0:
 */
  __pyx_t_1 = (__pyx_f_6uvloop_4loop_8AddrInfo_isinstance(__pyx_v_result) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":517
 *         def callback(result):
 *             if AddrInfo.isinstance(result):
 *                 try:             # <<<<<<<<<<<<<<
 *                     if unpack == 0:
 *                         data = result
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "uvloop/loop.pyx":518
 *             if AddrInfo.isinstance(result):
 *                 try:
 *                     if unpack == 0:             # <<<<<<<<<<<<<<
 *                         data = result
 *                     else:
 */
        __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_unpack == 0) != 0);
        if (__pyx_t_1) {

          /* "uvloop/loop.pyx":519
 *                 try:
 *                     if unpack == 0:
 *                         data = result             # <<<<<<<<<<<<<<
 *                     else:
 *                         data = (<AddrInfo>result).unpack()
 */
          __Pyx_INCREF(__pyx_v_result);
          __pyx_v_data = __pyx_v_result;

          /* "uvloop/loop.pyx":518
 *             if AddrInfo.isinstance(result):
 *                 try:
 *                     if unpack == 0:             # <<<<<<<<<<<<<<
 *                         data = result
 *                     else:
 */
          goto __pyx_L12;
        }

        /* "uvloop/loop.pyx":521
 *                         data = result
 *                     else:
 *                         data = (<AddrInfo>result).unpack()             # <<<<<<<<<<<<<<
 *                 except Exception as ex:
 *                     if not fut.cancelled():
 */
        /*else*/ {
          __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo *)((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_v_result)->__pyx_vtab)->unpack(((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_v_result)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 521, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_v_data = __pyx_t_5;
          __pyx_t_5 = 0;
        }
        __pyx_L12:;

        /* "uvloop/loop.pyx":517
 *         def callback(result):
 *             if AddrInfo.isinstance(result):
 *                 try:             # <<<<<<<<<<<<<<
 *                     if unpack == 0:
 *                         data = result
 */
      }

      /* "uvloop/loop.pyx":526
 *                         fut.set_exception(ex)
 *                 else:
 *                     if not fut.cancelled():             # <<<<<<<<<<<<<<
 *                         fut.set_result(data)
 *             else:
 */
      /*else:*/ {
        if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 526, __pyx_L6_except_error) }
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 526, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 526, __pyx_L6_except_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 526, __pyx_L6_except_error)
        }
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 526, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_8 = ((!__pyx_t_1) != 0);
        if (__pyx_t_8) {

          /* "uvloop/loop.pyx":527
 *                 else:
 *                     if not fut.cancelled():
 *                         fut.set_result(data)             # <<<<<<<<<<<<<<
 *             else:
 *                 fut.set_exception(result)
 */
          if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 527, __pyx_L6_except_error) }
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 527, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 527, __pyx_L6_except_error)
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 527, __pyx_L6_except_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_INCREF(__pyx_v_data);
            __Pyx_GIVEREF(__pyx_v_data);
            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_data);
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 527, __pyx_L6_except_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

          /* "uvloop/loop.pyx":526
 *                         fut.set_exception(ex)
 *                 else:
 *                     if not fut.cancelled():             # <<<<<<<<<<<<<<
 *                         fut.set_result(data)
 *             else:
 */
        }
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L11_try_end;
      __pyx_L4_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/loop.pyx":522
 *                     else:
 *                         data = (<AddrInfo>result).unpack()
 *                 except Exception as ex:             # <<<<<<<<<<<<<<
 *                     if not fut.cancelled():
 *                         fut.set_exception(ex)
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.Loop._getaddrinfo.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(2, 522, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_ex = __pyx_t_6;
        /*try:*/ {

          /* "uvloop/loop.pyx":523
 *                         data = (<AddrInfo>result).unpack()
 *                 except Exception as ex:
 *                     if not fut.cancelled():             # <<<<<<<<<<<<<<
 *                         fut.set_exception(ex)
 *                 else:
 */
          if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 523, __pyx_L19_error) }
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 523, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_12)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_12);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          if (__pyx_t_12) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 523, __pyx_L19_error)
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          } else {
            __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 523, __pyx_L19_error)
          }
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 523, __pyx_L19_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_1 = ((!__pyx_t_8) != 0);
          if (__pyx_t_1) {

            /* "uvloop/loop.pyx":524
 *                 except Exception as ex:
 *                     if not fut.cancelled():
 *                         fut.set_exception(ex)             # <<<<<<<<<<<<<<
 *                 else:
 *                     if not fut.cancelled():
 */
            if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 524, __pyx_L19_error) }
            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 524, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_12 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
              __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
              if (likely(__pyx_t_12)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                __Pyx_INCREF(__pyx_t_12);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_11, function);
              }
            }
            if (!__pyx_t_12) {
              __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_ex); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 524, __pyx_L19_error)
              __Pyx_GOTREF(__pyx_t_7);
            } else {
              __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 524, __pyx_L19_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
              __Pyx_INCREF(__pyx_v_ex);
              __Pyx_GIVEREF(__pyx_v_ex);
              PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_ex);
              __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 524, __pyx_L19_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            }
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

            /* "uvloop/loop.pyx":523
 *                         data = (<AddrInfo>result).unpack()
 *                 except Exception as ex:
 *                     if not fut.cancelled():             # <<<<<<<<<<<<<<
 *                         fut.set_exception(ex)
 *                 else:
 */
          }
        }

        /* "uvloop/loop.pyx":522
 *                     else:
 *                         data = (<AddrInfo>result).unpack()
 *                 except Exception as ex:             # <<<<<<<<<<<<<<
 *                     if not fut.cancelled():
 *                         fut.set_exception(ex)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L20;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L19_error:;
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_10 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L6_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;

      /* "uvloop/loop.pyx":517
 *         def callback(result):
 *             if AddrInfo.isinstance(result):
 *                 try:             # <<<<<<<<<<<<<<
 *                     if unpack == 0:
 *                         data = result
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L11_try_end:;
    }

    /* "uvloop/loop.pyx":516
 * 
 *         def callback(result):
 *             if AddrInfo.isinstance(result):             # <<<<<<<<<<<<<<
 *                 try:
 *                     if unpack == 0:
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":529
 *                         fut.set_result(data)
 *             else:
 *                 fut.set_exception(result)             # <<<<<<<<<<<<<<
 * 
 *         AddrInfoRequest(self, host, port, family, type, proto, flags, callback)
 */
  /*else*/ {
    if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 529, __pyx_L1_error) }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_result);
      __Pyx_GIVEREF(__pyx_v_result);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_result);
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":515
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if AddrInfo.isinstance(result):
 *                 try:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("uvloop.loop.Loop._getaddrinfo.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":495
 *         return result
 * 
 *     cdef _getaddrinfo(self, object host, object port,             # <<<<<<<<<<<<<<
 *                       int family, int type,
 *                       int proto, int flags,
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__getaddrinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags, int __pyx_v_unpack) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *__pyx_cur_scope;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_getaddrinfo", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct___getaddrinfo(__pyx_ptype_6uvloop_4loop___pyx_scope_struct___getaddrinfo, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return 0;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_unpack = __pyx_v_unpack;
  __Pyx_INCREF(__pyx_v_host);
  __Pyx_INCREF(__pyx_v_port);

  /* "uvloop/loop.pyx":500
 *                       int unpack):
 * 
 *         if isinstance(port, str):             # <<<<<<<<<<<<<<
 *             port = port.encode()
 *         elif isinstance(port, int):
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_port); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":501
 * 
 *         if isinstance(port, str):
 *             port = port.encode()             # <<<<<<<<<<<<<<
 *         elif isinstance(port, int):
 *             port = str(port).encode()
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_port, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 501, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 501, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_port, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":500
 *                       int unpack):
 * 
 *         if isinstance(port, str):             # <<<<<<<<<<<<<<
 *             port = port.encode()
 *         elif isinstance(port, int):
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":502
 *         if isinstance(port, str):
 *             port = port.encode()
 *         elif isinstance(port, int):             # <<<<<<<<<<<<<<
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):
 */
  __pyx_t_2 = PyInt_Check(__pyx_v_port); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":503
 *             port = port.encode()
 *         elif isinstance(port, int):
 *             port = str(port).encode()             # <<<<<<<<<<<<<<
 *         if port is not None and not isinstance(port, bytes):
 *             raise TypeError('port must be a str, bytes or int')
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_port);
    __Pyx_GIVEREF(__pyx_v_port);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_port);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyUnicode_AsEncodedString(((PyObject*)__pyx_t_4), NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_port, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":502
 *         if isinstance(port, str):
 *             port = port.encode()
 *         elif isinstance(port, int):             # <<<<<<<<<<<<<<
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):
 */
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":504
 *         elif isinstance(port, int):
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):             # <<<<<<<<<<<<<<
 *             raise TypeError('port must be a str, bytes or int')
 * 
 */
  __pyx_t_2 = (__pyx_v_port != Py_None);
  __pyx_t_6 = (__pyx_t_2 != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_6 = PyBytes_Check(__pyx_v_port); 
  __pyx_t_2 = ((!(__pyx_t_6 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":505
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):
 *             raise TypeError('port must be a str, bytes or int')             # <<<<<<<<<<<<<<
 * 
 *         if isinstance(host, str):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 505, __pyx_L1_error)

    /* "uvloop/loop.pyx":504
 *         elif isinstance(port, int):
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):             # <<<<<<<<<<<<<<
 *             raise TypeError('port must be a str, bytes or int')
 * 
 */
  }

  /* "uvloop/loop.pyx":507
 *             raise TypeError('port must be a str, bytes or int')
 * 
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode('idna')
 *         if host is not None:
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_host); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":508
 * 
 *         if isinstance(host, str):
 *             host = host.encode('idna')             # <<<<<<<<<<<<<<
 *         if host is not None:
 *             if not isinstance(host, bytes):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_host, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_host, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":507
 *             raise TypeError('port must be a str, bytes or int')
 * 
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode('idna')
 *         if host is not None:
 */
  }

  /* "uvloop/loop.pyx":509
 *         if isinstance(host, str):
 *             host = host.encode('idna')
 *         if host is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(host, bytes):
 *                 raise TypeError('host must be a str or bytes')
 */
  __pyx_t_2 = (__pyx_v_host != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":510
 *             host = host.encode('idna')
 *         if host is not None:
 *             if not isinstance(host, bytes):             # <<<<<<<<<<<<<<
 *                 raise TypeError('host must be a str or bytes')
 * 
 */
    __pyx_t_1 = PyBytes_Check(__pyx_v_host); 
    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":511
 *         if host is not None:
 *             if not isinstance(host, bytes):
 *                 raise TypeError('host must be a str or bytes')             # <<<<<<<<<<<<<<
 * 
 *         fut = self._new_future()
 */
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 511, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(2, 511, __pyx_L1_error)

      /* "uvloop/loop.pyx":510
 *             host = host.encode('idna')
 *         if host is not None:
 *             if not isinstance(host, bytes):             # <<<<<<<<<<<<<<
 *                 raise TypeError('host must be a str or bytes')
 * 
 */
    }

    /* "uvloop/loop.pyx":509
 *         if isinstance(host, str):
 *             host = host.encode('idna')
 *         if host is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(host, bytes):
 *                 raise TypeError('host must be a str or bytes')
 */
  }

  /* "uvloop/loop.pyx":513
 *                 raise TypeError('host must be a str or bytes')
 * 
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 * 
 *         def callback(result):
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_fut = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":515
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if AddrInfo.isinstance(result):
 *                 try:
 */
  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_4Loop_12_getaddrinfo_1callback, 0, __pyx_n_s_Loop__getaddrinfo_locals_callbac, ((PyObject*)__pyx_cur_scope), __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_callback = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":531
 *                 fut.set_exception(result)
 * 
 *         AddrInfoRequest(self, host, port, family, type, proto, flags, callback)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_family); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_proto); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = PyTuple_New(8); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_v_self));
  __Pyx_INCREF(__pyx_v_host);
  __Pyx_GIVEREF(__pyx_v_host);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_host);
  __Pyx_INCREF(__pyx_v_port);
  __Pyx_GIVEREF(__pyx_v_port);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_port);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_t_7);
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  PyTuple_SET_ITEM(__pyx_t_8, 7, __pyx_v_callback);
  __pyx_t_4 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_AddrInfoRequest), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "uvloop/loop.pyx":532
 * 
 *         AddrInfoRequest(self, host, port, family, type, proto, flags, callback)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     cdef _getnameinfo(self, system.sockaddr *addr, int flags):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fut);
  __pyx_r = __pyx_cur_scope->__pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":495
 *         return result
 * 
 *     cdef _getaddrinfo(self, object host, object port,             # <<<<<<<<<<<<<<
 *                       int family, int type,
 *                       int proto, int flags,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._getaddrinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF(__pyx_v_host);
  __Pyx_XDECREF(__pyx_v_port);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":538
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if isinstance(result, tuple):
 *                 fut.set_result(result)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_12_getnameinfo_1callback(PyObject *__pyx_self, PyObject *__pyx_v_result); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_4Loop_12_getnameinfo_1callback = {"callback", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_12_getnameinfo_1callback, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_12_getnameinfo_1callback(PyObject *__pyx_self, PyObject *__pyx_v_result) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callback (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_12_getnameinfo_callback(__pyx_self, ((PyObject *)__pyx_v_result));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12_getnameinfo_callback(PyObject *__pyx_self, PyObject *__pyx_v_result) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("callback", 0);
  __pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "uvloop/loop.pyx":539
 * 
 *         def callback(result):
 *             if isinstance(result, tuple):             # <<<<<<<<<<<<<<
 *                 fut.set_result(result)
 *             else:
 */
  __pyx_t_1 = PyTuple_Check(__pyx_v_result); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":540
 *         def callback(result):
 *             if isinstance(result, tuple):
 *                 fut.set_result(result)             # <<<<<<<<<<<<<<
 *             else:
 *                 fut.set_exception(result)
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 540, __pyx_L1_error) }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_result);
      __Pyx_GIVEREF(__pyx_v_result);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_result);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":539
 * 
 *         def callback(result):
 *             if isinstance(result, tuple):             # <<<<<<<<<<<<<<
 *                 fut.set_result(result)
 *             else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":542
 *                 fut.set_result(result)
 *             else:
 *                 fut.set_exception(result)             # <<<<<<<<<<<<<<
 * 
 *         nr = NameInfoRequest(self, callback)
 */
  /*else*/ {
    if (unlikely(!__pyx_cur_scope->__pyx_v_fut)) { __Pyx_RaiseClosureNameError("fut"); __PYX_ERR(2, 542, __pyx_L1_error) }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_result);
      __Pyx_GIVEREF(__pyx_v_result);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_result);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":538
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if isinstance(result, tuple):
 *                 fut.set_result(result)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.Loop._getnameinfo.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":534
 *         return fut
 * 
 *     cdef _getnameinfo(self, system.sockaddr *addr, int flags):             # <<<<<<<<<<<<<<
 *         cdef NameInfoRequest nr
 *         fut = self._new_future()
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__getnameinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_flags) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_nr = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_getnameinfo", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_1__getnameinfo, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return 0;
  }
  __Pyx_GOTREF(__pyx_cur_scope);

  /* "uvloop/loop.pyx":536
 *     cdef _getnameinfo(self, system.sockaddr *addr, int flags):
 *         cdef NameInfoRequest nr
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 * 
 *         def callback(result):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_fut = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":538
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if isinstance(result, tuple):
 *                 fut.set_result(result)
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_4Loop_12_getnameinfo_1callback, 0, __pyx_n_s_Loop__getnameinfo_locals_callbac, ((PyObject*)__pyx_cur_scope), __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_callback = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":544
 *                 fut.set_exception(result)
 * 
 *         nr = NameInfoRequest(self, callback)             # <<<<<<<<<<<<<<
 *         nr.query(addr, flags)
 *         return fut
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_callback);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_NameInfoRequest), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_nr = ((struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":545
 * 
 *         nr = NameInfoRequest(self, callback)
 *         nr.query(addr, flags)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *)__pyx_v_nr->__pyx_base.__pyx_vtab)->query(__pyx_v_nr, __pyx_v_addr, __pyx_v_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":546
 *         nr = NameInfoRequest(self, callback)
 *         nr.query(addr, flags)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_recv(self, fut, int registered, sock, n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fut);
  __pyx_r = __pyx_cur_scope->__pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":534
 *         return fut
 * 
 *     cdef _getnameinfo(self, system.sockaddr *addr, int flags):             # <<<<<<<<<<<<<<
 *         cdef NameInfoRequest nr
 *         fut = self._new_future()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_nr);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":548
 *         return fut
 * 
 *     cdef _sock_recv(self, fut, int registered, sock, n):             # <<<<<<<<<<<<<<
 *         # _sock_recv() can add itself as an I/O callback if the operation can't
 *         # be done immediately. Don't use it directly, call sock_recv().
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_recv(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock, PyObject *__pyx_v_n) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  __Pyx_RefNannySetupContext("_sock_recv", 0);

  /* "uvloop/loop.pyx":554
 *             Handle handle
 * 
 *         fd = sock.fileno()             # <<<<<<<<<<<<<<
 *         if registered:
 *             # Remove the callback early.  It should be rare that the
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 554, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 554, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":555
 * 
 *         fd = sock.fileno()
 *         if registered:             # <<<<<<<<<<<<<<
 *             # Remove the callback early.  It should be rare that the
 *             # selector says the fd is ready but the call still returns
 */
  __pyx_t_4 = (__pyx_v_registered != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":560
 *             # EAGAIN, and I am willing to take a hit in that case in
 *             # order to simplify the common case.
 *             self._remove_reader(fd)             # <<<<<<<<<<<<<<
 *         if fut.cancelled():
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__remove_reader(__pyx_v_self, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":555
 * 
 *         fd = sock.fileno()
 *         if registered:             # <<<<<<<<<<<<<<
 *             # Remove the callback early.  It should be rare that the
 *             # selector says the fd is ready but the call still returns
 */
  }

  /* "uvloop/loop.pyx":561
 *             # order to simplify the common case.
 *             self._remove_reader(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         try:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 561, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 561, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 561, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":562
 *             self._remove_reader(fd)
 *         if fut.cancelled():
 *             return             # <<<<<<<<<<<<<<
 *         try:
 *             data = sock.recv(n)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":561
 *             # order to simplify the common case.
 *             self._remove_reader(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         try:
 */
  }

  /* "uvloop/loop.pyx":563
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             data = sock.recv(n)
 *         except (BlockingIOError, InterruptedError):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "uvloop/loop.pyx":564
 *             return
 *         try:
 *             data = sock.recv(n)             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             handle = new_MethodHandle4(
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_recv); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 564, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 564, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 564, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_n);
        __Pyx_GIVEREF(__pyx_v_n);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_n);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 564, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_data = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":563
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             data = sock.recv(n)
 *         except (BlockingIOError, InterruptedError):
 */
    }

    /* "uvloop/loop.pyx":580
 *                 if not registered:
 *                     self._sock_try_read_total += 1
 *             fut.set_result(data)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_sendall(self, fut, int registered, sock, data):
 */
    /*else:*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 580, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 580, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 580, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_v_data);
        __Pyx_GIVEREF(__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_data);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 580, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":565
 *         try:
 *             data = sock.recv(n)
 *         except (BlockingIOError, InterruptedError):             # <<<<<<<<<<<<<<
 *             handle = new_MethodHandle4(
 *                 self,
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BlockingIOError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_InterruptedError);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(2, 565, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);

      /* "uvloop/loop.pyx":566
 *             data = sock.recv(n)
 *         except (BlockingIOError, InterruptedError):
 *             handle = new_MethodHandle4(             # <<<<<<<<<<<<<<
 *                 self,
 *                 "Loop._sock_recv",
 */
      __pyx_t_8 = __pyx_f_6uvloop_4loop_new_MethodHandle4(__pyx_v_self, __pyx_kp_u_Loop__sock_recv, ((__pyx_t_6uvloop_4loop_method4_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_recv)), ((PyObject *)__pyx_v_self), __pyx_v_fut, __pyx_int_1, __pyx_v_sock, __pyx_v_n); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 566, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 566, __pyx_L7_except_error)
      __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_8);
      __pyx_t_8 = 0;

      /* "uvloop/loop.pyx":573
 *                 fut, 1, sock, n)
 * 
 *             self._add_reader(fd, handle)             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             fut.set_exception(exc)
 */
      __pyx_t_8 = __pyx_f_6uvloop_4loop_4Loop__add_reader(__pyx_v_self, __pyx_v_fd, __pyx_v_handle); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 573, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "uvloop/loop.pyx":574
 * 
 *             self._add_reader(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(2, 574, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      /*try:*/ {

        /* "uvloop/loop.pyx":575
 *             self._add_reader(fd, handle)
 *         except Exception as exc:
 *             fut.set_exception(exc)             # <<<<<<<<<<<<<<
 *         else:
 *             IF DEBUG:
 */
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 575, __pyx_L20_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (!__pyx_t_11) {
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 575, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_8);
        } else {
          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 575, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
          __Pyx_INCREF(__pyx_v_exc);
          __Pyx_GIVEREF(__pyx_v_exc);
          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_exc);
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 575, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }

      /* "uvloop/loop.pyx":574
 * 
 *             self._add_reader(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L21;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L20_error:;
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __pyx_t_9 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
          }
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
          goto __pyx_L7_except_error;
        }
        __pyx_L21:;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L6_exception_handled;
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "uvloop/loop.pyx":563
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             data = sock.recv(n)
 *         except (BlockingIOError, InterruptedError):
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L12_try_end:;
  }

  /* "uvloop/loop.pyx":548
 *         return fut
 * 
 *     cdef _sock_recv(self, fut, int registered, sock, n):             # <<<<<<<<<<<<<<
 *         # _sock_recv() can add itself as an I/O callback if the operation can't
 *         # be done immediately. Don't use it directly, call sock_recv().
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":582
 *             fut.set_result(data)
 * 
 *     cdef _sock_sendall(self, fut, int registered, sock, data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_sendall(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock, PyObject *__pyx_v_data) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_n = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  Py_ssize_t __pyx_t_21;
  __Pyx_RefNannySetupContext("_sock_sendall", 0);
  __Pyx_INCREF(__pyx_v_data);

  /* "uvloop/loop.pyx":586
 *             Handle handle
 * 
 *         fd = sock.fileno()             # <<<<<<<<<<<<<<
 * 
 *         if registered:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 586, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 586, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":588
 *         fd = sock.fileno()
 * 
 *         if registered:             # <<<<<<<<<<<<<<
 *             self._remove_writer(fd)
 *         if fut.cancelled():
 */
  __pyx_t_4 = (__pyx_v_registered != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":589
 * 
 *         if registered:
 *             self._remove_writer(fd)             # <<<<<<<<<<<<<<
 *         if fut.cancelled():
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__remove_writer(__pyx_v_self, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":588
 *         fd = sock.fileno()
 * 
 *         if registered:             # <<<<<<<<<<<<<<
 *             self._remove_writer(fd)
 *         if fut.cancelled():
 */
  }

  /* "uvloop/loop.pyx":590
 *         if registered:
 *             self._remove_writer(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 590, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 590, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":591
 *             self._remove_writer(fd)
 *         if fut.cancelled():
 *             return             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":590
 *         if registered:
 *             self._remove_writer(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/loop.pyx":593
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             n = sock.send(data)
 *         except (BlockingIOError, InterruptedError):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "uvloop/loop.pyx":594
 * 
 *         try:
 *             n = sock.send(data)             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             n = 0
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_send); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 594, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 594, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 594, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_data);
        __Pyx_GIVEREF(__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_data);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 594, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_n = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":593
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             n = sock.send(data)
 *         except (BlockingIOError, InterruptedError):
 */
    }

    /* "uvloop/loop.pyx":601
 *             return
 *         else:
 *             IF DEBUG:             # <<<<<<<<<<<<<<
 *                 if not registered:
 *                     # This can be a partial success, i.e. only part
 */
    /*else:*/ {
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":595
 *         try:
 *             n = sock.send(data)
 *         except (BlockingIOError, InterruptedError):             # <<<<<<<<<<<<<<
 *             n = 0
 *         except Exception as exc:
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BlockingIOError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_InterruptedError);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_sendall", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(2, 595, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);

      /* "uvloop/loop.pyx":596
 *             n = sock.send(data)
 *         except (BlockingIOError, InterruptedError):
 *             n = 0             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             fut.set_exception(exc)
 */
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_int_0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "uvloop/loop.pyx":597
 *         except (BlockingIOError, InterruptedError):
 *             n = 0
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *             return
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_sendall", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(2, 597, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      /*try:*/ {

        /* "uvloop/loop.pyx":598
 *             n = 0
 *         except Exception as exc:
 *             fut.set_exception(exc)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 598, __pyx_L20_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (!__pyx_t_11) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 598, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 598, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
          __Pyx_INCREF(__pyx_v_exc);
          __Pyx_GIVEREF(__pyx_v_exc);
          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_exc);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 598, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "uvloop/loop.pyx":599
 *         except Exception as exc:
 *             fut.set_exception(exc)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             IF DEBUG:
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L19_return;
      }

      /* "uvloop/loop.pyx":597
 *         except (BlockingIOError, InterruptedError):
 *             n = 0
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *             return
 */
      /*finally:*/ {
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L20_error:;
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __pyx_t_9 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
          }
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
          goto __pyx_L7_except_error;
        }
        __pyx_L19_return: {
          __pyx_t_20 = __pyx_r;
          __pyx_r = 0;
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          __pyx_r = __pyx_t_20;
          __pyx_t_20 = 0;
          goto __pyx_L8_except_return;
        }
      }
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "uvloop/loop.pyx":593
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             n = sock.send(data)
 *         except (BlockingIOError, InterruptedError):
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L12_try_end:;
  }

  /* "uvloop/loop.pyx":607
 *                     self._sock_try_write_total += 1
 * 
 *         if n == len(data):             # <<<<<<<<<<<<<<
 *             fut.set_result(None)
 *         else:
 */
  __pyx_t_21 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_21 == -1)) __PYX_ERR(2, 607, __pyx_L1_error)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_21); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_n, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":608
 * 
 *         if n == len(data):
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 *         else:
 *             if n:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":607
 *                     self._sock_try_write_total += 1
 * 
 *         if n == len(data):             # <<<<<<<<<<<<<<
 *             fut.set_result(None)
 *         else:
 */
    goto __pyx_L26;
  }

  /* "uvloop/loop.pyx":610
 *             fut.set_result(None)
 *         else:
 *             if n:             # <<<<<<<<<<<<<<
 *                 data = data[n:]
 * 
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_n); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 610, __pyx_L1_error)
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":611
 *         else:
 *             if n:
 *                 data = data[n:]             # <<<<<<<<<<<<<<
 * 
 *             handle = new_MethodHandle4(
 */
      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_data, 0, 0, &__pyx_v_n, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":610
 *             fut.set_result(None)
 *         else:
 *             if n:             # <<<<<<<<<<<<<<
 *                 data = data[n:]
 * 
 */
    }

    /* "uvloop/loop.pyx":613
 *                 data = data[n:]
 * 
 *             handle = new_MethodHandle4(             # <<<<<<<<<<<<<<
 *                 self,
 *                 "Loop._sock_sendall",
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_new_MethodHandle4(__pyx_v_self, __pyx_kp_u_Loop__sock_sendall, ((__pyx_t_6uvloop_4loop_method4_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_sendall)), ((PyObject *)__pyx_v_self), __pyx_v_fut, __pyx_int_1, __pyx_v_sock, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 613, __pyx_L1_error)
    __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":620
 *                 fut, 1, sock, data)
 * 
 *             self._add_writer(fd, handle)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_accept(self, fut, int registered, sock):
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__add_writer(__pyx_v_self, __pyx_v_fd, __pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L26:;

  /* "uvloop/loop.pyx":582
 *             fut.set_result(data)
 * 
 *     cdef _sock_sendall(self, fut, int registered, sock, data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_sendall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":622
 *             self._add_writer(fd, handle)
 * 
 *     cdef _sock_accept(self, fut, int registered, sock):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_accept(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, int __pyx_v_registered, PyObject *__pyx_v_sock) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_conn = NULL;
  PyObject *__pyx_v_address = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  __Pyx_RefNannySetupContext("_sock_accept", 0);

  /* "uvloop/loop.pyx":626
 *             Handle handle
 * 
 *         fd = sock.fileno()             # <<<<<<<<<<<<<<
 *         if registered:
 *             self._remove_reader(fd)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 626, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 626, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":627
 * 
 *         fd = sock.fileno()
 *         if registered:             # <<<<<<<<<<<<<<
 *             self._remove_reader(fd)
 *         if fut.cancelled():
 */
  __pyx_t_4 = (__pyx_v_registered != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":628
 *         fd = sock.fileno()
 *         if registered:
 *             self._remove_reader(fd)             # <<<<<<<<<<<<<<
 *         if fut.cancelled():
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__remove_reader(__pyx_v_self, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":627
 * 
 *         fd = sock.fileno()
 *         if registered:             # <<<<<<<<<<<<<<
 *             self._remove_reader(fd)
 *         if fut.cancelled():
 */
  }

  /* "uvloop/loop.pyx":629
 *         if registered:
 *             self._remove_reader(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         try:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 629, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 629, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":630
 *             self._remove_reader(fd)
 *         if fut.cancelled():
 *             return             # <<<<<<<<<<<<<<
 *         try:
 *             conn, address = sock.accept()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":629
 *         if registered:
 *             self._remove_reader(fd)
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         try:
 */
  }

  /* "uvloop/loop.pyx":631
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             conn, address = sock.accept()
 *             conn.setblocking(False)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "uvloop/loop.pyx":632
 *             return
 *         try:
 *             conn, address = sock.accept()             # <<<<<<<<<<<<<<
 *             conn.setblocking(False)
 *         except (BlockingIOError, InterruptedError):
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_accept); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 632, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 632, __pyx_L5_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 632, __pyx_L5_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(2, 632, __pyx_L5_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        #else
        __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 632, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 632, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 632, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_2);
        index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(2, 632, __pyx_L5_error)
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L14_unpacking_done;
        __pyx_L13_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(2, 632, __pyx_L5_error)
        __pyx_L14_unpacking_done:;
      }
      __pyx_v_conn = __pyx_t_2;
      __pyx_t_2 = 0;
      __pyx_v_address = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":633
 *         try:
 *             conn, address = sock.accept()
 *             conn.setblocking(False)             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             handle = new_MethodHandle3(
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_conn, __pyx_n_s_setblocking); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 633, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":631
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             conn, address = sock.accept()
 *             conn.setblocking(False)
 */
    }

    /* "uvloop/loop.pyx":646
 *             fut.set_exception(exc)
 *         else:
 *             fut.set_result((conn, address))             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_connect(self, fut, sock, address):
 */
    /*else:*/ {
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 646, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 646, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_conn);
      __Pyx_GIVEREF(__pyx_v_conn);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_conn);
      __Pyx_INCREF(__pyx_v_address);
      __Pyx_GIVEREF(__pyx_v_address);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_address);
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 646, __pyx_L7_except_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 646, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 646, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":634
 *             conn, address = sock.accept()
 *             conn.setblocking(False)
 *         except (BlockingIOError, InterruptedError):             # <<<<<<<<<<<<<<
 *             handle = new_MethodHandle3(
 *                 self,
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BlockingIOError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_InterruptedError);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_10) < 0) __PYX_ERR(2, 634, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_10);

      /* "uvloop/loop.pyx":635
 *             conn.setblocking(False)
 *         except (BlockingIOError, InterruptedError):
 *             handle = new_MethodHandle3(             # <<<<<<<<<<<<<<
 *                 self,
 *                 "Loop._sock_accept",
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_new_MethodHandle3(__pyx_v_self, __pyx_kp_u_Loop__sock_accept, ((__pyx_t_6uvloop_4loop_method3_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_accept)), ((PyObject *)__pyx_v_self), __pyx_v_fut, __pyx_int_1, __pyx_v_sock); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 635, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 635, __pyx_L7_except_error)
      __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":642
 *                 fut, 1, sock)
 * 
 *             self._add_reader(fd, handle)             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             fut.set_exception(exc)
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__add_reader(__pyx_v_self, __pyx_v_fd, __pyx_v_handle); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 642, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "uvloop/loop.pyx":643
 * 
 *             self._add_reader(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(2, 643, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      /*try:*/ {

        /* "uvloop/loop.pyx":644
 *             self._add_reader(fd, handle)
 *         except Exception as exc:
 *             fut.set_exception(exc)             # <<<<<<<<<<<<<<
 *         else:
 *             fut.set_result((conn, address))
 */
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 644, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_12 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_12)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_12);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_12) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_exc); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 644, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 644, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
          __Pyx_INCREF(__pyx_v_exc);
          __Pyx_GIVEREF(__pyx_v_exc);
          PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_exc);
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 644, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }

      /* "uvloop/loop.pyx":643
 * 
 *             self._add_reader(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L23;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L22_error:;
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __pyx_t_11 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
          }
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
          goto __pyx_L7_except_error;
        }
        __pyx_L23:;
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L6_exception_handled;
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "uvloop/loop.pyx":631
 *         if fut.cancelled():
 *             return
 *         try:             # <<<<<<<<<<<<<<
 *             conn, address = sock.accept()
 *             conn.setblocking(False)
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L12_try_end:;
  }

  /* "uvloop/loop.pyx":622
 *             self._add_writer(fd, handle)
 * 
 *     cdef _sock_accept(self, fut, int registered, sock):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_conn);
  __Pyx_XDECREF(__pyx_v_address);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":660
 *             # becomes writable to be notified when the connection succeed or
 *             # fails.
 *             fut.add_done_callback(lambda fut: self._remove_writer(fd))             # <<<<<<<<<<<<<<
 * 
 *             handle = new_MethodHandle3(
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_13_sock_connect_lambda(PyObject *__pyx_self, PyObject *__pyx_v_fut); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_4Loop_13_sock_connect_lambda = {"lambda", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_13_sock_connect_lambda, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_13_sock_connect_lambda(PyObject *__pyx_self, PyObject *__pyx_v_fut) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda (wrapper)", 0);
  __pyx_r = __pyx_lambda_funcdef_lambda(__pyx_self, ((PyObject *)__pyx_v_fut));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_fut) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("lambda", 0);
  __pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(2, 660, __pyx_L1_error) }
  if (unlikely(!__pyx_cur_scope->__pyx_v_fd)) { __Pyx_RaiseClosureNameError("fd"); __PYX_ERR(2, 660, __pyx_L1_error) }
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_fd;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__remove_writer(__pyx_cur_scope->__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":648
 *             fut.set_result((conn, address))
 * 
 *     cdef _sock_connect(self, fut, sock, address):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_connect(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, PyObject *__pyx_v_sock, PyObject *__pyx_v_address) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  __Pyx_RefNannySetupContext("_sock_connect", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_2__sock_connect(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_2__sock_connect, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return 0;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "uvloop/loop.pyx":652
 *             Handle handle
 * 
 *         fd = sock.fileno()             # <<<<<<<<<<<<<<
 *         try:
 *             sock.connect(address)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 652, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 652, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":653
 * 
 *         fd = sock.fileno()
 *         try:             # <<<<<<<<<<<<<<
 *             sock.connect(address)
 *         except (BlockingIOError, InterruptedError):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "uvloop/loop.pyx":654
 *         fd = sock.fileno()
 *         try:
 *             sock.connect(address)             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             # Issue #23618: When the C function connect() fails with EINTR, the
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_connect); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 654, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 654, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 654, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_address);
        __Pyx_GIVEREF(__pyx_v_address);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_address);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 654, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":653
 * 
 *         fd = sock.fileno()
 *         try:             # <<<<<<<<<<<<<<
 *             sock.connect(address)
 *         except (BlockingIOError, InterruptedError):
 */
    }

    /* "uvloop/loop.pyx":673
 *             fut.set_exception(exc)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):
 */
    /*else:*/ {
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 673, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 673, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":655
 *         try:
 *             sock.connect(address)
 *         except (BlockingIOError, InterruptedError):             # <<<<<<<<<<<<<<
 *             # Issue #23618: When the C function connect() fails with EINTR, the
 *             # connection runs in background. We have to wait until the socket
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BlockingIOError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_InterruptedError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(2, 655, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_7);

      /* "uvloop/loop.pyx":660
 *             # becomes writable to be notified when the connection succeed or
 *             # fails.
 *             fut.add_done_callback(lambda fut: self._remove_writer(fd))             # <<<<<<<<<<<<<<
 * 
 *             handle = new_MethodHandle3(
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 660, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_4Loop_13_sock_connect_lambda, 0, __pyx_n_s_Loop__sock_connect_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_uvloop_loop, __pyx_d, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 660, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_11) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 660, __pyx_L5_except_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 660, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
        __pyx_t_10 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 660, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":663
 * 
 *             handle = new_MethodHandle3(
 *                 self,             # <<<<<<<<<<<<<<
 *                 "Loop._sock_connect",
 *                 <method3_t*>&self._sock_connect_cb,
 */
      __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_INCREF(__pyx_t_3);

      /* "uvloop/loop.pyx":666
 *                 "Loop._sock_connect",
 *                 <method3_t*>&self._sock_connect_cb,
 *                 self,             # <<<<<<<<<<<<<<
 *                 fut, sock, address)
 * 
 */
      __pyx_t_9 = ((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_INCREF(__pyx_t_9);

      /* "uvloop/loop.pyx":662
 *             fut.add_done_callback(lambda fut: self._remove_writer(fd))
 * 
 *             handle = new_MethodHandle3(             # <<<<<<<<<<<<<<
 *                 self,
 *                 "Loop._sock_connect",
 */
      __pyx_t_12 = __pyx_f_6uvloop_4loop_new_MethodHandle3(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_3), __pyx_kp_u_Loop__sock_connect, ((__pyx_t_6uvloop_4loop_method3_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_connect_cb)), __pyx_t_9, __pyx_v_fut, __pyx_v_sock, __pyx_v_address); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 662, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 662, __pyx_L5_except_error)
      __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_12);
      __pyx_t_12 = 0;

      /* "uvloop/loop.pyx":669
 *                 fut, sock, address)
 * 
 *             self._add_writer(fd, handle)             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             fut.set_exception(exc)
 */
      __pyx_t_12 = __pyx_cur_scope->__pyx_v_fd;
      __Pyx_INCREF(__pyx_t_12);
      __pyx_t_9 = __pyx_f_6uvloop_4loop_4Loop__add_writer(__pyx_cur_scope->__pyx_v_self, __pyx_t_12, __pyx_v_handle); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 669, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "uvloop/loop.pyx":670
 * 
 *             self._add_writer(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(2, 670, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      /*try:*/ {

        /* "uvloop/loop.pyx":671
 *             self._add_writer(fd, handle)
 *         except Exception as exc:
 *             fut.set_exception(exc)             # <<<<<<<<<<<<<<
 *         else:
 *             fut.set_result(None)
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 671, __pyx_L18_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_3 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
          }
        }
        if (!__pyx_t_3) {
          __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_exc); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 671, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_9);
        } else {
          __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 671, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
          __Pyx_INCREF(__pyx_v_exc);
          __Pyx_GIVEREF(__pyx_v_exc);
          PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_exc);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 671, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/loop.pyx":670
 * 
 *             self._add_writer(fd, handle)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L19;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L18_error:;
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __pyx_t_8 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
          }
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
          goto __pyx_L5_except_error;
        }
        __pyx_L19:;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/loop.pyx":653
 * 
 *         fd = sock.fileno()
 *         try:             # <<<<<<<<<<<<<<
 *             sock.connect(address)
 *         except (BlockingIOError, InterruptedError):
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_L10_try_end:;
  }

  /* "uvloop/loop.pyx":648
 *             fut.set_result((conn, address))
 * 
 *     cdef _sock_connect(self, fut, sock, address):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle handle
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":675
 *             fut.set_result(None)
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):             # <<<<<<<<<<<<<<
 *         if fut.cancelled():
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_connect_cb(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fut, PyObject *__pyx_v_sock, PyObject *__pyx_v_address) {
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  __Pyx_RefNannySetupContext("_sock_connect_cb", 0);

  /* "uvloop/loop.pyx":676
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 676, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 676, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 676, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":677
 *     cdef _sock_connect_cb(self, fut, sock, address):
 *         if fut.cancelled():
 *             return             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":676
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):
 *         if fut.cancelled():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/loop.pyx":679
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)
 *             if err != 0:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "uvloop/loop.pyx":680
 * 
 *         try:
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)             # <<<<<<<<<<<<<<
 *             if err != 0:
 *                 # Jump to any except clause below.
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_getsockopt); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 680, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_int(SOL_SOCKET); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 680, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyInt_From_int(SO_ERROR); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 680, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 680, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_8);
      __pyx_t_3 = 0;
      __pyx_t_8 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 680, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_err = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":681
 *         try:
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)
 *             if err != 0:             # <<<<<<<<<<<<<<
 *                 # Jump to any except clause below.
 *                 raise OSError(err, 'Connect call failed %s' % (address,))
 */
      __pyx_t_1 = PyObject_RichCompare(__pyx_v_err, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 681, __pyx_L4_error)
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 681, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_4) {

        /* "uvloop/loop.pyx":683
 *             if err != 0:
 *                 # Jump to any except clause below.
 *                 raise OSError(err, 'Connect call failed %s' % (address,))             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             # socket is still registered, the callback will be retried later
 */
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 683, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_address);
        __Pyx_GIVEREF(__pyx_v_address);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_address);
        __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_Connect_call_failed_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 683, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 683, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_err);
        __Pyx_GIVEREF(__pyx_v_err);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_err);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 683, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(2, 683, __pyx_L4_error)

        /* "uvloop/loop.pyx":681
 *         try:
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)
 *             if err != 0:             # <<<<<<<<<<<<<<
 *                 # Jump to any except clause below.
 *                 raise OSError(err, 'Connect call failed %s' % (address,))
 */
      }

      /* "uvloop/loop.pyx":679
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)
 *             if err != 0:
 */
    }

    /* "uvloop/loop.pyx":690
 *             fut.set_exception(exc)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_set_reuseport(self, int fd):
 */
    /*else:*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 690, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 690, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":684
 *                 # Jump to any except clause below.
 *                 raise OSError(err, 'Connect call failed %s' % (address,))
 *         except (BlockingIOError, InterruptedError):             # <<<<<<<<<<<<<<
 *             # socket is still registered, the callback will be retried later
 *             pass
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BlockingIOError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_InterruptedError);
    if (__pyx_t_12) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L5_exception_handled;
    }

    /* "uvloop/loop.pyx":687
 *             # socket is still registered, the callback will be retried later
 *             pass
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_11) < 0) __PYX_ERR(2, 687, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      /*try:*/ {

        /* "uvloop/loop.pyx":688
 *             pass
 *         except Exception as exc:
 *             fut.set_exception(exc)             # <<<<<<<<<<<<<<
 *         else:
 *             fut.set_result(None)
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 688, __pyx_L18_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (!__pyx_t_9) {
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 688, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_8);
        } else {
          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 688, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
          __Pyx_INCREF(__pyx_v_exc);
          __Pyx_GIVEREF(__pyx_v_exc);
          PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_exc);
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 688, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }

      /* "uvloop/loop.pyx":687
 *             # socket is still registered, the callback will be retried later
 *             pass
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             fut.set_exception(exc)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L19;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L18_error:;
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
          }
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
          goto __pyx_L6_except_error;
        }
        __pyx_L19:;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":679
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             err = sock.getsockopt(uv.SOL_SOCKET, uv.SO_ERROR)
 *             if err != 0:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":675
 *             fut.set_result(None)
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):             # <<<<<<<<<<<<<<
 *         if fut.cancelled():
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_connect_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":692
 *             fut.set_result(None)
 * 
 *     cdef _sock_set_reuseport(self, int fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__sock_set_reuseport(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, int __pyx_v_fd) {
  int __pyx_v_err;
  int __pyx_v_reuseport_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_sock_set_reuseport", 0);

  /* "uvloop/loop.pyx":695
 *         cdef:
 *             int err
 *             int reuseport_flag = 1             # <<<<<<<<<<<<<<
 * 
 *         err = system.setsockopt(
 */
  __pyx_v_reuseport_flag = 1;

  /* "uvloop/loop.pyx":697
 *             int reuseport_flag = 1
 * 
 *         err = system.setsockopt(             # <<<<<<<<<<<<<<
 *             fd,
 *             uv.SOL_SOCKET,
 */
  __pyx_v_err = setsockopt(__pyx_v_fd, SOL_SOCKET, __pyx_v_6uvloop_4loop_SO_REUSEPORT, ((char *)(&__pyx_v_reuseport_flag)), (sizeof(__pyx_v_reuseport_flag)));

  /* "uvloop/loop.pyx":704
 *             sizeof(reuseport_flag))
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(-errno.errno)
 * 
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":705
 * 
 *         if err < 0:
 *             raise convert_error(-errno.errno)             # <<<<<<<<<<<<<<
 * 
 *     cdef _set_coroutine_wrapper(self, bint enabled):
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error((-errno)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 705, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 705, __pyx_L1_error)

    /* "uvloop/loop.pyx":704
 *             sizeof(reuseport_flag))
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(-errno.errno)
 * 
 */
  }

  /* "uvloop/loop.pyx":692
 *             fut.set_result(None)
 * 
 *     cdef _sock_set_reuseport(self, int fd):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop._sock_set_reuseport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":707
 *             raise convert_error(-errno.errno)
 * 
 *     cdef _set_coroutine_wrapper(self, bint enabled):             # <<<<<<<<<<<<<<
 *         enabled = bool(enabled)
 *         if self._coroutine_wrapper_set == enabled:
 */

static PyObject *__pyx_f_6uvloop_4loop_4Loop__set_coroutine_wrapper(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, int __pyx_v_enabled) {
  PyObject *__pyx_v_wrapper = NULL;
  PyObject *__pyx_v_current_wrapper = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_set_coroutine_wrapper", 0);

  /* "uvloop/loop.pyx":708
 * 
 *     cdef _set_coroutine_wrapper(self, bint enabled):
 *         enabled = bool(enabled)             # <<<<<<<<<<<<<<
 *         if self._coroutine_wrapper_set == enabled:
 *             return
 */
  __pyx_t_1 = __pyx_v_enabled;
  __pyx_v_enabled = (!(!__pyx_t_1));

  /* "uvloop/loop.pyx":709
 *     cdef _set_coroutine_wrapper(self, bint enabled):
 *         enabled = bool(enabled)
 *         if self._coroutine_wrapper_set == enabled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_coroutine_wrapper_set == __pyx_v_enabled) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":710
 *         enabled = bool(enabled)
 *         if self._coroutine_wrapper_set == enabled:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         wrapper = aio_debug_wrapper
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":709
 *     cdef _set_coroutine_wrapper(self, bint enabled):
 *         enabled = bool(enabled)
 *         if self._coroutine_wrapper_set == enabled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/loop.pyx":712
 *             return
 * 
 *         wrapper = aio_debug_wrapper             # <<<<<<<<<<<<<<
 *         current_wrapper = sys_get_coroutine_wrapper()
 * 
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_debug_wrapper);
  __pyx_v_wrapper = __pyx_v_6uvloop_4loop_aio_debug_wrapper;

  /* "uvloop/loop.pyx":713
 * 
 *         wrapper = aio_debug_wrapper
 *         current_wrapper = sys_get_coroutine_wrapper()             # <<<<<<<<<<<<<<
 * 
 *         if enabled:
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 713, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 713, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_current_wrapper = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":715
 *         current_wrapper = sys_get_coroutine_wrapper()
 * 
 *         if enabled:             # <<<<<<<<<<<<<<
 *             if current_wrapper not in (None, wrapper):
 *                 warnings.warn(
 */
  __pyx_t_1 = (__pyx_v_enabled != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":716
 * 
 *         if enabled:
 *             if current_wrapper not in (None, wrapper):             # <<<<<<<<<<<<<<
 *                 warnings.warn(
 *                     "loop.set_debug(True): cannot set debug coroutine "
 */
    __Pyx_INCREF(__pyx_v_current_wrapper);
    __pyx_t_2 = __pyx_v_current_wrapper;
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 716, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(2, 716, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_5) {
    } else {
      __pyx_t_1 = __pyx_t_5;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_wrapper, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 716, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(2, 716, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_5;
    __pyx_L6_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = (__pyx_t_1 != 0);
    if (__pyx_t_5) {

      /* "uvloop/loop.pyx":717
 *         if enabled:
 *             if current_wrapper not in (None, wrapper):
 *                 warnings.warn(             # <<<<<<<<<<<<<<
 *                     "loop.set_debug(True): cannot set debug coroutine "
 *                     "wrapper; another wrapper is already set %r" %
 */
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_warn); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":719
 *                 warnings.warn(
 *                     "loop.set_debug(True): cannot set debug coroutine "
 *                     "wrapper; another wrapper is already set %r" %             # <<<<<<<<<<<<<<
 *                     current_wrapper, RuntimeWarning)
 *             else:
 */
      __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_loop_set_debug_True_cannot_set_d, __pyx_v_current_wrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 719, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "uvloop/loop.pyx":720
 *                     "loop.set_debug(True): cannot set debug coroutine "
 *                     "wrapper; another wrapper is already set %r" %
 *                     current_wrapper, RuntimeWarning)             # <<<<<<<<<<<<<<
 *             else:
 *                 sys_set_coroutine_wrapper(wrapper)
 */
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
      __Pyx_INCREF(__pyx_builtin_RuntimeWarning);
      __Pyx_GIVEREF(__pyx_builtin_RuntimeWarning);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_builtin_RuntimeWarning);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":716
 * 
 *         if enabled:
 *             if current_wrapper not in (None, wrapper):             # <<<<<<<<<<<<<<
 *                 warnings.warn(
 *                     "loop.set_debug(True): cannot set debug coroutine "
 */
      goto __pyx_L5;
    }

    /* "uvloop/loop.pyx":722
 *                     current_wrapper, RuntimeWarning)
 *             else:
 *                 sys_set_coroutine_wrapper(wrapper)             # <<<<<<<<<<<<<<
 *                 self._coroutine_wrapper_set = True
 *         else:
 */
    /*else*/ {
      __Pyx_INCREF(__pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper);
      __pyx_t_4 = __pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper; __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_wrapper); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 722, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 722, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_v_wrapper);
        __Pyx_GIVEREF(__pyx_v_wrapper);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_wrapper);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 722, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":723
 *             else:
 *                 sys_set_coroutine_wrapper(wrapper)
 *                 self._coroutine_wrapper_set = True             # <<<<<<<<<<<<<<
 *         else:
 *             if current_wrapper not in (None, wrapper):
 */
      __pyx_v_self->_coroutine_wrapper_set = 1;
    }
    __pyx_L5:;

    /* "uvloop/loop.pyx":715
 *         current_wrapper = sys_get_coroutine_wrapper()
 * 
 *         if enabled:             # <<<<<<<<<<<<<<
 *             if current_wrapper not in (None, wrapper):
 *                 warnings.warn(
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":725
 *                 self._coroutine_wrapper_set = True
 *         else:
 *             if current_wrapper not in (None, wrapper):             # <<<<<<<<<<<<<<
 *                 warnings.warn(
 *                     "loop.set_debug(False): cannot unset debug coroutine "
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_current_wrapper);
    __pyx_t_2 = __pyx_v_current_wrapper;
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 725, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 725, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_1) {
    } else {
      __pyx_t_5 = __pyx_t_1;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_v_wrapper, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 725, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 725, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __pyx_t_1;
    __pyx_L9_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_1 = (__pyx_t_5 != 0);
    if (__pyx_t_1) {

      /* "uvloop/loop.pyx":726
 *         else:
 *             if current_wrapper not in (None, wrapper):
 *                 warnings.warn(             # <<<<<<<<<<<<<<
 *                     "loop.set_debug(False): cannot unset debug coroutine "
 *                     "wrapper; another wrapper was set %r" %
 */
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/loop.pyx":728
 *                 warnings.warn(
 *                     "loop.set_debug(False): cannot unset debug coroutine "
 *                     "wrapper; another wrapper was set %r" %             # <<<<<<<<<<<<<<
 *                     current_wrapper, RuntimeWarning)
 *             else:
 */
      __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_loop_set_debug_False_cannot_unse, __pyx_v_current_wrapper); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);

      /* "uvloop/loop.pyx":729
 *                     "loop.set_debug(False): cannot unset debug coroutine "
 *                     "wrapper; another wrapper was set %r" %
 *                     current_wrapper, RuntimeWarning)             # <<<<<<<<<<<<<<
 *             else:
 *                 sys_set_coroutine_wrapper(None)
 */
      __pyx_t_8 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_4);
      __Pyx_INCREF(__pyx_builtin_RuntimeWarning);
      __Pyx_GIVEREF(__pyx_builtin_RuntimeWarning);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_builtin_RuntimeWarning);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":725
 *                 self._coroutine_wrapper_set = True
 *         else:
 *             if current_wrapper not in (None, wrapper):             # <<<<<<<<<<<<<<
 *                 warnings.warn(
 *                     "loop.set_debug(False): cannot unset debug coroutine "
 */
      goto __pyx_L8;
    }

    /* "uvloop/loop.pyx":731
 *                     current_wrapper, RuntimeWarning)
 *             else:
 *                 sys_set_coroutine_wrapper(None)             # <<<<<<<<<<<<<<
 *                 self._coroutine_wrapper_set = False
 * 
 */
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":732
 *             else:
 *                 sys_set_coroutine_wrapper(None)
 *                 self._coroutine_wrapper_set = False             # <<<<<<<<<<<<<<
 * 
 *     IF DEBUG:
 */
      __pyx_v_self->_coroutine_wrapper_set = 0;
    }
    __pyx_L8:;
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":707
 *             raise convert_error(-errno.errno)
 * 
 *     cdef _set_coroutine_wrapper(self, bint enabled):             # <<<<<<<<<<<<<<
 *         enabled = bool(enabled)
 *         if self._coroutine_wrapper_set == enabled:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Loop._set_coroutine_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_wrapper);
  __Pyx_XDECREF(__pyx_v_current_wrapper);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":826
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{}.{} running={} closed={} debug={}>'.format(
 *                     self.__class__.__module__,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_7__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_6__repr__(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_6__repr__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/loop.pyx":827
 * 
 *     def __repr__(self):
 *         return '<{}.{} running={} closed={} debug={}>'.format(             # <<<<<<<<<<<<<<
 *                     self.__class__.__module__,
 *                     self.__class__.__name__,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_running_closed_debug, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/loop.pyx":828
 *     def __repr__(self):
 *         return '<{}.{} running={} closed={} debug={}>'.format(
 *                     self.__class__.__module__,             # <<<<<<<<<<<<<<
 *                     self.__class__.__name__,
 *                     self.is_running(),
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_module); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":829
 *         return '<{}.{} running={} closed={} debug={}>'.format(
 *                     self.__class__.__module__,
 *                     self.__class__.__name__,             # <<<<<<<<<<<<<<
 *                     self.is_running(),
 *                     self.is_closed(),
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":830
 *                     self.__class__.__module__,
 *                     self.__class__.__name__,
 *                     self.is_running(),             # <<<<<<<<<<<<<<
 *                     self.is_closed(),
 *                     self.get_debug())
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_running); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 830, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 830, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":831
 *                     self.__class__.__name__,
 *                     self.is_running(),
 *                     self.is_closed(),             # <<<<<<<<<<<<<<
 *                     self.get_debug())
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_closed); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 831, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 831, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "uvloop/loop.pyx":832
 *                     self.is_running(),
 *                     self.is_closed(),
 *                     self.get_debug())             # <<<<<<<<<<<<<<
 * 
 *     def call_soon(self, callback, *args):
 */
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_debug); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 832, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 832, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_10 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(5+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_10, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_10, __pyx_t_7);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_3 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":826
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{}.{} running={} closed={} debug={}>'.format(
 *                     self.__class__.__module__,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("uvloop.loop.Loop.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":834
 *                     self.get_debug())
 * 
 *     def call_soon(self, callback, *args):             # <<<<<<<<<<<<<<
 *         if self._debug == 1:
 *             self._check_thread()
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_9call_soon(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_9call_soon(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call_soon (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "call_soon") < 0)) __PYX_ERR(2, 834, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_callback = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("call_soon", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 834, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.call_soon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_8call_soon(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_8call_soon(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("call_soon", 0);

  /* "uvloop/loop.pyx":835
 * 
 *     def call_soon(self, callback, *args):
 *         if self._debug == 1:             # <<<<<<<<<<<<<<
 *             self._check_thread()
 *         if args:
 */
  __pyx_t_1 = ((__pyx_v_self->_debug == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":836
 *     def call_soon(self, callback, *args):
 *         if self._debug == 1:
 *             self._check_thread()             # <<<<<<<<<<<<<<
 *         if args:
 *             return self._call_soon(callback, args)
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__check_thread(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 836, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":835
 * 
 *     def call_soon(self, callback, *args):
 *         if self._debug == 1:             # <<<<<<<<<<<<<<
 *             self._check_thread()
 *         if args:
 */
  }

  /* "uvloop/loop.pyx":837
 *         if self._debug == 1:
 *             self._check_thread()
 *         if args:             # <<<<<<<<<<<<<<
 *             return self._call_soon(callback, args)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_args != Py_None) && (PyTuple_GET_SIZE(__pyx_v_args) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":838
 *             self._check_thread()
 *         if args:
 *             return self._call_soon(callback, args)             # <<<<<<<<<<<<<<
 *         else:
 *             return self._call_soon(callback, None)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__call_soon(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":837
 *         if self._debug == 1:
 *             self._check_thread()
 *         if args:             # <<<<<<<<<<<<<<
 *             return self._call_soon(callback, args)
 *         else:
 */
  }

  /* "uvloop/loop.pyx":840
 *             return self._call_soon(callback, args)
 *         else:
 *             return self._call_soon(callback, None)             # <<<<<<<<<<<<<<
 * 
 *     def call_soon_threadsafe(self, callback, *args):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__call_soon(__pyx_v_self, __pyx_v_callback, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 840, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/loop.pyx":834
 *                     self.get_debug())
 * 
 *     def call_soon(self, callback, *args):             # <<<<<<<<<<<<<<
 *         if self._debug == 1:
 *             self._check_thread()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop.call_soon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":842
 *             return self._call_soon(callback, None)
 * 
 *     def call_soon_threadsafe(self, callback, *args):             # <<<<<<<<<<<<<<
 *         if not args:
 *             args = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_11call_soon_threadsafe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_11call_soon_threadsafe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call_soon_threadsafe (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "call_soon_threadsafe") < 0)) __PYX_ERR(2, 842, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_callback = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("call_soon_threadsafe", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 842, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.call_soon_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_10call_soon_threadsafe(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_10call_soon_threadsafe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_handle = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("call_soon_threadsafe", 0);
  __Pyx_INCREF(__pyx_v_args);

  /* "uvloop/loop.pyx":843
 * 
 *     def call_soon_threadsafe(self, callback, *args):
 *         if not args:             # <<<<<<<<<<<<<<
 *             args = None
 *         handle = self._call_soon(callback, args)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 843, __pyx_L1_error)
  __pyx_t_2 = ((!__pyx_t_1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":844
 *     def call_soon_threadsafe(self, callback, *args):
 *         if not args:
 *             args = None             # <<<<<<<<<<<<<<
 *         handle = self._call_soon(callback, args)
 *         self.handler_async.send()
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_args, Py_None);

    /* "uvloop/loop.pyx":843
 * 
 *     def call_soon_threadsafe(self, callback, *args):
 *         if not args:             # <<<<<<<<<<<<<<
 *             args = None
 *         handle = self._call_soon(callback, args)
 */
  }

  /* "uvloop/loop.pyx":845
 *         if not args:
 *             args = None
 *         handle = self._call_soon(callback, args)             # <<<<<<<<<<<<<<
 *         self.handler_async.send()
 *         return handle
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_4Loop__call_soon(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_handle = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":846
 *             args = None
 *         handle = self._call_soon(callback, args)
 *         self.handler_async.send()             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->handler_async->__pyx_base.__pyx_vtab)->send(__pyx_v_self->handler_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":847
 *         handle = self._call_soon(callback, args)
 *         self.handler_async.send()
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     def call_later(self, delay, callback, *args):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_handle);
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":842
 *             return self._call_soon(callback, None)
 * 
 *     def call_soon_threadsafe(self, callback, *args):             # <<<<<<<<<<<<<<
 *         if not args:
 *             args = None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Loop.call_soon_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":849
 *         return handle
 * 
 *     def call_later(self, delay, callback, *args):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         if self._debug == 1:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_13call_later(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_13call_later(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_delay = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call_later (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_delay,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_delay)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("call_later", 0, 2, 2, 1); __PYX_ERR(2, 849, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "call_later") < 0)) __PYX_ERR(2, 849, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_delay = values[0];
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("call_later", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 849, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.call_later", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_12call_later(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_delay, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_12call_later(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_delay, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  uint64_t __pyx_v_when;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  uint64_t __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("call_later", 0);
  __Pyx_INCREF(__pyx_v_delay);
  __Pyx_INCREF(__pyx_v_args);

  /* "uvloop/loop.pyx":850
 * 
 *     def call_later(self, delay, callback, *args):
 *         self._check_closed()             # <<<<<<<<<<<<<<
 *         if self._debug == 1:
 *             self._check_thread()
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":851
 *     def call_later(self, delay, callback, *args):
 *         self._check_closed()
 *         if self._debug == 1:             # <<<<<<<<<<<<<<
 *             self._check_thread()
 *         if delay < 0:
 */
  __pyx_t_2 = ((__pyx_v_self->_debug == 1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":852
 *         self._check_closed()
 *         if self._debug == 1:
 *             self._check_thread()             # <<<<<<<<<<<<<<
 *         if delay < 0:
 *             delay = 0
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_thread(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 852, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":851
 *     def call_later(self, delay, callback, *args):
 *         self._check_closed()
 *         if self._debug == 1:             # <<<<<<<<<<<<<<
 *             self._check_thread()
 *         if delay < 0:
 */
  }

  /* "uvloop/loop.pyx":853
 *         if self._debug == 1:
 *             self._check_thread()
 *         if delay < 0:             # <<<<<<<<<<<<<<
 *             delay = 0
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_delay, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 853, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 853, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":854
 *             self._check_thread()
 *         if delay < 0:
 *             delay = 0             # <<<<<<<<<<<<<<
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 *         if not args:
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF_SET(__pyx_v_delay, __pyx_int_0);

    /* "uvloop/loop.pyx":853
 *         if self._debug == 1:
 *             self._check_thread()
 *         if delay < 0:             # <<<<<<<<<<<<<<
 *             delay = 0
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 */
  }

  /* "uvloop/loop.pyx":855
 *         if delay < 0:
 *             delay = 0
 *         cdef uint64_t when = <uint64_t>(delay * 1000)             # <<<<<<<<<<<<<<
 *         if not args:
 *             args = None
 */
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_delay, __pyx_int_1000); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_when = ((uint64_t)__pyx_t_3);

  /* "uvloop/loop.pyx":856
 *             delay = 0
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 *         if not args:             # <<<<<<<<<<<<<<
 *             args = None
 *         if when == 0:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 856, __pyx_L1_error)
  __pyx_t_4 = ((!__pyx_t_2) != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":857
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 *         if not args:
 *             args = None             # <<<<<<<<<<<<<<
 *         if when == 0:
 *             return self._call_soon(callback, args)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_args, Py_None);

    /* "uvloop/loop.pyx":856
 *             delay = 0
 *         cdef uint64_t when = <uint64_t>(delay * 1000)
 *         if not args:             # <<<<<<<<<<<<<<
 *             args = None
 *         if when == 0:
 */
  }

  /* "uvloop/loop.pyx":858
 *         if not args:
 *             args = None
 *         if when == 0:             # <<<<<<<<<<<<<<
 *             return self._call_soon(callback, args)
 *         else:
 */
  __pyx_t_4 = ((__pyx_v_when == 0) != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":859
 *             args = None
 *         if when == 0:
 *             return self._call_soon(callback, args)             # <<<<<<<<<<<<<<
 *         else:
 *             return self._call_later(when, callback, args)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__call_soon(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":858
 *         if not args:
 *             args = None
 *         if when == 0:             # <<<<<<<<<<<<<<
 *             return self._call_soon(callback, args)
 *         else:
 */
  }

  /* "uvloop/loop.pyx":861
 *             return self._call_soon(callback, args)
 *         else:
 *             return self._call_later(when, callback, args)             # <<<<<<<<<<<<<<
 * 
 *     def call_at(self, when, callback, *args):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_call_later(__pyx_v_self, __pyx_v_when, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/loop.pyx":849
 *         return handle
 * 
 *     def call_later(self, delay, callback, *args):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         if self._debug == 1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.call_later", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_delay);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":863
 *             return self._call_later(when, callback, args)
 * 
 *     def call_at(self, when, callback, *args):             # <<<<<<<<<<<<<<
 *         return self.call_later(when - self.time(), callback, *args)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_15call_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_15call_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_when = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call_at (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_when,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_when)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("call_at", 0, 2, 2, 1); __PYX_ERR(2, 863, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "call_at") < 0)) __PYX_ERR(2, 863, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_when = values[0];
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("call_at", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 863, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.call_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_14call_at(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_when, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_14call_at(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_when, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("call_at", 0);

  /* "uvloop/loop.pyx":864
 * 
 *     def call_at(self, when, callback, *args):
 *         return self.call_later(when - self.time(), callback, *args)             # <<<<<<<<<<<<<<
 * 
 *     def time(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_call_later); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 864, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 864, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Subtract(__pyx_v_when, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_callback);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":863
 *             return self._call_later(when, callback, args)
 * 
 *     def call_at(self, when, callback, *args):             # <<<<<<<<<<<<<<
 *         return self.call_later(when - self.time(), callback, *args)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.call_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":866
 *         return self.call_later(when - self.time(), callback, *args)
 * 
 *     def time(self):             # <<<<<<<<<<<<<<
 *         return self._time() / 1000
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_17time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_17time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("time (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_16time(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_16time(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("time", 0);

  /* "uvloop/loop.pyx":867
 * 
 *     def time(self):
 *         return self._time() / 1000             # <<<<<<<<<<<<<<
 * 
 *     def stop(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble((((double)((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_time(__pyx_v_self)) / 1000.0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":866
 *         return self.call_later(when - self.time(), callback, *args)
 * 
 *     def time(self):             # <<<<<<<<<<<<<<
 *         return self._time() / 1000
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":869
 *         return self._time() / 1000
 * 
 *     def stop(self):             # <<<<<<<<<<<<<<
 *         self._call_soon_handle(
 *             new_MethodHandle1(
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_19stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_19stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stop (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_18stop(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_18stop(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "uvloop/loop.pyx":871
 *     def stop(self):
 *         self._call_soon_handle(
 *             new_MethodHandle1(             # <<<<<<<<<<<<<<
 *                 self,
 *                 "Loop._stop",
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_new_MethodHandle1(__pyx_v_self, __pyx_kp_u_Loop__stop, ((__pyx_t_6uvloop_4loop_method1_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_stop)), ((PyObject *)__pyx_v_self), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 871, __pyx_L1_error)

  /* "uvloop/loop.pyx":870
 * 
 *     def stop(self):
 *         self._call_soon_handle(             # <<<<<<<<<<<<<<
 *             new_MethodHandle1(
 *                 self,
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":869
 *         return self._time() / 1000
 * 
 *     def stop(self):             # <<<<<<<<<<<<<<
 *         self._call_soon_handle(
 *             new_MethodHandle1(
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":878
 *                 None))
 * 
 *     def run_forever(self):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         mode = uv.UV_RUN_DEFAULT
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_21run_forever(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_21run_forever(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("run_forever (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_20run_forever(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_20run_forever(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  uv_run_mode __pyx_v_mode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("run_forever", 0);

  /* "uvloop/loop.pyx":879
 * 
 *     def run_forever(self):
 *         self._check_closed()             # <<<<<<<<<<<<<<
 *         mode = uv.UV_RUN_DEFAULT
 *         if self._stopping:
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":880
 *     def run_forever(self):
 *         self._check_closed()
 *         mode = uv.UV_RUN_DEFAULT             # <<<<<<<<<<<<<<
 *         if self._stopping:
 *             # loop.stop() was called right before loop.run_forever().
 */
  __pyx_v_mode = UV_RUN_DEFAULT;

  /* "uvloop/loop.pyx":881
 *         self._check_closed()
 *         mode = uv.UV_RUN_DEFAULT
 *         if self._stopping:             # <<<<<<<<<<<<<<
 *             # loop.stop() was called right before loop.run_forever().
 *             # This is how asyncio loop behaves.
 */
  __pyx_t_2 = (__pyx_v_self->_stopping != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":884
 *             # loop.stop() was called right before loop.run_forever().
 *             # This is how asyncio loop behaves.
 *             mode = uv.UV_RUN_NOWAIT             # <<<<<<<<<<<<<<
 *         self._set_coroutine_wrapper(self._debug)
 *         try:
 */
    __pyx_v_mode = UV_RUN_NOWAIT;

    /* "uvloop/loop.pyx":881
 *         self._check_closed()
 *         mode = uv.UV_RUN_DEFAULT
 *         if self._stopping:             # <<<<<<<<<<<<<<
 *             # loop.stop() was called right before loop.run_forever().
 *             # This is how asyncio loop behaves.
 */
  }

  /* "uvloop/loop.pyx":885
 *             # This is how asyncio loop behaves.
 *             mode = uv.UV_RUN_NOWAIT
 *         self._set_coroutine_wrapper(self._debug)             # <<<<<<<<<<<<<<
 *         try:
 *             self._run(mode)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_set_coroutine_wrapper(__pyx_v_self, __pyx_v_self->_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":886
 *             mode = uv.UV_RUN_NOWAIT
 *         self._set_coroutine_wrapper(self._debug)
 *         try:             # <<<<<<<<<<<<<<
 *             self._run(mode)
 *         finally:
 */
  /*try:*/ {

    /* "uvloop/loop.pyx":887
 *         self._set_coroutine_wrapper(self._debug)
 *         try:
 *             self._run(mode)             # <<<<<<<<<<<<<<
 *         finally:
 *             self._set_coroutine_wrapper(0)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_run(__pyx_v_self, __pyx_v_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 887, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "uvloop/loop.pyx":889
 *             self._run(mode)
 *         finally:
 *             self._set_coroutine_wrapper(0)             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_set_coroutine_wrapper(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 889, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_set_coroutine_wrapper(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 889, __pyx_L8_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L8_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/loop.pyx":878
 *                 None))
 * 
 *     def run_forever(self):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         mode = uv.UV_RUN_DEFAULT
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.run_forever", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":891
 *             self._set_coroutine_wrapper(0)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         self._close()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_23close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_23close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_22close(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_22close(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/loop.pyx":892
 * 
 *     def close(self):
 *         self._close()             # <<<<<<<<<<<<<<
 * 
 *     def get_debug(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":891
 *             self._set_coroutine_wrapper(0)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         self._close()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":894
 *         self._close()
 * 
 *     def get_debug(self):             # <<<<<<<<<<<<<<
 *         return bool(self._debug)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_25get_debug(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_25get_debug(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_debug (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_24get_debug(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_24get_debug(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("get_debug", 0);

  /* "uvloop/loop.pyx":895
 * 
 *     def get_debug(self):
 *         return bool(self._debug)             # <<<<<<<<<<<<<<
 * 
 *     def set_debug(self, enabled):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_debug;
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":894
 *         self._close()
 * 
 *     def get_debug(self):             # <<<<<<<<<<<<<<
 *         return bool(self._debug)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop.get_debug", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":897
 *         return bool(self._debug)
 * 
 *     def set_debug(self, enabled):             # <<<<<<<<<<<<<<
 *         self._debug = bool(enabled)
 *         if self.is_running():
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_27set_debug(PyObject *__pyx_v_self, PyObject *__pyx_v_enabled); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_27set_debug(PyObject *__pyx_v_self, PyObject *__pyx_v_enabled) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_debug (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_26set_debug(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_enabled));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_26set_debug(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_enabled) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("set_debug", 0);

  /* "uvloop/loop.pyx":898
 * 
 *     def set_debug(self, enabled):
 *         self._debug = bool(enabled)             # <<<<<<<<<<<<<<
 *         if self.is_running():
 *             self._set_coroutine_wrapper(self._debug)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_enabled); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 898, __pyx_L1_error)
  __pyx_v_self->_debug = (!(!__pyx_t_1));

  /* "uvloop/loop.pyx":899
 *     def set_debug(self, enabled):
 *         self._debug = bool(enabled)
 *         if self.is_running():             # <<<<<<<<<<<<<<
 *             self._set_coroutine_wrapper(self._debug)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_running); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 899, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 899, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 899, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":900
 *         self._debug = bool(enabled)
 *         if self.is_running():
 *             self._set_coroutine_wrapper(self._debug)             # <<<<<<<<<<<<<<
 * 
 *     def is_running(self):
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_set_coroutine_wrapper(__pyx_v_self, __pyx_v_self->_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":899
 *     def set_debug(self, enabled):
 *         self._debug = bool(enabled)
 *         if self.is_running():             # <<<<<<<<<<<<<<
 *             self._set_coroutine_wrapper(self._debug)
 * 
 */
  }

  /* "uvloop/loop.pyx":897
 *         return bool(self._debug)
 * 
 *     def set_debug(self, enabled):             # <<<<<<<<<<<<<<
 *         self._debug = bool(enabled)
 *         if self.is_running():
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.set_debug", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":902
 *             self._set_coroutine_wrapper(self._debug)
 * 
 *     def is_running(self):             # <<<<<<<<<<<<<<
 *         return bool(self._running)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_29is_running(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_29is_running(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_running (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_28is_running(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_28is_running(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("is_running", 0);

  /* "uvloop/loop.pyx":903
 * 
 *     def is_running(self):
 *         return bool(self._running)             # <<<<<<<<<<<<<<
 * 
 *     def is_closed(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_running;
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":902
 *             self._set_coroutine_wrapper(self._debug)
 * 
 *     def is_running(self):             # <<<<<<<<<<<<<<
 *         return bool(self._running)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop.is_running", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":905
 *         return bool(self._running)
 * 
 *     def is_closed(self):             # <<<<<<<<<<<<<<
 *         return bool(self._closed)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_31is_closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_31is_closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_closed (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_30is_closed(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_30is_closed(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("is_closed", 0);

  /* "uvloop/loop.pyx":906
 * 
 *     def is_closed(self):
 *         return bool(self._closed)             # <<<<<<<<<<<<<<
 * 
 *     def create_task(self, coro):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_closed;
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":905
 *         return bool(self._running)
 * 
 *     def is_closed(self):             # <<<<<<<<<<<<<<
 *         return bool(self._closed)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.Loop.is_closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":908
 *         return bool(self._closed)
 * 
 *     def create_task(self, coro):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         if self._task_factory is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_33create_task(PyObject *__pyx_v_self, PyObject *__pyx_v_coro); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_33create_task(PyObject *__pyx_v_self, PyObject *__pyx_v_coro) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_task (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_32create_task(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_coro));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_32create_task(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_coro) {
  PyObject *__pyx_v_task = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("create_task", 0);

  /* "uvloop/loop.pyx":909
 * 
 *     def create_task(self, coro):
 *         self._check_closed()             # <<<<<<<<<<<<<<
 *         if self._task_factory is None:
 *             task = aio_Task(coro, loop=self)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":910
 *     def create_task(self, coro):
 *         self._check_closed()
 *         if self._task_factory is None:             # <<<<<<<<<<<<<<
 *             task = aio_Task(coro, loop=self)
 *         else:
 */
  __pyx_t_2 = (__pyx_v_self->_task_factory == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":911
 *         self._check_closed()
 *         if self._task_factory is None:
 *             task = aio_Task(coro, loop=self)             # <<<<<<<<<<<<<<
 *         else:
 *             task = self._task_factory(self, coro)
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_coro);
    __Pyx_GIVEREF(__pyx_v_coro);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_coro);
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_loop, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(2, 911, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_Task, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_task = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":910
 *     def create_task(self, coro):
 *         self._check_closed()
 *         if self._task_factory is None:             # <<<<<<<<<<<<<<
 *             task = aio_Task(coro, loop=self)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":913
 *             task = aio_Task(coro, loop=self)
 *         else:
 *             task = self._task_factory(self, coro)             # <<<<<<<<<<<<<<
 *         return task
 * 
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_self->_task_factory);
    __pyx_t_4 = __pyx_v_self->_task_factory; __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
    __Pyx_INCREF(__pyx_v_coro);
    __Pyx_GIVEREF(__pyx_v_coro);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_coro);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_task = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":914
 *         else:
 *             task = self._task_factory(self, coro)
 *         return task             # <<<<<<<<<<<<<<
 * 
 *     def set_task_factory(self, factory):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_task);
  __pyx_r = __pyx_v_task;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":908
 *         return bool(self._closed)
 * 
 *     def create_task(self, coro):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 *         if self._task_factory is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.Loop.create_task", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_task);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":916
 *         return task
 * 
 *     def set_task_factory(self, factory):             # <<<<<<<<<<<<<<
 *         if factory is not None and not callable(factory):
 *             raise TypeError('task factory must be a callable or None')
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_35set_task_factory(PyObject *__pyx_v_self, PyObject *__pyx_v_factory); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_35set_task_factory(PyObject *__pyx_v_self, PyObject *__pyx_v_factory) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_task_factory (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_34set_task_factory(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_factory));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_34set_task_factory(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_factory) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("set_task_factory", 0);

  /* "uvloop/loop.pyx":917
 * 
 *     def set_task_factory(self, factory):
 *         if factory is not None and not callable(factory):             # <<<<<<<<<<<<<<
 *             raise TypeError('task factory must be a callable or None')
 *         self._task_factory = factory
 */
  __pyx_t_2 = (__pyx_v_factory != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyCallable_Check(__pyx_v_factory); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(2, 917, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":918
 *     def set_task_factory(self, factory):
 *         if factory is not None and not callable(factory):
 *             raise TypeError('task factory must be a callable or None')             # <<<<<<<<<<<<<<
 *         self._task_factory = factory
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 918, __pyx_L1_error)

    /* "uvloop/loop.pyx":917
 * 
 *     def set_task_factory(self, factory):
 *         if factory is not None and not callable(factory):             # <<<<<<<<<<<<<<
 *             raise TypeError('task factory must be a callable or None')
 *         self._task_factory = factory
 */
  }

  /* "uvloop/loop.pyx":919
 *         if factory is not None and not callable(factory):
 *             raise TypeError('task factory must be a callable or None')
 *         self._task_factory = factory             # <<<<<<<<<<<<<<
 * 
 *     def get_task_factory(self):
 */
  __Pyx_INCREF(__pyx_v_factory);
  __Pyx_GIVEREF(__pyx_v_factory);
  __Pyx_GOTREF(__pyx_v_self->_task_factory);
  __Pyx_DECREF(__pyx_v_self->_task_factory);
  __pyx_v_self->_task_factory = __pyx_v_factory;

  /* "uvloop/loop.pyx":916
 *         return task
 * 
 *     def set_task_factory(self, factory):             # <<<<<<<<<<<<<<
 *         if factory is not None and not callable(factory):
 *             raise TypeError('task factory must be a callable or None')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.set_task_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":921
 *         self._task_factory = factory
 * 
 *     def get_task_factory(self):             # <<<<<<<<<<<<<<
 *         return self._task_factory
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_37get_task_factory(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_37get_task_factory(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_task_factory (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_36get_task_factory(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_36get_task_factory(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_task_factory", 0);

  /* "uvloop/loop.pyx":922
 * 
 *     def get_task_factory(self):
 *         return self._task_factory             # <<<<<<<<<<<<<<
 * 
 *     def run_until_complete(self, future):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_task_factory);
  __pyx_r = __pyx_v_self->_task_factory;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":921
 *         self._task_factory = factory
 * 
 *     def get_task_factory(self):             # <<<<<<<<<<<<<<
 *         return self._task_factory
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":924
 *         return self._task_factory
 * 
 *     def run_until_complete(self, future):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_39run_until_complete(PyObject *__pyx_v_self, PyObject *__pyx_v_future); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_39run_until_complete(PyObject *__pyx_v_self, PyObject *__pyx_v_future) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("run_until_complete (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_38run_until_complete(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_future));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":934
 *             future._log_destroy_pending = False
 * 
 *         done_cb = lambda fut: self.stop()             # <<<<<<<<<<<<<<
 * 
 *         future.add_done_callback(done_cb)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_18run_until_complete_lambda1(PyObject *__pyx_self, PyObject *__pyx_v_fut); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_4Loop_18run_until_complete_lambda1 = {"lambda1", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_18run_until_complete_lambda1, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_18run_until_complete_lambda1(PyObject *__pyx_self, PyObject *__pyx_v_fut) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda1 (wrapper)", 0);
  __pyx_r = __pyx_lambda_funcdef_lambda1(__pyx_self, ((PyObject *)__pyx_v_fut));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda1(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_fut) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *__pyx_cur_scope;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("lambda1", 0);
  __pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(2, 934, __pyx_L1_error) }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 934, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 934, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Loop.run_until_complete.lambda1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":924
 *         return self._task_factory
 * 
 *     def run_until_complete(self, future):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 * 
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_38run_until_complete(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_future) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *__pyx_cur_scope;
  int __pyx_v_new_task;
  PyObject *__pyx_v_done_cb = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  __Pyx_RefNannySetupContext("run_until_complete", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_3_run_until_complete, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_v_future);

  /* "uvloop/loop.pyx":925
 * 
 *     def run_until_complete(self, future):
 *         self._check_closed()             # <<<<<<<<<<<<<<
 * 
 *         new_task = not isinstance(future, aio_Future)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":927
 *         self._check_closed()
 * 
 *         new_task = not isinstance(future, aio_Future)             # <<<<<<<<<<<<<<
 *         future = aio_ensure_future(future, loop=self)
 *         if new_task:
 */
  __pyx_t_1 = __pyx_v_6uvloop_4loop_aio_Future;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_future, __pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(2, 927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_new_task = (!(__pyx_t_2 != 0));

  /* "uvloop/loop.pyx":928
 * 
 *         new_task = not isinstance(future, aio_Future)
 *         future = aio_ensure_future(future, loop=self)             # <<<<<<<<<<<<<<
 *         if new_task:
 *             # An exception is raised if the future didn't complete, so there
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_future);
  __Pyx_GIVEREF(__pyx_v_future);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_future);
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_loop, ((PyObject *)__pyx_cur_scope->__pyx_v_self)) < 0) __PYX_ERR(2, 928, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_ensure_future, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_future, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":929
 *         new_task = not isinstance(future, aio_Future)
 *         future = aio_ensure_future(future, loop=self)
 *         if new_task:             # <<<<<<<<<<<<<<
 *             # An exception is raised if the future didn't complete, so there
 *             # is no need to log the "destroy pending task" message
 */
  __pyx_t_2 = (__pyx_v_new_task != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":932
 *             # An exception is raised if the future didn't complete, so there
 *             # is no need to log the "destroy pending task" message
 *             future._log_destroy_pending = False             # <<<<<<<<<<<<<<
 * 
 *         done_cb = lambda fut: self.stop()
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_future, __pyx_n_s_log_destroy_pending, Py_False) < 0) __PYX_ERR(2, 932, __pyx_L1_error)

    /* "uvloop/loop.pyx":929
 *         new_task = not isinstance(future, aio_Future)
 *         future = aio_ensure_future(future, loop=self)
 *         if new_task:             # <<<<<<<<<<<<<<
 *             # An exception is raised if the future didn't complete, so there
 *             # is no need to log the "destroy pending task" message
 */
  }

  /* "uvloop/loop.pyx":934
 *             future._log_destroy_pending = False
 * 
 *         done_cb = lambda fut: self.stop()             # <<<<<<<<<<<<<<
 * 
 *         future.add_done_callback(done_cb)
 */
  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_4Loop_18run_until_complete_lambda1, 0, __pyx_n_s_run_until_complete_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_uvloop_loop, __pyx_d, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_done_cb = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":936
 *         done_cb = lambda fut: self.stop()
 * 
 *         future.add_done_callback(done_cb)             # <<<<<<<<<<<<<<
 *         try:
 *             self.run_forever()
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_done_cb); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_INCREF(__pyx_v_done_cb);
    __Pyx_GIVEREF(__pyx_v_done_cb);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_done_cb);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":937
 * 
 *         future.add_done_callback(done_cb)
 *         try:             # <<<<<<<<<<<<<<
 *             self.run_forever()
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "uvloop/loop.pyx":938
 *         future.add_done_callback(done_cb)
 *         try:
 *             self.run_forever()             # <<<<<<<<<<<<<<
 *         except:
 *             if new_task and future.done() and not future.cancelled():
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_run_forever); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 938, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_5) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 938, __pyx_L4_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 938, __pyx_L4_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/loop.pyx":937
 * 
 *         future.add_done_callback(done_cb)
 *         try:             # <<<<<<<<<<<<<<
 *             self.run_forever()
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":939
 *         try:
 *             self.run_forever()
 *         except:             # <<<<<<<<<<<<<<
 *             if new_task and future.done() and not future.cancelled():
 *                 # The coroutine raised a BaseException. Consume the exception
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.Loop.run_until_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(2, 939, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);

      /* "uvloop/loop.pyx":940
 *             self.run_forever()
 *         except:
 *             if new_task and future.done() and not future.cancelled():             # <<<<<<<<<<<<<<
 *                 # The coroutine raised a BaseException. Consume the exception
 *                 # to not log a warning, the caller doesn't have access to the
 */
      __pyx_t_9 = (__pyx_v_new_task != 0);
      if (__pyx_t_9) {
      } else {
        __pyx_t_2 = __pyx_t_9;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_done); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (__pyx_t_11) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 940, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_9) {
      } else {
        __pyx_t_2 = __pyx_t_9;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (__pyx_t_11) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 940, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(2, 940, __pyx_L6_except_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_12 = ((!__pyx_t_9) != 0);
      __pyx_t_2 = __pyx_t_12;
      __pyx_L15_bool_binop_done:;
      if (__pyx_t_2) {

        /* "uvloop/loop.pyx":944
 *                 # to not log a warning, the caller doesn't have access to the
 *                 # local task.
 *                 future.exception()             # <<<<<<<<<<<<<<
 *             raise
 *         future.remove_done_callback(done_cb)
 */
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_exception); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 944, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (__pyx_t_11) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 944, __pyx_L6_except_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 944, __pyx_L6_except_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":940
 *             self.run_forever()
 *         except:
 *             if new_task and future.done() and not future.cancelled():             # <<<<<<<<<<<<<<
 *                 # The coroutine raised a BaseException. Consume the exception
 *                 # to not log a warning, the caller doesn't have access to the
 */
      }

      /* "uvloop/loop.pyx":945
 *                 # local task.
 *                 future.exception()
 *             raise             # <<<<<<<<<<<<<<
 *         future.remove_done_callback(done_cb)
 *         if not future.done():
 */
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_5);
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; 
      __PYX_ERR(2, 945, __pyx_L6_except_error)
    }
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":937
 * 
 *         future.add_done_callback(done_cb)
 *         try:             # <<<<<<<<<<<<<<
 *             self.run_forever()
 *         except:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":946
 *                 future.exception()
 *             raise
 *         future.remove_done_callback(done_cb)             # <<<<<<<<<<<<<<
 *         if not future.done():
 *             raise RuntimeError('Event loop stopped before Future completed.')
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_remove_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_done_cb); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_done_cb);
    __Pyx_GIVEREF(__pyx_v_done_cb);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_done_cb);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":947
 *             raise
 *         future.remove_done_callback(done_cb)
 *         if not future.done():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop stopped before Future completed.')
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_done); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 947, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 947, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_12 = ((!__pyx_t_2) != 0);
  if (__pyx_t_12) {

    /* "uvloop/loop.pyx":948
 *         future.remove_done_callback(done_cb)
 *         if not future.done():
 *             raise RuntimeError('Event loop stopped before Future completed.')             # <<<<<<<<<<<<<<
 * 
 *         return future.result()
 */
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 948, __pyx_L1_error)

    /* "uvloop/loop.pyx":947
 *             raise
 *         future.remove_done_callback(done_cb)
 *         if not future.done():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Event loop stopped before Future completed.')
 * 
 */
  }

  /* "uvloop/loop.pyx":950
 *             raise RuntimeError('Event loop stopped before Future completed.')
 * 
 *         return future.result()             # <<<<<<<<<<<<<<
 * 
 *     def getaddrinfo(self, object host, object port, *,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 950, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 950, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":924
 *         return self._task_factory
 * 
 *     def run_until_complete(self, future):             # <<<<<<<<<<<<<<
 *         self._check_closed()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("uvloop.loop.Loop.run_until_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_done_cb);
  __Pyx_XDECREF(__pyx_v_future);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":952
 *         return future.result()
 * 
 *     def getaddrinfo(self, object host, object port, *,             # <<<<<<<<<<<<<<
 *                     int family=0, int type=0, int proto=0, int flags=0):
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_41getaddrinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_41getaddrinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_port = 0;
  int __pyx_v_family;
  int __pyx_v_type;
  int __pyx_v_proto;
  int __pyx_v_flags;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getaddrinfo (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_host,&__pyx_n_s_port,&__pyx_n_s_family,&__pyx_n_s_type,&__pyx_n_s_proto,&__pyx_n_s_flags,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_host)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getaddrinfo", 1, 2, 2, 1); __PYX_ERR(2, 952, __pyx_L3_error)
        }
      }
      if (kw_args > 0 && likely(kw_args <= 4)) {
        Py_ssize_t index;
        for (index = 2; index < 6 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getaddrinfo") < 0)) __PYX_ERR(2, 952, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_host = values[0];
    __pyx_v_port = values[1];
    if (values[2]) {
      __pyx_v_family = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_family == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
    } else {
      __pyx_v_family = ((int)0);
    }
    if (values[3]) {
      __pyx_v_type = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
    } else {
      __pyx_v_type = ((int)0);
    }
    if (values[4]) {
      __pyx_v_proto = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_proto == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
    } else {
      __pyx_v_proto = ((int)0);
    }
    if (values[5]) {
      __pyx_v_flags = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
    } else {
      __pyx_v_flags = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getaddrinfo", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 952, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.getaddrinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_40getaddrinfo(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_host, __pyx_v_port, __pyx_v_family, __pyx_v_type, __pyx_v_proto, __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_40getaddrinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getaddrinfo", 0);

  /* "uvloop/loop.pyx":955
 *                     int family=0, int type=0, int proto=0, int flags=0):
 * 
 *         return self._getaddrinfo(host, port, family, type, proto, flags, 1)             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_v_self, __pyx_v_host, __pyx_v_port, __pyx_v_family, __pyx_v_type, __pyx_v_proto, __pyx_v_flags, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":952
 *         return future.result()
 * 
 *     def getaddrinfo(self, object host, object port, *,             # <<<<<<<<<<<<<<
 *                     int family=0, int type=0, int proto=0, int flags=0):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.getaddrinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_44generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":958
 * 
 *     @aio_coroutine
 *     async def getnameinfo(self, sockaddr, int flags=0):             # <<<<<<<<<<<<<<
 *         cdef:
 *             AddrInfo ai_cnt
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_43getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_43getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sockaddr = 0;
  int __pyx_v_flags;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getnameinfo (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sockaddr,&__pyx_n_s_flags,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sockaddr)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flags);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getnameinfo") < 0)) __PYX_ERR(2, 958, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sockaddr = values[0];
    if (values[1]) {
      __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 958, __pyx_L3_error)
    } else {
      __pyx_v_flags = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getnameinfo", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 958, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_42getnameinfo(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_sockaddr, __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_42getnameinfo(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sockaddr, int __pyx_v_flags) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getnameinfo", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_4_getnameinfo, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_sockaddr = __pyx_v_sockaddr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sockaddr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sockaddr);
  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_44generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_getnameinfo, __pyx_n_s_Loop_getnameinfo); if (unlikely(!gen)) __PYX_ERR(2, 958, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_44generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  struct addrinfo *__pyx_t_7;
  int __pyx_t_8;
  unsigned long __pyx_t_9;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L16_resume_from_yield;
    case 2: goto __pyx_L20_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 958, __pyx_L1_error)

  /* "uvloop/loop.pyx":964
 *             system.sockaddr_in6 *sin6
 * 
 *         if not isinstance(sockaddr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('getnameinfo() argument 1 must be a tuple')
 * 
 */
  __pyx_t_1 = PyTuple_Check(__pyx_cur_scope->__pyx_v_sockaddr); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":965
 * 
 *         if not isinstance(sockaddr, tuple):
 *             raise TypeError('getnameinfo() argument 1 must be a tuple')             # <<<<<<<<<<<<<<
 * 
 *         sl = len(sockaddr)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 965, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 965, __pyx_L1_error)

    /* "uvloop/loop.pyx":964
 *             system.sockaddr_in6 *sin6
 * 
 *         if not isinstance(sockaddr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('getnameinfo() argument 1 must be a tuple')
 * 
 */
  }

  /* "uvloop/loop.pyx":967
 *             raise TypeError('getnameinfo() argument 1 must be a tuple')
 * 
 *         sl = len(sockaddr)             # <<<<<<<<<<<<<<
 * 
 *         if sl < 2 or sl > 4:
 */
  __pyx_t_4 = PyObject_Length(__pyx_cur_scope->__pyx_v_sockaddr); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(2, 967, __pyx_L1_error)
  __pyx_cur_scope->__pyx_v_sl = __pyx_t_4;

  /* "uvloop/loop.pyx":969
 *         sl = len(sockaddr)
 * 
 *         if sl < 2 or sl > 4:             # <<<<<<<<<<<<<<
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')
 * 
 */
  __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_sl < 2) != 0);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_sl > 4) != 0);
  __pyx_t_2 = __pyx_t_1;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":970
 * 
 *         if sl < 2 or sl > 4:
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')             # <<<<<<<<<<<<<<
 * 
 *         if sl > 2:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 970, __pyx_L1_error)

    /* "uvloop/loop.pyx":969
 *         sl = len(sockaddr)
 * 
 *         if sl < 2 or sl > 4:             # <<<<<<<<<<<<<<
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')
 * 
 */
  }

  /* "uvloop/loop.pyx":972
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')
 * 
 *         if sl > 2:             # <<<<<<<<<<<<<<
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:
 */
  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_sl > 2) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":973
 * 
 *         if sl > 2:
 *             flowinfo = sockaddr[2]             # <<<<<<<<<<<<<<
 *             if flowinfo < 0 or flowinfo > 0xfffff:
 *                 raise OverflowError(
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sockaddr, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_flowinfo = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":974
 *         if sl > 2:
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:             # <<<<<<<<<<<<<<
 *                 raise OverflowError(
 *                     'getsockaddrarg: flowinfo must be 0-1048575.')
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_flowinfo, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 974, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 974, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_flowinfo, __pyx_int_1048575, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 974, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 974, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":975
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:
 *                 raise OverflowError(             # <<<<<<<<<<<<<<
 *                     'getsockaddrarg: flowinfo must be 0-1048575.')
 *         else:
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 975, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(2, 975, __pyx_L1_error)

      /* "uvloop/loop.pyx":974
 *         if sl > 2:
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:             # <<<<<<<<<<<<<<
 *                 raise OverflowError(
 *                     'getsockaddrarg: flowinfo must be 0-1048575.')
 */
    }

    /* "uvloop/loop.pyx":972
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')
 * 
 *         if sl > 2:             # <<<<<<<<<<<<<<
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:
 */
    goto __pyx_L8;
  }

  /* "uvloop/loop.pyx":978
 *                     'getsockaddrarg: flowinfo must be 0-1048575.')
 *         else:
 *             flowinfo = 0             # <<<<<<<<<<<<<<
 * 
 *         if sl > 3:
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_cur_scope->__pyx_v_flowinfo = __pyx_int_0;
  }
  __pyx_L8:;

  /* "uvloop/loop.pyx":980
 *             flowinfo = 0
 * 
 *         if sl > 3:             # <<<<<<<<<<<<<<
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:
 */
  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_sl > 3) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":981
 * 
 *         if sl > 3:
 *             scope_id = sockaddr[3]             # <<<<<<<<<<<<<<
 *             if scope_id < 0 or scope_id > 2 ** 32:
 *                 raise OverflowError(
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sockaddr, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_scope_id = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "uvloop/loop.pyx":982
 *         if sl > 3:
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:             # <<<<<<<<<<<<<<
 *                 raise OverflowError(
 *                     'getsockaddrarg: scope_id must be unsigned 32 bit integer')
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_scope_id, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 982, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 982, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_scope_id, __pyx_int_4294967296, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 982, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 982, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L14_bool_binop_done:;
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":983
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:
 *                 raise OverflowError(             # <<<<<<<<<<<<<<
 *                     'getsockaddrarg: scope_id must be unsigned 32 bit integer')
 *         else:
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 983, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(2, 983, __pyx_L1_error)

      /* "uvloop/loop.pyx":982
 *         if sl > 3:
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:             # <<<<<<<<<<<<<<
 *                 raise OverflowError(
 *                     'getsockaddrarg: scope_id must be unsigned 32 bit integer')
 */
    }

    /* "uvloop/loop.pyx":980
 *             flowinfo = 0
 * 
 *         if sl > 3:             # <<<<<<<<<<<<<<
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:
 */
    goto __pyx_L12;
  }

  /* "uvloop/loop.pyx":986
 *                     'getsockaddrarg: scope_id must be unsigned 32 bit integer')
 *         else:
 *             scope_id = 0             # <<<<<<<<<<<<<<
 * 
 *         ai_cnt = await self._getaddrinfo(
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_cur_scope->__pyx_v_scope_id = __pyx_int_0;
  }
  __pyx_L12:;

  /* "uvloop/loop.pyx":989
 * 
 *         ai_cnt = await self._getaddrinfo(
 *             sockaddr[0], sockaddr[1],             # <<<<<<<<<<<<<<
 *             uv.AF_UNSPEC,         # family
 *             uv.SOCK_DGRAM,        # type
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sockaddr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sockaddr, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "uvloop/loop.pyx":988
 *             scope_id = 0
 * 
 *         ai_cnt = await self._getaddrinfo(             # <<<<<<<<<<<<<<
 *             sockaddr[0], sockaddr[1],
 *             uv.AF_UNSPEC,         # family
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_t_3, __pyx_t_5, AF_UNSPEC, SOCK_DGRAM, 0, AI_NUMERICHOST, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L16_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 988, __pyx_L1_error)
    __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6);
  } else {
    __pyx_t_6 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(2, 988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_6uvloop_4loop_AddrInfo))))) __PYX_ERR(2, 988, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_ai_cnt = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":996
 *             0)                    # unpack
 * 
 *         ai = ai_cnt.data             # <<<<<<<<<<<<<<
 * 
 *         if ai.ai_next:
 */
  __pyx_t_7 = __pyx_cur_scope->__pyx_v_ai_cnt->data;
  __pyx_cur_scope->__pyx_v_ai = __pyx_t_7;

  /* "uvloop/loop.pyx":998
 *         ai = ai_cnt.data
 * 
 *         if ai.ai_next:             # <<<<<<<<<<<<<<
 *             raise OSError("sockaddr resolved to multiple addresses")
 * 
 */
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_ai->ai_next != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":999
 * 
 *         if ai.ai_next:
 *             raise OSError("sockaddr resolved to multiple addresses")             # <<<<<<<<<<<<<<
 * 
 *         if ai.ai_family == uv.AF_INET:
 */
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(2, 999, __pyx_L1_error)

    /* "uvloop/loop.pyx":998
 *         ai = ai_cnt.data
 * 
 *         if ai.ai_next:             # <<<<<<<<<<<<<<
 *             raise OSError("sockaddr resolved to multiple addresses")
 * 
 */
  }

  /* "uvloop/loop.pyx":1001
 *             raise OSError("sockaddr resolved to multiple addresses")
 * 
 *         if ai.ai_family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 */
  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_ai->ai_family == AF_INET) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1002
 * 
 *         if ai.ai_family == uv.AF_INET:
 *             if sl > 2:             # <<<<<<<<<<<<<<
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 *         elif ai.ai_family == uv.AF_INET6:
 */
    __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_sl > 2) != 0);
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":1003
 *         if ai.ai_family == uv.AF_INET:
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")             # <<<<<<<<<<<<<<
 *         elif ai.ai_family == uv.AF_INET6:
 *             # Modify some fields in `ai`
 */
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(2, 1003, __pyx_L1_error)

      /* "uvloop/loop.pyx":1002
 * 
 *         if ai.ai_family == uv.AF_INET:
 *             if sl > 2:             # <<<<<<<<<<<<<<
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 *         elif ai.ai_family == uv.AF_INET6:
 */
    }

    /* "uvloop/loop.pyx":1001
 *             raise OSError("sockaddr resolved to multiple addresses")
 * 
 *         if ai.ai_family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 */
    goto __pyx_L18;
  }

  /* "uvloop/loop.pyx":1004
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 *         elif ai.ai_family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *             # Modify some fields in `ai`
 *             sin6 = <system.sockaddr_in6*> ai.ai_addr
 */
  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_ai->ai_family == AF_INET6) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1006
 *         elif ai.ai_family == uv.AF_INET6:
 *             # Modify some fields in `ai`
 *             sin6 = <system.sockaddr_in6*> ai.ai_addr             # <<<<<<<<<<<<<<
 *             sin6.sin6_flowinfo = system.htonl(flowinfo)
 *             sin6.sin6_scope_id = scope_id
 */
    __pyx_cur_scope->__pyx_v_sin6 = ((struct sockaddr_in6 *)__pyx_cur_scope->__pyx_v_ai->ai_addr);

    /* "uvloop/loop.pyx":1007
 *             # Modify some fields in `ai`
 *             sin6 = <system.sockaddr_in6*> ai.ai_addr
 *             sin6.sin6_flowinfo = system.htonl(flowinfo)             # <<<<<<<<<<<<<<
 *             sin6.sin6_scope_id = scope_id
 * 
 */
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_flowinfo); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1007, __pyx_L1_error)
    __pyx_cur_scope->__pyx_v_sin6->sin6_flowinfo = htonl(__pyx_t_8);

    /* "uvloop/loop.pyx":1008
 *             sin6 = <system.sockaddr_in6*> ai.ai_addr
 *             sin6.sin6_flowinfo = system.htonl(flowinfo)
 *             sin6.sin6_scope_id = scope_id             # <<<<<<<<<<<<<<
 * 
 *         return await self._getnameinfo(ai.ai_addr, flags)
 */
    __pyx_t_9 = __Pyx_PyInt_As_unsigned_long(__pyx_cur_scope->__pyx_v_scope_id); if (unlikely((__pyx_t_9 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1008, __pyx_L1_error)
    __pyx_cur_scope->__pyx_v_sin6->sin6_scope_id = __pyx_t_9;

    /* "uvloop/loop.pyx":1004
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")
 *         elif ai.ai_family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *             # Modify some fields in `ai`
 *             sin6 = <system.sockaddr_in6*> ai.ai_addr
 */
  }
  __pyx_L18:;

  /* "uvloop/loop.pyx":1010
 *             sin6.sin6_scope_id = scope_id
 * 
 *         return await self._getnameinfo(ai.ai_addr, flags)             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getnameinfo(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_ai->ai_addr, __pyx_cur_scope->__pyx_v_flags); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L20_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1010, __pyx_L1_error)
    __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6);
  } else {
    __pyx_t_6 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(2, 1010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":958
 * 
 *     @aio_coroutine
 *     async def getnameinfo(self, sockaddr, int flags=0):             # <<<<<<<<<<<<<<
 *         cdef:
 *             AddrInfo ai_cnt
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_47generator1(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1013
 * 
 *     @aio_coroutine
 *     async def create_server(self, protocol_factory, host=None, port=None,             # <<<<<<<<<<<<<<
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_46create_server(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_46create_server(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_port = 0;
  int __pyx_v_family;
  int __pyx_v_flags;
  PyObject *__pyx_v_sock = 0;
  int __pyx_v_backlog;
  PyObject *__pyx_v_ssl = 0;
  CYTHON_UNUSED PyObject *__pyx_v_reuse_address = 0;
  PyObject *__pyx_v_reuse_port = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_server (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_host,&__pyx_n_s_port,&__pyx_n_s_family,&__pyx_n_s_flags,&__pyx_n_s_sock,&__pyx_n_s_backlog,&__pyx_n_s_ssl,&__pyx_n_s_reuse_address,&__pyx_n_s_reuse_port,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1017
 *                             int family=uv.AF_UNSPEC,
 *                             int flags=uv.AI_PASSIVE,
 *                             sock=None,             # <<<<<<<<<<<<<<
 *                             int backlog=100,
 *                             ssl=None,
 */
    values[5] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1019
 *                             sock=None,
 *                             int backlog=100,
 *                             ssl=None,             # <<<<<<<<<<<<<<
 *                             reuse_address=None,  # ignored, libuv sets it
 *                             reuse_port=None):
 */
    values[7] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1020
 *                             int backlog=100,
 *                             ssl=None,
 *                             reuse_address=None,  # ignored, libuv sets it             # <<<<<<<<<<<<<<
 *                             reuse_port=None):
 * 
 */
    values[8] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1021
 *                             ssl=None,
 *                             reuse_address=None,  # ignored, libuv sets it
 *                             reuse_port=None):             # <<<<<<<<<<<<<<
 * 
 *         cdef:
 */
    values[9] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_host);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_port);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (kw_args > 0 && likely(kw_args <= 7)) {
        Py_ssize_t index;
        for (index = 3; index < 10 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_server") < 0)) __PYX_ERR(2, 1013, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_host = values[1];
    __pyx_v_port = values[2];
    if (values[3]) {
      __pyx_v_family = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_family == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1015, __pyx_L3_error)
    } else {
      __pyx_v_family = __pyx_k__29;
    }
    if (values[4]) {
      __pyx_v_flags = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1016, __pyx_L3_error)
    } else {
      __pyx_v_flags = __pyx_k__30;
    }
    __pyx_v_sock = values[5];
    if (values[6]) {
      __pyx_v_backlog = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_backlog == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1018, __pyx_L3_error)
    } else {
      __pyx_v_backlog = ((int)0x64);
    }
    __pyx_v_ssl = values[7];
    __pyx_v_reuse_address = values[8];
    __pyx_v_reuse_port = values[9];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("create_server", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1013, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_45create_server(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_host, __pyx_v_port, __pyx_v_family, __pyx_v_flags, __pyx_v_sock, __pyx_v_backlog, __pyx_v_ssl, __pyx_v_reuse_address, __pyx_v_reuse_port);

  /* "uvloop/loop.pyx":1013
 * 
 *     @aio_coroutine
 *     async def create_server(self, protocol_factory, host=None, port=None,             # <<<<<<<<<<<<<<
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_45create_server(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_flags, PyObject *__pyx_v_sock, int __pyx_v_backlog, PyObject *__pyx_v_ssl, CYTHON_UNUSED PyObject *__pyx_v_reuse_address, PyObject *__pyx_v_reuse_port) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_server", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_5_create_server(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_5_create_server, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_host = __pyx_v_host;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_host);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_host);
  __pyx_cur_scope->__pyx_v_port = __pyx_v_port;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_port);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_port);
  __pyx_cur_scope->__pyx_v_family = __pyx_v_family;
  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
  __pyx_cur_scope->__pyx_v_sock = __pyx_v_sock;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
  __pyx_cur_scope->__pyx_v_backlog = __pyx_v_backlog;
  __pyx_cur_scope->__pyx_v_ssl = __pyx_v_ssl;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl);
  __pyx_cur_scope->__pyx_v_reuse_address = __pyx_v_reuse_address;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_reuse_address);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_reuse_address);
  __pyx_cur_scope->__pyx_v_reuse_port = __pyx_v_reuse_port;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_reuse_port);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_reuse_port);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_47generator1, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_server, __pyx_n_s_Loop_create_server); if (unlikely(!gen)) __PYX_ERR(2, 1013, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_47generator1(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  struct addrinfo *__pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_t_19;
  char const *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  PyObject *__pyx_t_25 = NULL;
  PyObject *__pyx_t_26 = NULL;
  char const *__pyx_t_27;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L23_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1013, __pyx_L1_error)

  /* "uvloop/loop.pyx":1026
 *             TCPServer tcp
 *             system.addrinfo *addrinfo
 *             Server server = Server(self)             # <<<<<<<<<<<<<<
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_Server), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1028
 *             Server server = Server(self)
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 */
  __pyx_t_4 = (__pyx_cur_scope->__pyx_v_ssl != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = __pyx_v_6uvloop_4loop_ssl_SSLContext;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_ssl, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1028, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1029
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 *             raise TypeError('ssl argument must be an SSLContext or None')             # <<<<<<<<<<<<<<
 * 
 *         if host is not None or port is not None:
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1029, __pyx_L1_error)

    /* "uvloop/loop.pyx":1028
 *             Server server = Server(self)
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 */
  }

  /* "uvloop/loop.pyx":1031
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 *         if host is not None or port is not None:             # <<<<<<<<<<<<<<
 *             if sock is not None:
 *                 raise ValueError(
 */
  __pyx_t_4 = (__pyx_cur_scope->__pyx_v_host != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (!__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_cur_scope->__pyx_v_port != Py_None);
  __pyx_t_4 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1032
 * 
 *         if host is not None or port is not None:
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'host/port and sock can not be specified at the same time')
 */
    __pyx_t_3 = (__pyx_cur_scope->__pyx_v_sock != Py_None);
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1033
 *         if host is not None or port is not None:
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'host/port and sock can not be specified at the same time')
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1033, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1033, __pyx_L1_error)

      /* "uvloop/loop.pyx":1032
 * 
 *         if host is not None or port is not None:
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'host/port and sock can not be specified at the same time')
 */
    }

    /* "uvloop/loop.pyx":1036
 *                     'host/port and sock can not be specified at the same time')
 * 
 *             reuse_port = bool(reuse_port)             # <<<<<<<<<<<<<<
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1036, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_reuse_port);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_reuse_port, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1037
 * 
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'reuse_port not supported by socket module')
 */
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 1037, __pyx_L1_error)
    if (__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_3 = ((!(__pyx_v_6uvloop_4loop_has_SO_REUSEPORT != 0)) != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L12_bool_binop_done:;
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1038
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'reuse_port not supported by socket module')
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1038, __pyx_L1_error)

      /* "uvloop/loop.pyx":1037
 * 
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'reuse_port not supported by socket module')
 */
    }

    /* "uvloop/loop.pyx":1041
 *                     'reuse_port not supported by socket module')
 * 
 *             if host == '':             # <<<<<<<<<<<<<<
 *                 hosts = [None]
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):
 */
    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_host, __pyx_kp_u__34, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1041, __pyx_L1_error)
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1042
 * 
 *             if host == '':
 *                 hosts = [None]             # <<<<<<<<<<<<<<
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):
 *                 hosts = [host]
 */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1042, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyList_SET_ITEM(__pyx_t_2, 0, Py_None);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_hosts = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1041
 *                     'reuse_port not supported by socket module')
 * 
 *             if host == '':             # <<<<<<<<<<<<<<
 *                 hosts = [None]
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):
 */
      goto __pyx_L14;
    }

    /* "uvloop/loop.pyx":1043
 *             if host == '':
 *                 hosts = [None]
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):             # <<<<<<<<<<<<<<
 *                 hosts = [host]
 *             else:
 */
    __pyx_t_3 = PyUnicode_Check(__pyx_cur_scope->__pyx_v_host); 
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L15_bool_binop_done;
    }
    __pyx_t_2 = __pyx_v_6uvloop_4loop_col_Iterable;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_host, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1043, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = ((!(__pyx_t_5 != 0)) != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L15_bool_binop_done:;
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1044
 *                 hosts = [None]
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):
 *                 hosts = [host]             # <<<<<<<<<<<<<<
 *             else:
 *                 hosts = host
 */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_host);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_host);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_host);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_hosts = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1043
 *             if host == '':
 *                 hosts = [None]
 *             elif (isinstance(host, str) or not isinstance(host, col_Iterable)):             # <<<<<<<<<<<<<<
 *                 hosts = [host]
 *             else:
 */
      goto __pyx_L14;
    }

    /* "uvloop/loop.pyx":1046
 *                 hosts = [host]
 *             else:
 *                 hosts = host             # <<<<<<<<<<<<<<
 * 
 *             fs = [self._getaddrinfo(host, port, family,
 */
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_host);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_host);
      __pyx_cur_scope->__pyx_v_hosts = __pyx_cur_scope->__pyx_v_host;
    }
    __pyx_L14:;

    /* "uvloop/loop.pyx":1048
 *                 hosts = host
 * 
 *             fs = [self._getaddrinfo(host, port, family,             # <<<<<<<<<<<<<<
 *                                     uv.SOCK_STREAM, 0, flags,
 *                                     0) for host in hosts]
 */
    { /* enter inner scope */
      PyObject *__pyx_7genexpr__pyx_v_host = NULL;
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1048, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_2);

      /* "uvloop/loop.pyx":1050
 *             fs = [self._getaddrinfo(host, port, family,
 *                                     uv.SOCK_STREAM, 0, flags,
 *                                     0) for host in hosts]             # <<<<<<<<<<<<<<
 * 
 *             infos = await aio_gather(*fs, loop=self)
 */
      if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_hosts)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_hosts)) {
        __pyx_t_1 = __pyx_cur_scope->__pyx_v_hosts; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_hosts); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1050, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1050, __pyx_L19_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 1050, __pyx_L19_error)
            #else
            __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
          } else {
            if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 1050, __pyx_L19_error)
            #else
            __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
          }
        } else {
          __pyx_t_8 = __pyx_t_7(__pyx_t_1);
          if (unlikely(!__pyx_t_8)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(2, 1050, __pyx_L19_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_8);
        }
        __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_host, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1048
 *                 hosts = host
 * 
 *             fs = [self._getaddrinfo(host, port, family,             # <<<<<<<<<<<<<<
 *                                     uv.SOCK_STREAM, 0, flags,
 *                                     0) for host in hosts]
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_7genexpr__pyx_v_host, __pyx_cur_scope->__pyx_v_port, __pyx_cur_scope->__pyx_v_family, SOCK_STREAM, 0, __pyx_cur_scope->__pyx_v_flags, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1048, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) __PYX_ERR(2, 1048, __pyx_L19_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1050
 *             fs = [self._getaddrinfo(host, port, family,
 *                                     uv.SOCK_STREAM, 0, flags,
 *                                     0) for host in hosts]             # <<<<<<<<<<<<<<
 * 
 *             infos = await aio_gather(*fs, loop=self)
 */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_7genexpr__pyx_v_host);
      goto __pyx_L22_exit_scope;
      __pyx_L19_error:;
      __Pyx_XDECREF(__pyx_7genexpr__pyx_v_host);
      goto __pyx_L1_error;
      __pyx_L22_exit_scope:;
    } /* exit inner scope */
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_fs = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1052
 *                                     0) for host in hosts]
 * 
 *             infos = await aio_gather(*fs, loop=self)             # <<<<<<<<<<<<<<
 * 
 *             completed = False
 */
    __pyx_t_2 = PySequence_Tuple(__pyx_cur_scope->__pyx_v_fs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_loop, ((PyObject *)__pyx_cur_scope->__pyx_v_self)) < 0) __PYX_ERR(2, 1052, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_gather, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L23_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1052, __pyx_L1_error)
      __pyx_t_8 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_8);
    } else {
      __pyx_t_8 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_8) < 0) __PYX_ERR(2, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_cur_scope->__pyx_v_infos = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "uvloop/loop.pyx":1054
 *             infos = await aio_gather(*fs, loop=self)
 * 
 *             completed = False             # <<<<<<<<<<<<<<
 *             try:
 *                 for info in infos:
 */
    __pyx_cur_scope->__pyx_v_completed = 0;

    /* "uvloop/loop.pyx":1055
 * 
 *             completed = False
 *             try:             # <<<<<<<<<<<<<<
 *                 for info in infos:
 *                     addrinfo = (<AddrInfo>info).data
 */
    /*try:*/ {

      /* "uvloop/loop.pyx":1056
 *             completed = False
 *             try:
 *                 for info in infos:             # <<<<<<<<<<<<<<
 *                     addrinfo = (<AddrInfo>info).data
 *                     while addrinfo != NULL:
 */
      if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_infos)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_infos)) {
        __pyx_t_8 = __pyx_cur_scope->__pyx_v_infos; __Pyx_INCREF(__pyx_t_8); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_infos); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1056, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1056, __pyx_L25_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_8))) {
            if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_8)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 1056, __pyx_L25_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1056, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 1056, __pyx_L25_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1056, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_7(__pyx_t_8);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(2, 1056, __pyx_L25_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_info);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_info, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1057
 *             try:
 *                 for info in infos:
 *                     addrinfo = (<AddrInfo>info).data             # <<<<<<<<<<<<<<
 *                     while addrinfo != NULL:
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:
 */
        __pyx_t_9 = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_cur_scope->__pyx_v_info)->data;
        __pyx_cur_scope->__pyx_v_addrinfo = __pyx_t_9;

        /* "uvloop/loop.pyx":1058
 *                 for info in infos:
 *                     addrinfo = (<AddrInfo>info).data
 *                     while addrinfo != NULL:             # <<<<<<<<<<<<<<
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:
 *                             raise RuntimeError('AF_UNSPEC in DNS results')
 */
        while (1) {
          __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_addrinfo != NULL) != 0);
          if (!__pyx_t_4) break;

          /* "uvloop/loop.pyx":1059
 *                     addrinfo = (<AddrInfo>info).data
 *                     while addrinfo != NULL:
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:             # <<<<<<<<<<<<<<
 *                             raise RuntimeError('AF_UNSPEC in DNS results')
 * 
 */
          __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_addrinfo->ai_family == AF_UNSPEC) != 0);
          if (__pyx_t_4) {

            /* "uvloop/loop.pyx":1060
 *                     while addrinfo != NULL:
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:
 *                             raise RuntimeError('AF_UNSPEC in DNS results')             # <<<<<<<<<<<<<<
 * 
 *                         tcp = TCPServer.new(
 */
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1060, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __PYX_ERR(2, 1060, __pyx_L25_error)

            /* "uvloop/loop.pyx":1059
 *                     addrinfo = (<AddrInfo>info).data
 *                     while addrinfo != NULL:
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:             # <<<<<<<<<<<<<<
 *                             raise RuntimeError('AF_UNSPEC in DNS results')
 * 
 */
          }

          /* "uvloop/loop.pyx":1062
 *                             raise RuntimeError('AF_UNSPEC in DNS results')
 * 
 *                         tcp = TCPServer.new(             # <<<<<<<<<<<<<<
 *                             self, protocol_factory, server, ssl,
 *                             addrinfo.ai_family)
 */
          __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_9TCPServer_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol_factory, __pyx_cur_scope->__pyx_v_server, __pyx_cur_scope->__pyx_v_ssl, __pyx_cur_scope->__pyx_v_addrinfo->ai_family)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1062, __pyx_L25_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tcp));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_tcp, ((struct __pyx_obj_6uvloop_4loop_TCPServer *)__pyx_t_1));
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_1 = 0;

          /* "uvloop/loop.pyx":1066
 *                             addrinfo.ai_family)
 * 
 *                         if reuse_port:             # <<<<<<<<<<<<<<
 *                             self._sock_set_reuseport(tcp._fileno())
 * 
 */
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1066, __pyx_L25_error)
          if (__pyx_t_4) {

            /* "uvloop/loop.pyx":1067
 * 
 *                         if reuse_port:
 *                             self._sock_set_reuseport(tcp._fileno())             # <<<<<<<<<<<<<<
 * 
 *                         try:
 */
            __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_tcp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1067, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1067, __pyx_L25_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_set_reuseport(__pyx_cur_scope->__pyx_v_self, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1067, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "uvloop/loop.pyx":1066
 *                             addrinfo.ai_family)
 * 
 *                         if reuse_port:             # <<<<<<<<<<<<<<
 *                             self._sock_set_reuseport(tcp._fileno())
 * 
 */
          }

          /* "uvloop/loop.pyx":1069
 *                             self._sock_set_reuseport(tcp._fileno())
 * 
 *                         try:             # <<<<<<<<<<<<<<
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_12);
            __Pyx_XGOTREF(__pyx_t_13);
            /*try:*/ {

              /* "uvloop/loop.pyx":1070
 * 
 *                         try:
 *                             tcp.bind(addrinfo.ai_addr)             # <<<<<<<<<<<<<<
 *                             tcp.listen(backlog)
 *                         except OSError as err:
 */
              __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->bind(__pyx_cur_scope->__pyx_v_tcp, __pyx_cur_scope->__pyx_v_addrinfo->ai_addr, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1070, __pyx_L33_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

              /* "uvloop/loop.pyx":1071
 *                         try:
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)             # <<<<<<<<<<<<<<
 *                         except OSError as err:
 *                             pyaddr = __convert_sockaddr_to_pyaddr(
 */
              __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.listen(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_tcp), __pyx_cur_scope->__pyx_v_backlog); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1071, __pyx_L33_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

              /* "uvloop/loop.pyx":1069
 *                             self._sock_set_reuseport(tcp._fileno())
 * 
 *                         try:             # <<<<<<<<<<<<<<
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)
 */
            }
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            goto __pyx_L40_try_end;
            __pyx_L33_error:;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "uvloop/loop.pyx":1072
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)
 *                         except OSError as err:             # <<<<<<<<<<<<<<
 *                             pyaddr = __convert_sockaddr_to_pyaddr(
 *                                 <system.sockaddr*>addrinfo.ai_addr)
 */
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OSError);
            if (__pyx_t_10) {
              __Pyx_AddTraceback("uvloop.loop.Loop.create_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_14) < 0) __PYX_ERR(2, 1072, __pyx_L35_except_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_GOTREF(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_GIVEREF(__pyx_t_2);
              __pyx_cur_scope->__pyx_v_err = __pyx_t_2;
              /*try:*/ {

                /* "uvloop/loop.pyx":1073
 *                             tcp.listen(backlog)
 *                         except OSError as err:
 *                             pyaddr = __convert_sockaddr_to_pyaddr(             # <<<<<<<<<<<<<<
 *                                 <system.sockaddr*>addrinfo.ai_addr)
 *                             raise OSError(err.errno, 'error while attempting '
 */
                __pyx_t_15 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(((struct sockaddr *)__pyx_cur_scope->__pyx_v_addrinfo->ai_addr)); if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 1073, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_15);
                __Pyx_GIVEREF(__pyx_t_15);
                __pyx_cur_scope->__pyx_v_pyaddr = __pyx_t_15;
                __pyx_t_15 = 0;

                /* "uvloop/loop.pyx":1075
 *                             pyaddr = __convert_sockaddr_to_pyaddr(
 *                                 <system.sockaddr*>addrinfo.ai_addr)
 *                             raise OSError(err.errno, 'error while attempting '             # <<<<<<<<<<<<<<
 *                                           'to bind on address %r: %s'
 *                                           % (pyaddr, err.strerror.lower()))
 */
                __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_err, __pyx_n_s_errno); if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 1075, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_15);

                /* "uvloop/loop.pyx":1077
 *                             raise OSError(err.errno, 'error while attempting '
 *                                           'to bind on address %r: %s'
 *                                           % (pyaddr, err.strerror.lower()))             # <<<<<<<<<<<<<<
 * 
 *                         server._add_server(tcp)
 */
                __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_err, __pyx_n_s_strerror); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1077, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_17);
                __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_lower); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 1077, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                __pyx_t_17 = NULL;
                if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_18))) {
                  __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_18);
                  if (likely(__pyx_t_17)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
                    __Pyx_INCREF(__pyx_t_17);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_18, function);
                  }
                }
                if (__pyx_t_17) {
                  __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1077, __pyx_L46_error)
                  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                } else {
                  __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_18); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1077, __pyx_L46_error)
                }
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
                __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 1077, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pyaddr);
                __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pyaddr);
                PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_cur_scope->__pyx_v_pyaddr);
                __Pyx_GIVEREF(__pyx_t_16);
                PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_16);
                __pyx_t_16 = 0;
                __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_error_while_attempting_to_bind_o, __pyx_t_18); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1077, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;

                /* "uvloop/loop.pyx":1075
 *                             pyaddr = __convert_sockaddr_to_pyaddr(
 *                                 <system.sockaddr*>addrinfo.ai_addr)
 *                             raise OSError(err.errno, 'error while attempting '             # <<<<<<<<<<<<<<
 *                                           'to bind on address %r: %s'
 *                                           % (pyaddr, err.strerror.lower()))
 */
                __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 1075, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_GIVEREF(__pyx_t_15);
                PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15);
                __Pyx_GIVEREF(__pyx_t_16);
                PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_16);
                __pyx_t_15 = 0;
                __pyx_t_16 = 0;
                __pyx_t_16 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_18, NULL); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1075, __pyx_L46_error)
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
                __Pyx_Raise(__pyx_t_16, 0, 0, 0);
                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                __PYX_ERR(2, 1075, __pyx_L46_error)
              }

              /* "uvloop/loop.pyx":1072
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)
 *                         except OSError as err:             # <<<<<<<<<<<<<<
 *                             pyaddr = __convert_sockaddr_to_pyaddr(
 *                                 <system.sockaddr*>addrinfo.ai_addr)
 */
              /*finally:*/ {
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __pyx_L46_error:;
                  __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                  __Pyx_PyThreadState_assign
                  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                  if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
                  if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23) < 0)) __Pyx_ErrFetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  __Pyx_XGOTREF(__pyx_t_21);
                  __Pyx_XGOTREF(__pyx_t_22);
                  __Pyx_XGOTREF(__pyx_t_23);
                  __Pyx_XGOTREF(__pyx_t_24);
                  __Pyx_XGOTREF(__pyx_t_25);
                  __Pyx_XGOTREF(__pyx_t_26);
                  __pyx_t_10 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
                  {
                    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_err);
                    __Pyx_DECREF(__pyx_cur_scope->__pyx_v_err);
                    __pyx_cur_scope->__pyx_v_err = NULL;
                  }
                  __Pyx_PyThreadState_assign
                  if (PY_MAJOR_VERSION >= 3) {
                    __Pyx_XGIVEREF(__pyx_t_24);
                    __Pyx_XGIVEREF(__pyx_t_25);
                    __Pyx_XGIVEREF(__pyx_t_26);
                    __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
                  }
                  __Pyx_XGIVEREF(__pyx_t_21);
                  __Pyx_XGIVEREF(__pyx_t_22);
                  __Pyx_XGIVEREF(__pyx_t_23);
                  __Pyx_ErrRestore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                  __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
                  goto __pyx_L35_except_error;
                }
              }
            }
            goto __pyx_L35_except_error;
            __pyx_L35_except_error:;

            /* "uvloop/loop.pyx":1069
 *                             self._sock_set_reuseport(tcp._fileno())
 * 
 *                         try:             # <<<<<<<<<<<<<<
 *                             tcp.bind(addrinfo.ai_addr)
 *                             tcp.listen(backlog)
 */
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
            goto __pyx_L25_error;
            __pyx_L40_try_end:;
          }

          /* "uvloop/loop.pyx":1079
 *                                           % (pyaddr, err.strerror.lower()))
 * 
 *                         server._add_server(tcp)             # <<<<<<<<<<<<<<
 * 
 *                         addrinfo = addrinfo.ai_next
 */
          __pyx_t_14 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)__pyx_cur_scope->__pyx_v_server->__pyx_vtab)->_add_server(__pyx_cur_scope->__pyx_v_server, ((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_tcp)); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1079, __pyx_L25_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

          /* "uvloop/loop.pyx":1081
 *                         server._add_server(tcp)
 * 
 *                         addrinfo = addrinfo.ai_next             # <<<<<<<<<<<<<<
 * 
 *                 completed = True
 */
          __pyx_t_9 = __pyx_cur_scope->__pyx_v_addrinfo->ai_next;
          __pyx_cur_scope->__pyx_v_addrinfo = __pyx_t_9;
        }

        /* "uvloop/loop.pyx":1056
 *             completed = False
 *             try:
 *                 for info in infos:             # <<<<<<<<<<<<<<
 *                     addrinfo = (<AddrInfo>info).data
 *                     while addrinfo != NULL:
 */
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "uvloop/loop.pyx":1083
 *                         addrinfo = addrinfo.ai_next
 * 
 *                 completed = True             # <<<<<<<<<<<<<<
 *             finally:
 *                 if not completed:
 */
      __pyx_cur_scope->__pyx_v_completed = 1;
    }

    /* "uvloop/loop.pyx":1085
 *                 completed = True
 *             finally:
 *                 if not completed:             # <<<<<<<<<<<<<<
 *                     server.close()
 *         else:
 */
    /*finally:*/ {
      /*normal exit:*/{
        __pyx_t_4 = ((!(__pyx_cur_scope->__pyx_v_completed != 0)) != 0);
        if (__pyx_t_4) {

          /* "uvloop/loop.pyx":1086
 *             finally:
 *                 if not completed:
 *                     server.close()             # <<<<<<<<<<<<<<
 *         else:
 *             if sock is None:
 */
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_server), __pyx_n_s_close); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_2 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_14);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_14, function);
            }
          }
          if (__pyx_t_2) {
            __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1086, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          } else {
            __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1086, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

          /* "uvloop/loop.pyx":1085
 *                 completed = True
 *             finally:
 *                 if not completed:             # <<<<<<<<<<<<<<
 *                     server.close()
 *         else:
 */
        }
        goto __pyx_L26;
      }
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __pyx_L25_error:;
        __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_26);
        __Pyx_XGOTREF(__pyx_t_25);
        __Pyx_XGOTREF(__pyx_t_24);
        __pyx_t_19 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_27 = __pyx_filename;
        {
          __pyx_t_4 = ((!(__pyx_cur_scope->__pyx_v_completed != 0)) != 0);
          if (__pyx_t_4) {

            /* "uvloop/loop.pyx":1086
 *             finally:
 *                 if not completed:
 *                     server.close()             # <<<<<<<<<<<<<<
 *         else:
 *             if sock is None:
 */
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_server), __pyx_n_s_close); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1086, __pyx_L54_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_2 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_14);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_14, function);
              }
            }
            if (__pyx_t_2) {
              __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1086, __pyx_L54_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            } else {
              __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1086, __pyx_L54_error)
            }
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

            /* "uvloop/loop.pyx":1085
 *                 completed = True
 *             finally:
 *                 if not completed:             # <<<<<<<<<<<<<<
 *                     server.close()
 *         else:
 */
          }
        }
        __Pyx_PyThreadState_assign
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_26);
          __Pyx_XGIVEREF(__pyx_t_25);
          __Pyx_XGIVEREF(__pyx_t_24);
          __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
        }
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ErrRestore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
        __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
        __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_27;
        goto __pyx_L1_error;
        __pyx_L54_error:;
        __Pyx_PyThreadState_assign
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_26);
          __Pyx_XGIVEREF(__pyx_t_25);
          __Pyx_XGIVEREF(__pyx_t_24);
          __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
        goto __pyx_L1_error;
      }
      __pyx_L26:;
    }

    /* "uvloop/loop.pyx":1031
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 *         if host is not None or port is not None:             # <<<<<<<<<<<<<<
 *             if sock is not None:
 *                 raise ValueError(
 */
    goto __pyx_L7;
  }

  /* "uvloop/loop.pyx":1088
 *                     server.close()
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('Neither host/port nor sock were specified')
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_sock == Py_None);
    __pyx_t_3 = (__pyx_t_4 != 0);
    if (__pyx_t_3) {

      /* "uvloop/loop.pyx":1089
 *         else:
 *             if sock is None:
 *                 raise ValueError('Neither host/port nor sock were specified')             # <<<<<<<<<<<<<<
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,
 *                                 uv.AF_UNSPEC)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1089, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(2, 1089, __pyx_L1_error)

      /* "uvloop/loop.pyx":1088
 *                     server.close()
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('Neither host/port nor sock were specified')
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,
 */
    }

    /* "uvloop/loop.pyx":1090
 *             if sock is None:
 *                 raise ValueError('Neither host/port nor sock were specified')
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,             # <<<<<<<<<<<<<<
 *                                 uv.AF_UNSPEC)
 *             fileno = os_dup(sock.fileno())
 */
    __pyx_t_8 = ((PyObject *)__pyx_f_6uvloop_4loop_9TCPServer_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol_factory, __pyx_cur_scope->__pyx_v_server, __pyx_cur_scope->__pyx_v_ssl, AF_UNSPEC)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_cur_scope->__pyx_v_tcp = ((struct __pyx_obj_6uvloop_4loop_TCPServer *)__pyx_t_8);
    __pyx_t_8 = 0;

    /* "uvloop/loop.pyx":1092
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,
 *                                 uv.AF_UNSPEC)
 *             fileno = os_dup(sock.fileno())             # <<<<<<<<<<<<<<
 *             try:
 *                 tcp.open(fileno)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1092, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_14 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1092, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
    __pyx_t_2 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1092, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_14);
      __pyx_t_14 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_16, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_cur_scope->__pyx_v_fileno = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "uvloop/loop.pyx":1093
 *                                 uv.AF_UNSPEC)
 *             fileno = os_dup(sock.fileno())
 *             try:             # <<<<<<<<<<<<<<
 *                 tcp.open(fileno)
 *                 tcp._attach_fileobj(sock)
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
      __Pyx_XGOTREF(__pyx_t_24);
      __Pyx_XGOTREF(__pyx_t_25);
      __Pyx_XGOTREF(__pyx_t_26);
      /*try:*/ {

        /* "uvloop/loop.pyx":1094
 *             fileno = os_dup(sock.fileno())
 *             try:
 *                 tcp.open(fileno)             # <<<<<<<<<<<<<<
 *                 tcp._attach_fileobj(sock)
 *                 tcp.listen(backlog)
 */
        __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_fileno); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1094, __pyx_L57_error)
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_tcp, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1094, __pyx_L57_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1095
 *             try:
 *                 tcp.open(fileno)
 *                 tcp._attach_fileobj(sock)             # <<<<<<<<<<<<<<
 *                 tcp.listen(backlog)
 *                 server._add_server(tcp)
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_tcp), __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1095, __pyx_L57_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1096
 *                 tcp.open(fileno)
 *                 tcp._attach_fileobj(sock)
 *                 tcp.listen(backlog)             # <<<<<<<<<<<<<<
 *                 server._add_server(tcp)
 *             except:
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.listen(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_tcp), __pyx_cur_scope->__pyx_v_backlog); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1096, __pyx_L57_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1097
 *                 tcp._attach_fileobj(sock)
 *                 tcp.listen(backlog)
 *                 server._add_server(tcp)             # <<<<<<<<<<<<<<
 *             except:
 *                 tcp._close()
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)__pyx_cur_scope->__pyx_v_server->__pyx_vtab)->_add_server(__pyx_cur_scope->__pyx_v_server, ((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_tcp)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1097, __pyx_L57_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "uvloop/loop.pyx":1093
 *                                 uv.AF_UNSPEC)
 *             fileno = os_dup(sock.fileno())
 *             try:             # <<<<<<<<<<<<<<
 *                 tcp.open(fileno)
 *                 tcp._attach_fileobj(sock)
 */
      }
      __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
      __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
      __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
      goto __pyx_L64_try_end;
      __pyx_L57_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "uvloop/loop.pyx":1098
 *                 tcp.listen(backlog)
 *                 server._add_server(tcp)
 *             except:             # <<<<<<<<<<<<<<
 *                 tcp._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_2, &__pyx_t_16) < 0) __PYX_ERR(2, 1098, __pyx_L59_except_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_16);

        /* "uvloop/loop.pyx":1099
 *                 server._add_server(tcp)
 *             except:
 *                 tcp._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_14 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_cur_scope->__pyx_v_tcp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tcp)); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1099, __pyx_L59_except_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

        /* "uvloop/loop.pyx":1100
 *             except:
 *                 tcp._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *         return server
 */
        __Pyx_GIVEREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_2, __pyx_t_16);
        __pyx_t_8 = 0; __pyx_t_2 = 0; __pyx_t_16 = 0; 
        __PYX_ERR(2, 1100, __pyx_L59_except_error)
      }
      __pyx_L59_except_error:;

      /* "uvloop/loop.pyx":1093
 *                                 uv.AF_UNSPEC)
 *             fileno = os_dup(sock.fileno())
 *             try:             # <<<<<<<<<<<<<<
 *                 tcp.open(fileno)
 *                 tcp._attach_fileobj(sock)
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_24);
      __Pyx_XGIVEREF(__pyx_t_25);
      __Pyx_XGIVEREF(__pyx_t_26);
      __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
      goto __pyx_L1_error;
      __pyx_L64_try_end:;
    }
  }
  __pyx_L7:;

  /* "uvloop/loop.pyx":1102
 *                 raise
 * 
 *         return server             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_server));
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1013
 * 
 *     @aio_coroutine
 *     async def create_server(self, protocol_factory, host=None, port=None,             # <<<<<<<<<<<<<<
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("create_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_50generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_49create_connection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_49create_connection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_port = 0;
  PyObject *__pyx_v_ssl = 0;
  PyObject *__pyx_v_family = 0;
  PyObject *__pyx_v_proto = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_local_addr = 0;
  PyObject *__pyx_v_server_hostname = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_connection (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_host,&__pyx_n_s_port,&__pyx_n_s_ssl,&__pyx_n_s_family,&__pyx_n_s_proto,&__pyx_n_s_flags,&__pyx_n_s_sock,&__pyx_n_s_local_addr,&__pyx_n_s_server_hostname,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1106
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,             # <<<<<<<<<<<<<<
 *                                 local_addr=None, server_hostname=None):
 * 
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = ((PyObject *)__pyx_int_0);
    values[5] = ((PyObject *)__pyx_int_0);
    values[6] = ((PyObject *)__pyx_int_0);
    values[7] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1107
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):             # <<<<<<<<<<<<<<
 * 
 *         cdef:
 */
    values[8] = ((PyObject *)Py_None);
    values[9] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_host);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_port);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (kw_args > 0 && likely(kw_args <= 7)) {
        Py_ssize_t index;
        for (index = 3; index < 10 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_connection") < 0)) __PYX_ERR(2, 1105, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_host = values[1];
    __pyx_v_port = values[2];
    __pyx_v_ssl = values[3];
    __pyx_v_family = values[4];
    __pyx_v_proto = values[5];
    __pyx_v_flags = values[6];
    __pyx_v_sock = values[7];
    __pyx_v_local_addr = values[8];
    __pyx_v_server_hostname = values[9];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("create_connection", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1105, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_48create_connection(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_host, __pyx_v_port, __pyx_v_ssl, __pyx_v_family, __pyx_v_proto, __pyx_v_flags, __pyx_v_sock, __pyx_v_local_addr, __pyx_v_server_hostname);

  /* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_17create_connection_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1213
 *                 # If they all have the same str(), raise one.
 *                 model = str(exceptions[0])
 *                 if all(str(exc) == model for exc in exceptions):             # <<<<<<<<<<<<<<
 *                     raise exceptions[0]
 *                 # Raise a combined exception so the user can see all
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_17create_connection_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_7_genexpr(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_7_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_17create_connection_2generator10, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_create_connection_locals_genexpr); if (unlikely(!gen)) __PYX_ERR(2, 1213, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_connection.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_17create_connection_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1213, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions)) { __Pyx_RaiseClosureNameError("exceptions"); __PYX_ERR(2, 1213, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1213, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 1213, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exc);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exc, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_exc);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(2, 1213, __pyx_L1_error) }
    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_model, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(2, 1213, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = ((!__pyx_t_5) != 0);
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_17create_connection_5generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1218
 *                 # the various error messages.
 *                 raise OSError('Multiple exceptions: {}'.format(
 *                     ', '.join(str(exc) for exc in exceptions)))             # <<<<<<<<<<<<<<
 *         else:
 *             if sock is None:
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_17create_connection_3genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_8_genexpr(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_17create_connection_5generator11, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_create_connection_locals_genexpr); if (unlikely(!gen)) __PYX_ERR(2, 1218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_connection.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_17create_connection_5generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1218, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(2, 1218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions)) { __Pyx_RaiseClosureNameError("exceptions"); __PYX_ERR(2, 1218, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1218, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_exceptions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 1218, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exc);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exc, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_exc);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 1218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_48create_connection(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_host, PyObject *__pyx_v_port, PyObject *__pyx_v_ssl, PyObject *__pyx_v_family, PyObject *__pyx_v_proto, PyObject *__pyx_v_flags, PyObject *__pyx_v_sock, PyObject *__pyx_v_local_addr, PyObject *__pyx_v_server_hostname) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_connection", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_6_create_connection(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_6_create_connection, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_host = __pyx_v_host;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_host);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_host);
  __pyx_cur_scope->__pyx_v_port = __pyx_v_port;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_port);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_port);
  __pyx_cur_scope->__pyx_v_ssl = __pyx_v_ssl;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl);
  __pyx_cur_scope->__pyx_v_family = __pyx_v_family;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_family);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_family);
  __pyx_cur_scope->__pyx_v_proto = __pyx_v_proto;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto);
  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_flags);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flags);
  __pyx_cur_scope->__pyx_v_sock = __pyx_v_sock;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
  __pyx_cur_scope->__pyx_v_local_addr = __pyx_v_local_addr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_local_addr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_local_addr);
  __pyx_cur_scope->__pyx_v_server_hostname = __pyx_v_server_hostname;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_hostname);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_hostname);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_50generator2, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_connection, __pyx_n_s_Loop_create_connection); if (unlikely(!gen)) __PYX_ERR(2, 1105, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_50generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  struct addrinfo *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  char const *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  PyObject *__pyx_t_25 = NULL;
  PyObject *__pyx_t_26 = NULL;
  PyObject *__pyx_t_27 = NULL;
  char const *__pyx_t_28;
  PyObject *__pyx_t_29 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L17_resume_from_yield;
    case 2: goto __pyx_L53_resume_from_yield;
    case 3: goto __pyx_L79_resume_from_yield;
    case 4: goto __pyx_L83_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1105, __pyx_L1_error)

  /* "uvloop/loop.pyx":1110
 * 
 *         cdef:
 *             AddrInfo ai_local = None             # <<<<<<<<<<<<<<
 *             AddrInfo ai_remote
 *             system.addrinfo *rai
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_cur_scope->__pyx_v_ai_local = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)Py_None);

  /* "uvloop/loop.pyx":1120
 *             object ssl_waiter
 * 
 *         app_protocol = protocol = protocol_factory()             # <<<<<<<<<<<<<<
 *         ssl_waiter = None
 *         if ssl:
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_protocol_factory; __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1120, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1120, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_app_protocol = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_protocol = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1121
 * 
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None             # <<<<<<<<<<<<<<
 *         if ssl:
 *             if server_hostname is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_cur_scope->__pyx_v_ssl_waiter = Py_None;

  /* "uvloop/loop.pyx":1122
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None
 *         if ssl:             # <<<<<<<<<<<<<<
 *             if server_hostname is None:
 *                 if not host:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_ssl); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1122, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":1123
 *         ssl_waiter = None
 *         if ssl:
 *             if server_hostname is None:             # <<<<<<<<<<<<<<
 *                 if not host:
 *                     raise ValueError('You must set server_hostname '
 */
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_server_hostname == Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "uvloop/loop.pyx":1124
 *         if ssl:
 *             if server_hostname is None:
 *                 if not host:             # <<<<<<<<<<<<<<
 *                     raise ValueError('You must set server_hostname '
 *                                      'when using ssl without a host')
 */
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_host); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(2, 1124, __pyx_L1_error)
      __pyx_t_4 = ((!__pyx_t_5) != 0);
      if (__pyx_t_4) {

        /* "uvloop/loop.pyx":1125
 *             if server_hostname is None:
 *                 if not host:
 *                     raise ValueError('You must set server_hostname '             # <<<<<<<<<<<<<<
 *                                      'when using ssl without a host')
 *                 server_hostname = host
 */
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1125, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(2, 1125, __pyx_L1_error)

        /* "uvloop/loop.pyx":1124
 *         if ssl:
 *             if server_hostname is None:
 *                 if not host:             # <<<<<<<<<<<<<<
 *                     raise ValueError('You must set server_hostname '
 *                                      'when using ssl without a host')
 */
      }

      /* "uvloop/loop.pyx":1127
 *                     raise ValueError('You must set server_hostname '
 *                                      'when using ssl without a host')
 *                 server_hostname = host             # <<<<<<<<<<<<<<
 * 
 *             ssl_waiter = self._new_future()
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_host);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_server_hostname);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_server_hostname, __pyx_cur_scope->__pyx_v_host);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_host);

      /* "uvloop/loop.pyx":1123
 *         ssl_waiter = None
 *         if ssl:
 *             if server_hostname is None:             # <<<<<<<<<<<<<<
 *                 if not host:
 *                     raise ValueError('You must set server_hostname '
 */
    }

    /* "uvloop/loop.pyx":1129
 *                 server_hostname = host
 * 
 *             ssl_waiter = self._new_future()             # <<<<<<<<<<<<<<
 *             sslcontext = None if isinstance(ssl, bool) else ssl
 *             protocol = aio_SSLProtocol(
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ssl_waiter, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1130
 * 
 *             ssl_waiter = self._new_future()
 *             sslcontext = None if isinstance(ssl, bool) else ssl             # <<<<<<<<<<<<<<
 *             protocol = aio_SSLProtocol(
 *                 self, app_protocol, sslcontext, ssl_waiter,
 */
    __pyx_t_2 = ((PyObject*)&PyBool_Type);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_ssl, __pyx_t_2); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(2, 1130, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if ((__pyx_t_4 != 0)) {
      __Pyx_INCREF(Py_None);
      __pyx_t_1 = Py_None;
    } else {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
      __pyx_t_1 = __pyx_cur_scope->__pyx_v_ssl;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_sslcontext = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1133
 *             protocol = aio_SSLProtocol(
 *                 self, app_protocol, sslcontext, ssl_waiter,
 *                 False, server_hostname)             # <<<<<<<<<<<<<<
 *         else:
 *             if server_hostname is not None:
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_SSLProtocol);
    __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_SSLProtocol; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_app_protocol);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sslcontext);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sslcontext);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_sslcontext);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, Py_False);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_hostname);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_hostname);
    PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_6, __pyx_cur_scope->__pyx_v_server_hostname);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_protocol);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_protocol, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1122
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None
 *         if ssl:             # <<<<<<<<<<<<<<
 *             if server_hostname is None:
 *                 if not host:
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":1135
 *                 False, server_hostname)
 *         else:
 *             if server_hostname is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_server_hostname != Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "uvloop/loop.pyx":1136
 *         else:
 *             if server_hostname is not None:
 *                 raise ValueError('server_hostname is only meaningful with ssl')             # <<<<<<<<<<<<<<
 * 
 *         if host is not None or port is not None:
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1136, __pyx_L1_error)

      /* "uvloop/loop.pyx":1135
 *                 False, server_hostname)
 *         else:
 *             if server_hostname is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 */
    }
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":1138
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 *         if host is not None or port is not None:             # <<<<<<<<<<<<<<
 *             f1 = self._getaddrinfo(host, port, family,
 *                                    uv.SOCK_STREAM, proto, flags,
 */
  __pyx_t_4 = (__pyx_cur_scope->__pyx_v_host != Py_None);
  __pyx_t_8 = (__pyx_t_4 != 0);
  if (!__pyx_t_8) {
  } else {
    __pyx_t_5 = __pyx_t_8;
    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_8 = (__pyx_cur_scope->__pyx_v_port != Py_None);
  __pyx_t_4 = (__pyx_t_8 != 0);
  __pyx_t_5 = __pyx_t_4;
  __pyx_L9_bool_binop_done:;
  if (__pyx_t_5) {

    /* "uvloop/loop.pyx":1139
 * 
 *         if host is not None or port is not None:
 *             f1 = self._getaddrinfo(host, port, family,             # <<<<<<<<<<<<<<
 *                                    uv.SOCK_STREAM, proto, flags,
 *                                    0)  # 0 == don't unpack
 */
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_family); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1139, __pyx_L1_error)

    /* "uvloop/loop.pyx":1140
 *         if host is not None or port is not None:
 *             f1 = self._getaddrinfo(host, port, family,
 *                                    uv.SOCK_STREAM, proto, flags,             # <<<<<<<<<<<<<<
 *                                    0)  # 0 == don't unpack
 * 
 */
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_proto); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1140, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1140, __pyx_L1_error)

    /* "uvloop/loop.pyx":1139
 * 
 *         if host is not None or port is not None:
 *             f1 = self._getaddrinfo(host, port, family,             # <<<<<<<<<<<<<<
 *                                    uv.SOCK_STREAM, proto, flags,
 *                                    0)  # 0 == don't unpack
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_host, __pyx_cur_scope->__pyx_v_port, __pyx_t_9, SOCK_STREAM, __pyx_t_10, __pyx_t_11, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_f1 = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1143
 *                                    0)  # 0 == don't unpack
 * 
 *             fs = [f1]             # <<<<<<<<<<<<<<
 * 
 *             f2 = None
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f1);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f1);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_f1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_fs = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1145
 *             fs = [f1]
 * 
 *             f2 = None             # <<<<<<<<<<<<<<
 *             if local_addr is not None:
 *                 if not isinstance(local_addr, (tuple, list)) or \
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_f2 = Py_None;

    /* "uvloop/loop.pyx":1146
 * 
 *             f2 = None
 *             if local_addr is not None:             # <<<<<<<<<<<<<<
 *                 if not isinstance(local_addr, (tuple, list)) or \
 *                         len(local_addr) != 2:
 */
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_local_addr != Py_None);
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1147
 *             f2 = None
 *             if local_addr is not None:
 *                 if not isinstance(local_addr, (tuple, list)) or \             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2:
 *                     raise ValueError(
 */
      __pyx_t_8 = PyTuple_Check(__pyx_cur_scope->__pyx_v_local_addr); 
      __pyx_t_12 = (__pyx_t_8 != 0);
      if (!__pyx_t_12) {
      } else {
        __pyx_t_5 = __pyx_t_12;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_12 = PyList_Check(__pyx_cur_scope->__pyx_v_local_addr); 
      __pyx_t_8 = (__pyx_t_12 != 0);
      __pyx_t_5 = __pyx_t_8;
      __pyx_L15_bool_binop_done:;
      __pyx_t_8 = ((!(__pyx_t_5 != 0)) != 0);
      if (!__pyx_t_8) {
      } else {
        __pyx_t_4 = __pyx_t_8;
        goto __pyx_L13_bool_binop_done;
      }

      /* "uvloop/loop.pyx":1148
 *             if local_addr is not None:
 *                 if not isinstance(local_addr, (tuple, list)) or \
 *                         len(local_addr) != 2:             # <<<<<<<<<<<<<<
 *                     raise ValueError(
 *                         'local_addr must be a tuple of host and port')
 */
      __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_local_addr); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(2, 1148, __pyx_L1_error)
      __pyx_t_8 = ((__pyx_t_6 != 2) != 0);
      __pyx_t_4 = __pyx_t_8;
      __pyx_L13_bool_binop_done:;

      /* "uvloop/loop.pyx":1147
 *             f2 = None
 *             if local_addr is not None:
 *                 if not isinstance(local_addr, (tuple, list)) or \             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2:
 *                     raise ValueError(
 */
      if (__pyx_t_4) {

        /* "uvloop/loop.pyx":1149
 *                 if not isinstance(local_addr, (tuple, list)) or \
 *                         len(local_addr) != 2:
 *                     raise ValueError(             # <<<<<<<<<<<<<<
 *                         'local_addr must be a tuple of host and port')
 * 
 */
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1149, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(2, 1149, __pyx_L1_error)

        /* "uvloop/loop.pyx":1147
 *             f2 = None
 *             if local_addr is not None:
 *                 if not isinstance(local_addr, (tuple, list)) or \             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2:
 *                     raise ValueError(
 */
      }

      /* "uvloop/loop.pyx":1152
 *                         'local_addr must be a tuple of host and port')
 * 
 *                 f2 = self._getaddrinfo(local_addr[0], local_addr[1], family,             # <<<<<<<<<<<<<<
 *                                        uv.SOCK_STREAM, proto, flags,
 *                                        0)  # 0 == don't unpack
 */
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_local_addr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_local_addr, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_family); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1152, __pyx_L1_error)

      /* "uvloop/loop.pyx":1153
 * 
 *                 f2 = self._getaddrinfo(local_addr[0], local_addr[1], family,
 *                                        uv.SOCK_STREAM, proto, flags,             # <<<<<<<<<<<<<<
 *                                        0)  # 0 == don't unpack
 *                 fs.append(f2)
 */
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_proto); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1153, __pyx_L1_error)
      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1153, __pyx_L1_error)

      /* "uvloop/loop.pyx":1152
 *                         'local_addr must be a tuple of host and port')
 * 
 *                 f2 = self._getaddrinfo(local_addr[0], local_addr[1], family,             # <<<<<<<<<<<<<<
 *                                        uv.SOCK_STREAM, proto, flags,
 *                                        0)  # 0 == don't unpack
 */
      __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_t_1, __pyx_t_2, __pyx_t_11, SOCK_STREAM, __pyx_t_10, __pyx_t_9, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_f2);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_f2, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;

      /* "uvloop/loop.pyx":1155
 *                                        uv.SOCK_STREAM, proto, flags,
 *                                        0)  # 0 == don't unpack
 *                 fs.append(f2)             # <<<<<<<<<<<<<<
 * 
 *             await aio_wait(fs, loop=self)
 */
      __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_fs, __pyx_cur_scope->__pyx_v_f2); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(2, 1155, __pyx_L1_error)

      /* "uvloop/loop.pyx":1146
 * 
 *             f2 = None
 *             if local_addr is not None:             # <<<<<<<<<<<<<<
 *                 if not isinstance(local_addr, (tuple, list)) or \
 *                         len(local_addr) != 2:
 */
    }

    /* "uvloop/loop.pyx":1157
 *                 fs.append(f2)
 * 
 *             await aio_wait(fs, loop=self)             # <<<<<<<<<<<<<<
 * 
 *             ai_remote = f1.result()
 */
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fs);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fs);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_fs);
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_loop, ((PyObject *)__pyx_cur_scope->__pyx_v_self)) < 0) __PYX_ERR(2, 1157, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_wait, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L17_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1157, __pyx_L1_error)
    } else {
      PyObject* exc_type = PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
        else __PYX_ERR(2, 1157, __pyx_L1_error)
      }
    }

    /* "uvloop/loop.pyx":1159
 *             await aio_wait(fs, loop=self)
 * 
 *             ai_remote = f1.result()             # <<<<<<<<<<<<<<
 *             if ai_remote.data is NULL:
 *                 raise OSError('getaddrinfo() returned empty list')
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_f1, __pyx_n_s_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1159, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1159, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_AddrInfo))))) __PYX_ERR(2, 1159, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_ai_remote = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1160
 * 
 *             ai_remote = f1.result()
 *             if ai_remote.data is NULL:             # <<<<<<<<<<<<<<
 *                 raise OSError('getaddrinfo() returned empty list')
 * 
 */
    __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_ai_remote->data == NULL) != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1161
 *             ai_remote = f1.result()
 *             if ai_remote.data is NULL:
 *                 raise OSError('getaddrinfo() returned empty list')             # <<<<<<<<<<<<<<
 * 
 *             if f2 is not None:
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1161, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1161, __pyx_L1_error)

      /* "uvloop/loop.pyx":1160
 * 
 *             ai_remote = f1.result()
 *             if ai_remote.data is NULL:             # <<<<<<<<<<<<<<
 *                 raise OSError('getaddrinfo() returned empty list')
 * 
 */
    }

    /* "uvloop/loop.pyx":1163
 *                 raise OSError('getaddrinfo() returned empty list')
 * 
 *             if f2 is not None:             # <<<<<<<<<<<<<<
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:
 */
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_f2 != Py_None);
    __pyx_t_8 = (__pyx_t_4 != 0);
    if (__pyx_t_8) {

      /* "uvloop/loop.pyx":1164
 * 
 *             if f2 is not None:
 *                 ai_local = f2.result()             # <<<<<<<<<<<<<<
 *                 if ai_local.data is NULL:
 *                     raise OSError(
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_f2, __pyx_n_s_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1164, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1164, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1164, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_AddrInfo))))) __PYX_ERR(2, 1164, __pyx_L1_error)
      __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ai_local));
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ai_local, ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_t_1));
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1165
 *             if f2 is not None:
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:             # <<<<<<<<<<<<<<
 *                     raise OSError(
 *                         'getaddrinfo() returned empty list for local_addr')
 */
      __pyx_t_8 = ((__pyx_cur_scope->__pyx_v_ai_local->data == NULL) != 0);
      if (__pyx_t_8) {

        /* "uvloop/loop.pyx":1166
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:
 *                     raise OSError(             # <<<<<<<<<<<<<<
 *                         'getaddrinfo() returned empty list for local_addr')
 * 
 */
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(2, 1166, __pyx_L1_error)

        /* "uvloop/loop.pyx":1165
 *             if f2 is not None:
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:             # <<<<<<<<<<<<<<
 *                     raise OSError(
 *                         'getaddrinfo() returned empty list for local_addr')
 */
      }

      /* "uvloop/loop.pyx":1163
 *                 raise OSError('getaddrinfo() returned empty list')
 * 
 *             if f2 is not None:             # <<<<<<<<<<<<<<
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:
 */
    }

    /* "uvloop/loop.pyx":1169
 *                         'getaddrinfo() returned empty list for local_addr')
 * 
 *             exceptions = []             # <<<<<<<<<<<<<<
 *             rai = ai_remote.data
 *             while rai is not NULL:
 */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_exceptions = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1170
 * 
 *             exceptions = []
 *             rai = ai_remote.data             # <<<<<<<<<<<<<<
 *             while rai is not NULL:
 *                 tr = None
 */
    __pyx_t_14 = __pyx_cur_scope->__pyx_v_ai_remote->data;
    __pyx_cur_scope->__pyx_v_rai = __pyx_t_14;

    /* "uvloop/loop.pyx":1171
 *             exceptions = []
 *             rai = ai_remote.data
 *             while rai is not NULL:             # <<<<<<<<<<<<<<
 *                 tr = None
 *                 try:
 */
    while (1) {
      __pyx_t_8 = ((__pyx_cur_scope->__pyx_v_rai != NULL) != 0);
      if (!__pyx_t_8) break;

      /* "uvloop/loop.pyx":1172
 *             rai = ai_remote.data
 *             while rai is not NULL:
 *                 tr = None             # <<<<<<<<<<<<<<
 *                 try:
 *                     waiter = self._new_future()
 */
      __Pyx_INCREF(Py_None);
      __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_tr, ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None));
      __Pyx_GIVEREF(Py_None);

      /* "uvloop/loop.pyx":1173
 *             while rai is not NULL:
 *                 tr = None
 *                 try:             # <<<<<<<<<<<<<<
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_16);
        __Pyx_XGOTREF(__pyx_t_17);
        /*try:*/ {

          /* "uvloop/loop.pyx":1174
 *                 tr = None
 *                 try:
 *                     waiter = self._new_future()             # <<<<<<<<<<<<<<
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 *                     if ai_local is not None:
 */
          __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1174, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_waiter);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_waiter, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_1 = 0;

          /* "uvloop/loop.pyx":1175
 *                 try:
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)             # <<<<<<<<<<<<<<
 *                     if ai_local is not None:
 *                         lai = ai_local.data
 */
          __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_12TCPTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1175, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
          __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_tr, ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_1));
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_1 = 0;

          /* "uvloop/loop.pyx":1176
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 *                     if ai_local is not None:             # <<<<<<<<<<<<<<
 *                         lai = ai_local.data
 *                         while lai is not NULL:
 */
          __pyx_t_8 = (((PyObject *)__pyx_cur_scope->__pyx_v_ai_local) != Py_None);
          __pyx_t_4 = (__pyx_t_8 != 0);
          if (__pyx_t_4) {

            /* "uvloop/loop.pyx":1177
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 *                     if ai_local is not None:
 *                         lai = ai_local.data             # <<<<<<<<<<<<<<
 *                         while lai is not NULL:
 *                             try:
 */
            __pyx_t_14 = __pyx_cur_scope->__pyx_v_ai_local->data;
            __pyx_cur_scope->__pyx_v_lai = __pyx_t_14;

            /* "uvloop/loop.pyx":1178
 *                     if ai_local is not None:
 *                         lai = ai_local.data
 *                         while lai is not NULL:             # <<<<<<<<<<<<<<
 *                             try:
 *                                 tr.bind(lai.ai_addr)
 */
            while (1) {
              __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_lai != NULL) != 0);
              if (!__pyx_t_4) break;

              /* "uvloop/loop.pyx":1179
 *                         lai = ai_local.data
 *                         while lai is not NULL:
 *                             try:             # <<<<<<<<<<<<<<
 *                                 tr.bind(lai.ai_addr)
 *                                 break
 */
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_20);
                /*try:*/ {

                  /* "uvloop/loop.pyx":1180
 *                         while lai is not NULL:
 *                             try:
 *                                 tr.bind(lai.ai_addr)             # <<<<<<<<<<<<<<
 *                                 break
 *                             except OSError as exc:
 */
                  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->bind(__pyx_cur_scope->__pyx_v_tr, __pyx_cur_scope->__pyx_v_lai->ai_addr, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1180, __pyx_L34_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

                  /* "uvloop/loop.pyx":1181
 *                             try:
 *                                 tr.bind(lai.ai_addr)
 *                                 break             # <<<<<<<<<<<<<<
 *                             except OSError as exc:
 *                                 exceptions.append(exc)
 */
                  goto __pyx_L39_try_break;

                  /* "uvloop/loop.pyx":1179
 *                         lai = ai_local.data
 *                         while lai is not NULL:
 *                             try:             # <<<<<<<<<<<<<<
 *                                 tr.bind(lai.ai_addr)
 *                                 break
 */
                }
                __pyx_L34_error:;
                __Pyx_PyThreadState_assign
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

                /* "uvloop/loop.pyx":1182
 *                                 tr.bind(lai.ai_addr)
 *                                 break
 *                             except OSError as exc:             # <<<<<<<<<<<<<<
 *                                 exceptions.append(exc)
 *                             lai = lai.ai_next
 */
                __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OSError);
                if (__pyx_t_9) {
                  __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(2, 1182, __pyx_L36_except_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_GOTREF(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_2);
                  __Pyx_GIVEREF(__pyx_t_2);
                  __pyx_cur_scope->__pyx_v_exc = __pyx_t_2;
                  /*try:*/ {

                    /* "uvloop/loop.pyx":1183
 *                                 break
 *                             except OSError as exc:
 *                                 exceptions.append(exc)             # <<<<<<<<<<<<<<
 *                             lai = lai.ai_next
 *                         else:
 */
                    __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_exceptions, __pyx_cur_scope->__pyx_v_exc); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(2, 1183, __pyx_L47_error)
                  }

                  /* "uvloop/loop.pyx":1182
 *                                 tr.bind(lai.ai_addr)
 *                                 break
 *                             except OSError as exc:             # <<<<<<<<<<<<<<
 *                                 exceptions.append(exc)
 *                             lai = lai.ai_next
 */
                  /*finally:*/ {
                    /*normal exit:*/{
                      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_exc);
                      __Pyx_DECREF(__pyx_cur_scope->__pyx_v_exc);
                      __pyx_cur_scope->__pyx_v_exc = NULL;
                      goto __pyx_L48;
                    }
                    /*exception exit:*/{
                      __Pyx_PyThreadState_declare
                      __pyx_L47_error:;
                      __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
                      __Pyx_PyThreadState_assign
                      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27);
                      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
                      __Pyx_XGOTREF(__pyx_t_22);
                      __Pyx_XGOTREF(__pyx_t_23);
                      __Pyx_XGOTREF(__pyx_t_24);
                      __Pyx_XGOTREF(__pyx_t_25);
                      __Pyx_XGOTREF(__pyx_t_26);
                      __Pyx_XGOTREF(__pyx_t_27);
                      __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
                      {
                        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_exc);
                        __Pyx_DECREF(__pyx_cur_scope->__pyx_v_exc);
                        __pyx_cur_scope->__pyx_v_exc = NULL;
                      }
                      __Pyx_PyThreadState_assign
                      if (PY_MAJOR_VERSION >= 3) {
                        __Pyx_XGIVEREF(__pyx_t_25);
                        __Pyx_XGIVEREF(__pyx_t_26);
                        __Pyx_XGIVEREF(__pyx_t_27);
                        __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_26, __pyx_t_27);
                      }
                      __Pyx_XGIVEREF(__pyx_t_22);
                      __Pyx_XGIVEREF(__pyx_t_23);
                      __Pyx_XGIVEREF(__pyx_t_24);
                      __Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24);
                      __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
                      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_21;
                      goto __pyx_L36_except_error;
                    }
                    __pyx_L48:;
                  }
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                  goto __pyx_L35_exception_handled;
                }
                goto __pyx_L36_except_error;
                __pyx_L36_except_error:;

                /* "uvloop/loop.pyx":1179
 *                         lai = ai_local.data
 *                         while lai is not NULL:
 *                             try:             # <<<<<<<<<<<<<<
 *                                 tr.bind(lai.ai_addr)
 *                                 break
 */
                __Pyx_PyThreadState_assign
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L23_error;
                __pyx_L39_try_break:;
                __Pyx_PyThreadState_assign
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L33_break;
                __pyx_L35_exception_handled:;
                __Pyx_PyThreadState_assign
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
              }

              /* "uvloop/loop.pyx":1184
 *                             except OSError as exc:
 *                                 exceptions.append(exc)
 *                             lai = lai.ai_next             # <<<<<<<<<<<<<<
 *                         else:
 *                             tr._close()
 */
              __pyx_t_14 = __pyx_cur_scope->__pyx_v_lai->ai_next;
              __pyx_cur_scope->__pyx_v_lai = __pyx_t_14;
            }

            /* "uvloop/loop.pyx":1186
 *                             lai = lai.ai_next
 *                         else:
 *                             tr._close()             # <<<<<<<<<<<<<<
 *                             tr = None
 * 
 */
            /*else*/ {
              __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1186, __pyx_L23_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

              /* "uvloop/loop.pyx":1187
 *                         else:
 *                             tr._close()
 *                             tr = None             # <<<<<<<<<<<<<<
 * 
 *                             rai = rai.ai_next
 */
              __Pyx_INCREF(Py_None);
              __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
              __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_tr, ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None));
              __Pyx_GIVEREF(Py_None);

              /* "uvloop/loop.pyx":1189
 *                             tr = None
 * 
 *                             rai = rai.ai_next             # <<<<<<<<<<<<<<
 *                             continue
 * 
 */
              __pyx_t_14 = __pyx_cur_scope->__pyx_v_rai->ai_next;
              __pyx_cur_scope->__pyx_v_rai = __pyx_t_14;

              /* "uvloop/loop.pyx":1190
 * 
 *                             rai = rai.ai_next
 *                             continue             # <<<<<<<<<<<<<<
 * 
 *                     tr.connect(rai.ai_addr)
 */
              goto __pyx_L29_try_continue;
            }
            __pyx_L33_break:;

            /* "uvloop/loop.pyx":1176
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 *                     if ai_local is not None:             # <<<<<<<<<<<<<<
 *                         lai = ai_local.data
 *                         while lai is not NULL:
 */
          }

          /* "uvloop/loop.pyx":1192
 *                             continue
 * 
 *                     tr.connect(rai.ai_addr)             # <<<<<<<<<<<<<<
 *                     await waiter
 * 
 */
          __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->connect(__pyx_cur_scope->__pyx_v_tr, __pyx_cur_scope->__pyx_v_rai->ai_addr); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1192, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "uvloop/loop.pyx":1193
 * 
 *                     tr.connect(rai.ai_addr)
 *                     await waiter             # <<<<<<<<<<<<<<
 * 
 *                 except OSError as exc:
 */
          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
          __Pyx_XGOTREF(__pyx_r);
          if (likely(__pyx_r)) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_15;
            __Pyx_XGIVEREF(__pyx_t_16);
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_16;
            __Pyx_XGIVEREF(__pyx_t_17);
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_17;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 2;
            return __pyx_r;
            __pyx_L53_resume_from_yield:;
            __pyx_t_15 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_15);
            __pyx_t_16 = __pyx_cur_scope->__pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = 0;
            __Pyx_XGOTREF(__pyx_t_16);
            __pyx_t_17 = __pyx_cur_scope->__pyx_t_2;
            __pyx_cur_scope->__pyx_t_2 = 0;
            __Pyx_XGOTREF(__pyx_t_17);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1193, __pyx_L23_error)
          } else {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(2, 1193, __pyx_L23_error)
            }
          }

          /* "uvloop/loop.pyx":1173
 *             while rai is not NULL:
 *                 tr = None
 *                 try:             # <<<<<<<<<<<<<<
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 */
        }

        /* "uvloop/loop.pyx":1206
 *                     raise
 *                 else:
 *                     break             # <<<<<<<<<<<<<<
 * 
 *                 rai = rai.ai_next
 */
        /*else:*/ {
          goto __pyx_L28_try_break;
        }
        __pyx_L23_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "uvloop/loop.pyx":1195
 *                     await waiter
 * 
 *                 except OSError as exc:             # <<<<<<<<<<<<<<
 *                     if tr is not None:
 *                         tr._close()
 */
        __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OSError);
        if (__pyx_t_10) {
          __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(2, 1195, __pyx_L25_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exc);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exc, __pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          /*try:*/ {

            /* "uvloop/loop.pyx":1196
 * 
 *                 except OSError as exc:
 *                     if tr is not None:             # <<<<<<<<<<<<<<
 *                         tr._close()
 *                         tr = None
 */
            __pyx_t_4 = (((PyObject *)__pyx_cur_scope->__pyx_v_tr) != Py_None);
            __pyx_t_8 = (__pyx_t_4 != 0);
            if (__pyx_t_8) {

              /* "uvloop/loop.pyx":1197
 *                 except OSError as exc:
 *                     if tr is not None:
 *                         tr._close()             # <<<<<<<<<<<<<<
 *                         tr = None
 *                     exceptions.append(exc)
 */
              __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1197, __pyx_L59_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "uvloop/loop.pyx":1198
 *                     if tr is not None:
 *                         tr._close()
 *                         tr = None             # <<<<<<<<<<<<<<
 *                     exceptions.append(exc)
 *                 except:
 */
              __Pyx_INCREF(Py_None);
              __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
              __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_tr, ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None));
              __Pyx_GIVEREF(Py_None);

              /* "uvloop/loop.pyx":1196
 * 
 *                 except OSError as exc:
 *                     if tr is not None:             # <<<<<<<<<<<<<<
 *                         tr._close()
 *                         tr = None
 */
            }

            /* "uvloop/loop.pyx":1199
 *                         tr._close()
 *                         tr = None
 *                     exceptions.append(exc)             # <<<<<<<<<<<<<<
 *                 except:
 *                     if tr is not None:
 */
            __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_exceptions, __pyx_cur_scope->__pyx_v_exc); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(2, 1199, __pyx_L59_error)
          }

          /* "uvloop/loop.pyx":1195
 *                     await waiter
 * 
 *                 except OSError as exc:             # <<<<<<<<<<<<<<
 *                     if tr is not None:
 *                         tr._close()
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_exc);
              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_exc);
              __pyx_cur_scope->__pyx_v_exc = NULL;
              goto __pyx_L60;
            }
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __pyx_L59_error:;
              __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0;
              __Pyx_PyThreadState_assign
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_26, &__pyx_t_25);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_27);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __pyx_t_10 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_28 = __pyx_filename;
              {
                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_exc);
                __Pyx_DECREF(__pyx_cur_scope->__pyx_v_exc);
                __pyx_cur_scope->__pyx_v_exc = NULL;
              }
              __Pyx_PyThreadState_assign
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_26, __pyx_t_25);
              }
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
              __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0;
              __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_28;
              goto __pyx_L25_except_error;
            }
            __pyx_L60:;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L24_exception_handled;
        }

        /* "uvloop/loop.pyx":1200
 *                         tr = None
 *                     exceptions.append(exc)
 *                 except:             # <<<<<<<<<<<<<<
 *                     if tr is not None:
 *                         tr._close()
 */
        /*except:*/ {
          __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(2, 1200, __pyx_L25_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_7);

          /* "uvloop/loop.pyx":1201
 *                     exceptions.append(exc)
 *                 except:
 *                     if tr is not None:             # <<<<<<<<<<<<<<
 *                         tr._close()
 *                         tr = None
 */
          __pyx_t_8 = (((PyObject *)__pyx_cur_scope->__pyx_v_tr) != Py_None);
          __pyx_t_4 = (__pyx_t_8 != 0);
          if (__pyx_t_4) {

            /* "uvloop/loop.pyx":1202
 *                 except:
 *                     if tr is not None:
 *                         tr._close()             # <<<<<<<<<<<<<<
 *                         tr = None
 *                     raise
 */
            __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1202, __pyx_L25_except_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "uvloop/loop.pyx":1203
 *                     if tr is not None:
 *                         tr._close()
 *                         tr = None             # <<<<<<<<<<<<<<
 *                     raise
 *                 else:
 */
            __Pyx_INCREF(Py_None);
            __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
            __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_tr, ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None));
            __Pyx_GIVEREF(Py_None);

            /* "uvloop/loop.pyx":1201
 *                     exceptions.append(exc)
 *                 except:
 *                     if tr is not None:             # <<<<<<<<<<<<<<
 *                         tr._close()
 *                         tr = None
 */
          }

          /* "uvloop/loop.pyx":1204
 *                         tr._close()
 *                         tr = None
 *                     raise             # <<<<<<<<<<<<<<
 *                 else:
 *                     break
 */
          __Pyx_GIVEREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_7);
          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; 
          __PYX_ERR(2, 1204, __pyx_L25_except_error)
        }
        __pyx_L25_except_error:;

        /* "uvloop/loop.pyx":1173
 *             while rai is not NULL:
 *                 tr = None
 *                 try:             # <<<<<<<<<<<<<<
 *                     waiter = self._new_future()
 *                     tr = TCPTransport.new(self, protocol, None, waiter)
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        goto __pyx_L1_error;
        __pyx_L28_try_break:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        goto __pyx_L22_break;
        __pyx_L29_try_continue:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        goto __pyx_L21_continue;
        __pyx_L24_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      }

      /* "uvloop/loop.pyx":1208
 *                     break
 * 
 *                 rai = rai.ai_next             # <<<<<<<<<<<<<<
 * 
 *             else:
 */
      __pyx_t_14 = __pyx_cur_scope->__pyx_v_rai->ai_next;
      __pyx_cur_scope->__pyx_v_rai = __pyx_t_14;
      __pyx_L21_continue:;
    }

    /* "uvloop/loop.pyx":1212
 *             else:
 *                 # If they all have the same str(), raise one.
 *                 model = str(exceptions[0])             # <<<<<<<<<<<<<<
 *                 if all(str(exc) == model for exc in exceptions):
 *                     raise exceptions[0]
 */
    /*else*/ {
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_exceptions, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_cur_scope->__pyx_v_model = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "uvloop/loop.pyx":1213
 *                 # If they all have the same str(), raise one.
 *                 model = str(exceptions[0])
 *                 if all(str(exc) == model for exc in exceptions):             # <<<<<<<<<<<<<<
 *                     raise exceptions[0]
 *                 # Raise a combined exception so the user can see all
 */
      __pyx_t_7 = __pyx_pf_6uvloop_4loop_4Loop_17create_connection_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1213, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = __Pyx_Generator_Next(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1213, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1213, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_4) {

        /* "uvloop/loop.pyx":1214
 *                 model = str(exceptions[0])
 *                 if all(str(exc) == model for exc in exceptions):
 *                     raise exceptions[0]             # <<<<<<<<<<<<<<
 *                 # Raise a combined exception so the user can see all
 *                 # the various error messages.
 */
        __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_exceptions, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1214, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(2, 1214, __pyx_L1_error)

        /* "uvloop/loop.pyx":1213
 *                 # If they all have the same str(), raise one.
 *                 model = str(exceptions[0])
 *                 if all(str(exc) == model for exc in exceptions):             # <<<<<<<<<<<<<<
 *                     raise exceptions[0]
 *                 # Raise a combined exception so the user can see all
 */
      }

      /* "uvloop/loop.pyx":1217
 *                 # Raise a combined exception so the user can see all
 *                 # the various error messages.
 *                 raise OSError('Multiple exceptions: {}'.format(             # <<<<<<<<<<<<<<
 *                     ', '.join(str(exc) for exc in exceptions)))
 *         else:
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Multiple_exceptions, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);

      /* "uvloop/loop.pyx":1218
 *                 # the various error messages.
 *                 raise OSError('Multiple exceptions: {}'.format(
 *                     ', '.join(str(exc) for exc in exceptions)))             # <<<<<<<<<<<<<<
 *         else:
 *             if sock is None:
 */
      __pyx_t_1 = __pyx_pf_6uvloop_4loop_4Loop_17create_connection_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__42, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1217, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_29 = PyTuple_New(1+1); if (unlikely(!__pyx_t_29)) __PYX_ERR(2, 1217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_29);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_29, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_29, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_29, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/loop.pyx":1217
 *                 # Raise a combined exception so the user can see all
 *                 # the various error messages.
 *                 raise OSError('Multiple exceptions: {}'.format(             # <<<<<<<<<<<<<<
 *                     ', '.join(str(exc) for exc in exceptions)))
 *         else:
 */
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1217, __pyx_L1_error)
    }
    __pyx_L22_break:;

    /* "uvloop/loop.pyx":1138
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 *         if host is not None or port is not None:             # <<<<<<<<<<<<<<
 *             f1 = self._getaddrinfo(host, port, family,
 *                                    uv.SOCK_STREAM, proto, flags,
 */
    goto __pyx_L8;
  }

  /* "uvloop/loop.pyx":1220
 *                     ', '.join(str(exc) for exc in exceptions)))
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'host and port was not specified and no sock specified')
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_sock == Py_None);
    __pyx_t_8 = (__pyx_t_4 != 0);
    if (__pyx_t_8) {

      /* "uvloop/loop.pyx":1221
 *         else:
 *             if sock is None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'host and port was not specified and no sock specified')
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1221, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1221, __pyx_L1_error)

      /* "uvloop/loop.pyx":1220
 *                     ', '.join(str(exc) for exc in exceptions)))
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'host and port was not specified and no sock specified')
 */
    }

    /* "uvloop/loop.pyx":1224
 *                     'host and port was not specified and no sock specified')
 * 
 *             waiter = self._new_future()             # <<<<<<<<<<<<<<
 *             protocol = protocol_factory()
 *             tr = TCPTransport.new(self, protocol, None, waiter)
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_waiter = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1225
 * 
 *             waiter = self._new_future()
 *             protocol = protocol_factory()             # <<<<<<<<<<<<<<
 *             tr = TCPTransport.new(self, protocol, None, waiter)
 *             try:
 */
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
    __pyx_t_7 = __pyx_cur_scope->__pyx_v_protocol_factory; __pyx_t_29 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_29 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_29)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_29);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (__pyx_t_29) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_29); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1225, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1225, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_protocol);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_protocol, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1226
 *             waiter = self._new_future()
 *             protocol = protocol_factory()
 *             tr = TCPTransport.new(self, protocol, None, waiter)             # <<<<<<<<<<<<<<
 *             try:
 *                 # libuv will make socket non-blocking
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6uvloop_4loop_12TCPTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1227
 *             protocol = protocol_factory()
 *             tr = TCPTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_15);
      /*try:*/ {

        /* "uvloop/loop.pyx":1229
 *             try:
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())             # <<<<<<<<<<<<<<
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)
 */
        __pyx_t_29 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_29)) __PYX_ERR(2, 1229, __pyx_L71_error)
        __Pyx_GOTREF(__pyx_t_29);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_29))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_29);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_29);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_29, function);
          }
        }
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_29, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1229, __pyx_L71_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_29); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1229, __pyx_L71_error)
        }
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
        __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
        __pyx_t_29 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_29))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_29);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_29);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_29, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_29, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1229, __pyx_L71_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1229, __pyx_L71_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_29, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1229, __pyx_L71_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
        __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_v_fileno = __pyx_t_2;
        __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1230
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 *                 tr.open(fileno)             # <<<<<<<<<<<<<<
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()
 */
        __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_fileno); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1230, __pyx_L71_error)
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_tr, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1230, __pyx_L71_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1231
 *                 fileno = os_dup(sock.fileno())
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)             # <<<<<<<<<<<<<<
 *                 tr._init_protocol()
 *                 await waiter
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_tr), __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1231, __pyx_L71_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1232
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()             # <<<<<<<<<<<<<<
 *                 await waiter
 *             except:
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1232, __pyx_L71_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1233
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()
 *                 await waiter             # <<<<<<<<<<<<<<
 *             except:
 *                 tr._close()
 */
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_15);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_15;
          __Pyx_XGIVEREF(__pyx_t_16);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_16;
          __Pyx_XGIVEREF(__pyx_t_17);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_17;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 3;
          return __pyx_r;
          __pyx_L79_resume_from_yield:;
          __pyx_t_15 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_15);
          __pyx_t_16 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_16);
          __pyx_t_17 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_17);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1233, __pyx_L71_error)
        } else {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 1233, __pyx_L71_error)
          }
        }

        /* "uvloop/loop.pyx":1227
 *             protocol = protocol_factory()
 *             tr = TCPTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
      }
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      goto __pyx_L78_try_end;
      __pyx_L71_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1234
 *                 tr._init_protocol()
 *                 await waiter
 *             except:             # <<<<<<<<<<<<<<
 *                 tr._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_29, &__pyx_t_3) < 0) __PYX_ERR(2, 1234, __pyx_L73_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_29);
        __Pyx_GOTREF(__pyx_t_3);

        /* "uvloop/loop.pyx":1235
 *                 await waiter
 *             except:
 *                 tr._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1235, __pyx_L73_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "uvloop/loop.pyx":1236
 *             except:
 *                 tr._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *         if ssl:
 */
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_29);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_29, __pyx_t_3);
        __pyx_t_2 = 0; __pyx_t_29 = 0; __pyx_t_3 = 0; 
        __PYX_ERR(2, 1236, __pyx_L73_except_error)
      }
      __pyx_L73_except_error:;

      /* "uvloop/loop.pyx":1227
 *             protocol = protocol_factory()
 *             tr = TCPTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
      goto __pyx_L1_error;
      __pyx_L78_try_end:;
    }
  }
  __pyx_L8:;

  /* "uvloop/loop.pyx":1238
 *                 raise
 * 
 *         if ssl:             # <<<<<<<<<<<<<<
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol
 */
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_ssl); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 1238, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "uvloop/loop.pyx":1239
 * 
 *         if ssl:
 *             await ssl_waiter             # <<<<<<<<<<<<<<
 *             return protocol._app_transport, app_protocol
 *         else:
 */
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 4;
      return __pyx_r;
      __pyx_L83_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1239, __pyx_L1_error)
    } else {
      PyObject* exc_type = PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
        else __PYX_ERR(2, 1239, __pyx_L1_error)
      }
    }

    /* "uvloop/loop.pyx":1240
 *         if ssl:
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol             # <<<<<<<<<<<<<<
 *         else:
 *             return tr, protocol
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_protocol, __pyx_n_s_app_transport); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_29 = PyTuple_New(2); if (unlikely(!__pyx_t_29)) __PYX_ERR(2, 1240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_29);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_29, 0, __pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_app_protocol);
    PyTuple_SET_ITEM(__pyx_t_29, 1, __pyx_cur_scope->__pyx_v_app_protocol);
    __pyx_t_3 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_29);
    __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
    __pyx_t_29 = 0;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1238
 *                 raise
 * 
 *         if ssl:             # <<<<<<<<<<<<<<
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol
 */
  }

  /* "uvloop/loop.pyx":1242
 *             return protocol._app_transport, app_protocol
 *         else:
 *             return tr, protocol             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = PyTuple_New(2); if (unlikely(!__pyx_t_29)) __PYX_ERR(2, 1242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_29);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    PyTuple_SET_ITEM(__pyx_t_29, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol);
    PyTuple_SET_ITEM(__pyx_t_29, 1, __pyx_cur_scope->__pyx_v_protocol);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_29);
    __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
    __pyx_t_29 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_29);
  __Pyx_AddTraceback("create_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_53generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1245
 * 
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,             # <<<<<<<<<<<<<<
 *                                  *, backlog=100, sock=None, ssl=None):
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_52create_unix_server(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_52create_unix_server(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_backlog = 0;
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_ssl = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_unix_server (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_path,&__pyx_n_s_backlog,&__pyx_n_s_sock,&__pyx_n_s_ssl,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = ((PyObject*)Py_None);
    values[2] = ((PyObject *)__pyx_int_100);

    /* "uvloop/loop.pyx":1246
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,
 *                                  *, backlog=100, sock=None, ssl=None):             # <<<<<<<<<<<<<<
 * 
 *         cdef:
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (kw_args > 0 && likely(kw_args <= 3)) {
        Py_ssize_t index;
        for (index = 2; index < 5 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_unix_server") < 0)) __PYX_ERR(2, 1245, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_path = ((PyObject*)values[1]);
    __pyx_v_backlog = values[2];
    __pyx_v_sock = values[3];
    __pyx_v_ssl = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("create_unix_server", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1245, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyUnicode_Type), 1, "path", 1))) __PYX_ERR(2, 1245, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_51create_unix_server(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_path, __pyx_v_backlog, __pyx_v_sock, __pyx_v_ssl);

  /* "uvloop/loop.pyx":1245
 * 
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,             # <<<<<<<<<<<<<<
 *                                  *, backlog=100, sock=None, ssl=None):
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_51create_unix_server(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_path, PyObject *__pyx_v_backlog, PyObject *__pyx_v_sock, PyObject *__pyx_v_ssl) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_unix_server", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_9_create_unix_server, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_path = __pyx_v_path;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_path);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_path);
  __pyx_cur_scope->__pyx_v_backlog = __pyx_v_backlog;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_backlog);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_backlog);
  __pyx_cur_scope->__pyx_v_sock = __pyx_v_sock;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
  __pyx_cur_scope->__pyx_v_ssl = __pyx_v_ssl;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_53generator3, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_unix_server, __pyx_n_s_Loop_create_unix_server); if (unlikely(!gen)) __PYX_ERR(2, 1245, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_53generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1245, __pyx_L1_error)

  /* "uvloop/loop.pyx":1250
 *         cdef:
 *             UnixServer pipe
 *             Server server = Server(self)             # <<<<<<<<<<<<<<
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_Server), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1252
 *             Server server = Server(self)
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 */
  __pyx_t_4 = (__pyx_cur_scope->__pyx_v_ssl != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = __pyx_v_6uvloop_4loop_ssl_SSLContext;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_ssl, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1253
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 *             raise TypeError('ssl argument must be an SSLContext or None')             # <<<<<<<<<<<<<<
 * 
 *         pipe = UnixServer.new(self, protocol_factory, server, ssl)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1253, __pyx_L1_error)

    /* "uvloop/loop.pyx":1252
 *             Server server = Server(self)
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 */
  }

  /* "uvloop/loop.pyx":1255
 *             raise TypeError('ssl argument must be an SSLContext or None')
 * 
 *         pipe = UnixServer.new(self, protocol_factory, server, ssl)             # <<<<<<<<<<<<<<
 * 
 *         if path is not None:
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6uvloop_4loop_10UnixServer_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol_factory, __pyx_cur_scope->__pyx_v_server, __pyx_cur_scope->__pyx_v_ssl)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_pipe = ((struct __pyx_obj_6uvloop_4loop_UnixServer *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1257
 *         pipe = UnixServer.new(self, protocol_factory, server, ssl)
 * 
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             if sock is not None:
 *                 raise ValueError(
 */
  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_path != ((PyObject*)Py_None));
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":1258
 * 
 *         if path is not None:
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path and sock can not be specified at the same time')
 */
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_sock != Py_None);
    __pyx_t_3 = (__pyx_t_4 != 0);
    if (__pyx_t_3) {

      /* "uvloop/loop.pyx":1259
 *         if path is not None:
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path and sock can not be specified at the same time')
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1259, __pyx_L1_error)

      /* "uvloop/loop.pyx":1258
 * 
 *         if path is not None:
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path and sock can not be specified at the same time')
 */
    }

    /* "uvloop/loop.pyx":1262
 *                     'path and sock can not be specified at the same time')
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 pipe.bind(path)
 *             except:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "uvloop/loop.pyx":1263
 * 
 *             try:
 *                 pipe.bind(path)             # <<<<<<<<<<<<<<
 *             except:
 *                 pipe._close()
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->bind(__pyx_cur_scope->__pyx_v_pipe, __pyx_cur_scope->__pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1263, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1262
 *                     'path and sock can not be specified at the same time')
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 pipe.bind(path)
 *             except:
 */
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L16_try_end;
      __pyx_L9_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1264
 *             try:
 *                 pipe.bind(path)
 *             except:             # <<<<<<<<<<<<<<
 *                 pipe._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(2, 1264, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_9);

        /* "uvloop/loop.pyx":1265
 *                 pipe.bind(path)
 *             except:
 *                 pipe._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_10 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_pipe)); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1265, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "uvloop/loop.pyx":1266
 *             except:
 *                 pipe._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *         else:
 */
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_9);
        __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0; 
        __PYX_ERR(2, 1266, __pyx_L11_except_error)
      }
      __pyx_L11_except_error:;

      /* "uvloop/loop.pyx":1262
 *                     'path and sock can not be specified at the same time')
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 pipe.bind(path)
 *             except:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L1_error;
      __pyx_L16_try_end:;
    }

    /* "uvloop/loop.pyx":1257
 *         pipe = UnixServer.new(self, protocol_factory, server, ssl)
 * 
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             if sock is not None:
 *                 raise ValueError(
 */
    goto __pyx_L7;
  }

  /* "uvloop/loop.pyx":1269
 * 
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path was not specified, and no sock specified')
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_cur_scope->__pyx_v_sock == Py_None);
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1270
 *         else:
 *             if sock is None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path was not specified, and no sock specified')
 * 
 */
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(2, 1270, __pyx_L1_error)

      /* "uvloop/loop.pyx":1269
 * 
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path was not specified, and no sock specified')
 */
    }

    /* "uvloop/loop.pyx":1273
 *                     'path was not specified, and no sock specified')
 * 
 *             if sock.family != uv.AF_UNIX:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 */
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_family); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyInt_From_int(AF_UNIX); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_9, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1275
 *             if sock.family != uv.AF_UNIX:
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))             # <<<<<<<<<<<<<<
 * 
 *             try:
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_A_UNIX_Domain_Socket_was_expecte, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_9) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1275, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1275, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
        PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_cur_scope->__pyx_v_sock);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1275, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1274
 * 
 *             if sock.family != uv.AF_UNIX:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 */
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 1274, __pyx_L1_error)

      /* "uvloop/loop.pyx":1273
 *                     'path was not specified, and no sock specified')
 * 
 *             if sock.family != uv.AF_UNIX:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 */
    }

    /* "uvloop/loop.pyx":1277
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 fileno = os_dup(sock.fileno())
 *                 pipe.open(sock.fileno())
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "uvloop/loop.pyx":1278
 * 
 *             try:
 *                 fileno = os_dup(sock.fileno())             # <<<<<<<<<<<<<<
 *                 pipe.open(sock.fileno())
 *             except:
 */
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1278, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (__pyx_t_9) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L21_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L21_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
        __pyx_t_10 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (!__pyx_t_9) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1278, __pyx_L21_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1278, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1278, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_v_fileno = __pyx_t_2;
        __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1279
 *             try:
 *                 fileno = os_dup(sock.fileno())
 *                 pipe.open(sock.fileno())             # <<<<<<<<<<<<<<
 *             except:
 *                 pipe._close()
 */
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1279, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (__pyx_t_11) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1279, __pyx_L21_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1279, __pyx_L21_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1279, __pyx_L21_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_pipe, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1279, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1277
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 fileno = os_dup(sock.fileno())
 *                 pipe.open(sock.fileno())
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L28_try_end;
      __pyx_L21_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1280
 *                 fileno = os_dup(sock.fileno())
 *                 pipe.open(sock.fileno())
 *             except:             # <<<<<<<<<<<<<<
 *                 pipe._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(2, 1280, __pyx_L23_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GOTREF(__pyx_t_11);

        /* "uvloop/loop.pyx":1281
 *                 pipe.open(sock.fileno())
 *             except:
 *                 pipe._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_pipe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1281, __pyx_L23_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1282
 *             except:
 *                 pipe._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *             pipe._attach_fileobj(sock)
 */
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_10, __pyx_t_11);
        __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; 
        __PYX_ERR(2, 1282, __pyx_L23_except_error)
      }
      __pyx_L23_except_error:;

      /* "uvloop/loop.pyx":1277
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 *             try:             # <<<<<<<<<<<<<<
 *                 fileno = os_dup(sock.fileno())
 *                 pipe.open(sock.fileno())
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      goto __pyx_L1_error;
      __pyx_L28_try_end:;
    }

    /* "uvloop/loop.pyx":1284
 *                 raise
 * 
 *             pipe._attach_fileobj(sock)             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_pipe), __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_L7:;

  /* "uvloop/loop.pyx":1286
 *             pipe._attach_fileobj(sock)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             pipe.listen(backlog)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "uvloop/loop.pyx":1287
 * 
 *         try:
 *             pipe.listen(backlog)             # <<<<<<<<<<<<<<
 *         except:
 *             pipe._close()
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_backlog); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1287, __pyx_L31_error)
      __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.listen(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_pipe), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1287, __pyx_L31_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      /* "uvloop/loop.pyx":1286
 *             pipe._attach_fileobj(sock)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             pipe.listen(backlog)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L38_try_end;
    __pyx_L31_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "uvloop/loop.pyx":1288
 *         try:
 *             pipe.listen(backlog)
 *         except:             # <<<<<<<<<<<<<<
 *             pipe._close()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(2, 1288, __pyx_L33_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GOTREF(__pyx_t_2);

      /* "uvloop/loop.pyx":1289
 *             pipe.listen(backlog)
 *         except:
 *             pipe._close()             # <<<<<<<<<<<<<<
 *             raise
 * 
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_cur_scope->__pyx_v_pipe->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_pipe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1289, __pyx_L33_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1290
 *         except:
 *             pipe._close()
 *             raise             # <<<<<<<<<<<<<<
 * 
 *         server._add_server(pipe)
 */
      __Pyx_GIVEREF(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_10, __pyx_t_2);
      __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_2 = 0; 
      __PYX_ERR(2, 1290, __pyx_L33_except_error)
    }
    __pyx_L33_except_error:;

    /* "uvloop/loop.pyx":1286
 *             pipe._attach_fileobj(sock)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             pipe.listen(backlog)
 *         except:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L38_try_end:;
  }

  /* "uvloop/loop.pyx":1292
 *             raise
 * 
 *         server._add_server(pipe)             # <<<<<<<<<<<<<<
 *         return server
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)__pyx_cur_scope->__pyx_v_server->__pyx_vtab)->_add_server(__pyx_cur_scope->__pyx_v_server, ((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_cur_scope->__pyx_v_pipe)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1293
 * 
 *         server._add_server(pipe)
 *         return server             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_server));
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1245
 * 
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,             # <<<<<<<<<<<<<<
 *                                  *, backlog=100, sock=None, ssl=None):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("create_unix_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_56generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1296
 * 
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,             # <<<<<<<<<<<<<<
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_55create_unix_connection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_55create_unix_connection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_ssl = 0;
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_server_hostname = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_unix_connection (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_path,&__pyx_n_s_ssl,&__pyx_n_s_sock,&__pyx_n_s_server_hostname,0};
    PyObject* values[5] = {0,0,0,0,0};

    /* "uvloop/loop.pyx":1297
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,
 *                                      ssl=None, sock=None,             # <<<<<<<<<<<<<<
 *                                      server_hostname=None):
 * 
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1298
 *     async def create_unix_connection(self, protocol_factory, path, *,
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):             # <<<<<<<<<<<<<<
 * 
 *         cdef:
 */
    values[4] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("create_unix_connection", 1, 2, 2, 1); __PYX_ERR(2, 1296, __pyx_L3_error)
        }
      }
      if (kw_args > 0 && likely(kw_args <= 3)) {
        Py_ssize_t index;
        for (index = 2; index < 5 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_unix_connection") < 0)) __PYX_ERR(2, 1296, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_path = values[1];
    __pyx_v_ssl = values[2];
    __pyx_v_sock = values[3];
    __pyx_v_server_hostname = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("create_unix_connection", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1296, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_54create_unix_connection(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_path, __pyx_v_ssl, __pyx_v_sock, __pyx_v_server_hostname);

  /* "uvloop/loop.pyx":1296
 * 
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,             # <<<<<<<<<<<<<<
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_54create_unix_connection(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_path, PyObject *__pyx_v_ssl, PyObject *__pyx_v_sock, PyObject *__pyx_v_server_hostname) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_unix_connection", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_path = __pyx_v_path;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_path);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_path);
  __pyx_cur_scope->__pyx_v_ssl = __pyx_v_ssl;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl);
  __pyx_cur_scope->__pyx_v_sock = __pyx_v_sock;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
  __pyx_cur_scope->__pyx_v_server_hostname = __pyx_v_server_hostname;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_hostname);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_hostname);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_56generator4, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_unix_connection, __pyx_n_s_Loop_create_unix_connection); if (unlikely(!gen)) __PYX_ERR(2, 1296, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_56generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  char *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L18_resume_from_yield;
    case 2: goto __pyx_L31_resume_from_yield;
    case 3: goto __pyx_L35_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1296, __pyx_L1_error)

  /* "uvloop/loop.pyx":1306
 *             object ssl_waiter
 * 
 *         app_protocol = protocol = protocol_factory()             # <<<<<<<<<<<<<<
 *         ssl_waiter = None
 *         if ssl:
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_protocol_factory; __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1306, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1306, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_app_protocol = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_protocol = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1307
 * 
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None             # <<<<<<<<<<<<<<
 *         if ssl:
 *             if server_hostname is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_cur_scope->__pyx_v_ssl_waiter = Py_None;

  /* "uvloop/loop.pyx":1308
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None
 *         if ssl:             # <<<<<<<<<<<<<<
 *             if server_hostname is None:
 *                 raise ValueError('You must set server_hostname '
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_ssl); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1308, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":1309
 *         ssl_waiter = None
 *         if ssl:
 *             if server_hostname is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('You must set server_hostname '
 *                                  'when using ssl without a host')
 */
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_server_hostname == Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "uvloop/loop.pyx":1310
 *         if ssl:
 *             if server_hostname is None:
 *                 raise ValueError('You must set server_hostname '             # <<<<<<<<<<<<<<
 *                                  'when using ssl without a host')
 * 
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1310, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1310, __pyx_L1_error)

      /* "uvloop/loop.pyx":1309
 *         ssl_waiter = None
 *         if ssl:
 *             if server_hostname is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('You must set server_hostname '
 *                                  'when using ssl without a host')
 */
    }

    /* "uvloop/loop.pyx":1313
 *                                  'when using ssl without a host')
 * 
 *             ssl_waiter = self._new_future()             # <<<<<<<<<<<<<<
 *             sslcontext = None if isinstance(ssl, bool) else ssl
 *             protocol = aio_SSLProtocol(
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ssl_waiter, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1314
 * 
 *             ssl_waiter = self._new_future()
 *             sslcontext = None if isinstance(ssl, bool) else ssl             # <<<<<<<<<<<<<<
 *             protocol = aio_SSLProtocol(
 *                 self, app_protocol, sslcontext, ssl_waiter,
 */
    __pyx_t_2 = ((PyObject*)&PyBool_Type);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_ssl, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if ((__pyx_t_5 != 0)) {
      __Pyx_INCREF(Py_None);
      __pyx_t_1 = Py_None;
    } else {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl);
      __pyx_t_1 = __pyx_cur_scope->__pyx_v_ssl;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_sslcontext = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1317
 *             protocol = aio_SSLProtocol(
 *                 self, app_protocol, sslcontext, ssl_waiter,
 *                 False, server_hostname)             # <<<<<<<<<<<<<<
 *         else:
 *             if server_hostname is not None:
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_SSLProtocol);
    __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_SSLProtocol; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_app_protocol);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sslcontext);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sslcontext);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_sslcontext);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ssl_waiter);
    PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, Py_False);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_hostname);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_hostname);
    PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_6, __pyx_cur_scope->__pyx_v_server_hostname);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_protocol);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_protocol, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1308
 *         app_protocol = protocol = protocol_factory()
 *         ssl_waiter = None
 *         if ssl:             # <<<<<<<<<<<<<<
 *             if server_hostname is None:
 *                 raise ValueError('You must set server_hostname '
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":1319
 *                 False, server_hostname)
 *         else:
 *             if server_hostname is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_server_hostname != Py_None);
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1320
 *         else:
 *             if server_hostname is not None:
 *                 raise ValueError('server_hostname is only meaningful with ssl')             # <<<<<<<<<<<<<<
 * 
 *         if path is not None:
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1320, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1320, __pyx_L1_error)

      /* "uvloop/loop.pyx":1319
 *                 False, server_hostname)
 *         else:
 *             if server_hostname is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 */
    }
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":1322
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(path, str):
 *                 path = PyUnicode_EncodeFSDefault(path)
 */
  __pyx_t_4 = (__pyx_cur_scope->__pyx_v_path != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "uvloop/loop.pyx":1323
 * 
 *         if path is not None:
 *             if isinstance(path, str):             # <<<<<<<<<<<<<<
 *                 path = PyUnicode_EncodeFSDefault(path)
 * 
 */
    __pyx_t_5 = PyUnicode_Check(__pyx_cur_scope->__pyx_v_path); 
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1324
 *         if path is not None:
 *             if isinstance(path, str):
 *                 path = PyUnicode_EncodeFSDefault(path)             # <<<<<<<<<<<<<<
 * 
 *             if sock is not None:
 */
      __pyx_t_1 = PyUnicode_EncodeFSDefault(__pyx_cur_scope->__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1324, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_path);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_path, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1323
 * 
 *         if path is not None:
 *             if isinstance(path, str):             # <<<<<<<<<<<<<<
 *                 path = PyUnicode_EncodeFSDefault(path)
 * 
 */
    }

    /* "uvloop/loop.pyx":1326
 *                 path = PyUnicode_EncodeFSDefault(path)
 * 
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path and sock can not be specified at the same time')
 */
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_sock != Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "uvloop/loop.pyx":1327
 * 
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path and sock can not be specified at the same time')
 * 
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1327, __pyx_L1_error)

      /* "uvloop/loop.pyx":1326
 *                 path = PyUnicode_EncodeFSDefault(path)
 * 
 *             if sock is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'path and sock can not be specified at the same time')
 */
    }

    /* "uvloop/loop.pyx":1330
 *                     'path and sock can not be specified at the same time')
 * 
 *             waiter = self._new_future()             # <<<<<<<<<<<<<<
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             tr.connect(path)
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_waiter = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1331
 * 
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)             # <<<<<<<<<<<<<<
 *             tr.connect(path)
 *             try:
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_13UnixTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1332
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             tr.connect(path)             # <<<<<<<<<<<<<<
 *             try:
 *                 await waiter
 */
    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_path); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(2, 1332, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->connect(__pyx_cur_scope->__pyx_v_tr, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1333
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             tr.connect(path)
 *             try:             # <<<<<<<<<<<<<<
 *                 await waiter
 *             except:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      /*try:*/ {

        /* "uvloop/loop.pyx":1334
 *             tr.connect(path)
 *             try:
 *                 await waiter             # <<<<<<<<<<<<<<
 *             except:
 *                 tr._close()
 */
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_9);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_9;
          __Pyx_XGIVEREF(__pyx_t_10);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_10;
          __Pyx_XGIVEREF(__pyx_t_11);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_11;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L18_resume_from_yield:;
          __pyx_t_9 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_10 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_10);
          __pyx_t_11 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_11);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1334, __pyx_L10_error)
        } else {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 1334, __pyx_L10_error)
          }
        }

        /* "uvloop/loop.pyx":1333
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             tr.connect(path)
 *             try:             # <<<<<<<<<<<<<<
 *                 await waiter
 *             except:
 */
      }
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L17_try_end;
      __pyx_L10_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1335
 *             try:
 *                 await waiter
 *             except:             # <<<<<<<<<<<<<<
 *                 tr._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(2, 1335, __pyx_L12_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_7);

        /* "uvloop/loop.pyx":1336
 *                 await waiter
 *             except:
 *                 tr._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1336, __pyx_L12_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "uvloop/loop.pyx":1337
 *             except:
 *                 tr._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *         else:
 */
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_7);
        __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; 
        __PYX_ERR(2, 1337, __pyx_L12_except_error)
      }
      __pyx_L12_except_error:;

      /* "uvloop/loop.pyx":1333
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             tr.connect(path)
 *             try:             # <<<<<<<<<<<<<<
 *                 await waiter
 *             except:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      goto __pyx_L1_error;
      __pyx_L17_try_end:;
    }

    /* "uvloop/loop.pyx":1322
 *                 raise ValueError('server_hostname is only meaningful with ssl')
 * 
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(path, str):
 *                 path = PyUnicode_EncodeFSDefault(path)
 */
    goto __pyx_L7;
  }

  /* "uvloop/loop.pyx":1340
 * 
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('no path and sock were specified')
 * 
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_sock == Py_None);
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1341
 *         else:
 *             if sock is None:
 *                 raise ValueError('no path and sock were specified')             # <<<<<<<<<<<<<<
 * 
 *             if sock.family != uv.AF_UNIX:
 */
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(2, 1341, __pyx_L1_error)

      /* "uvloop/loop.pyx":1340
 * 
 *         else:
 *             if sock is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError('no path and sock were specified')
 * 
 */
    }

    /* "uvloop/loop.pyx":1343
 *                 raise ValueError('no path and sock were specified')
 * 
 *             if sock.family != uv.AF_UNIX:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_family); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyInt_From_int(AF_UNIX); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1345
 *             if sock.family != uv.AF_UNIX:
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))             # <<<<<<<<<<<<<<
 * 
 *             waiter = self._new_future()
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_A_UNIX_Domain_Socket_was_expecte, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_cur_scope->__pyx_v_sock);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1344
 * 
 *             if sock.family != uv.AF_UNIX:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 */
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1344, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1344, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 1344, __pyx_L1_error)

      /* "uvloop/loop.pyx":1343
 *                 raise ValueError('no path and sock were specified')
 * 
 *             if sock.family != uv.AF_UNIX:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 */
    }

    /* "uvloop/loop.pyx":1347
 *                     'A UNIX Domain Socket was expected, got {!r}'.format(sock))
 * 
 *             waiter = self._new_future()             # <<<<<<<<<<<<<<
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             try:
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_waiter = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1348
 * 
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)             # <<<<<<<<<<<<<<
 *             try:
 *                 # libuv will make socket non-blocking
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_13UnixTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1349
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_9);
      /*try:*/ {

        /* "uvloop/loop.pyx":1351
 *             try:
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())             # <<<<<<<<<<<<<<
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1351, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1351, __pyx_L23_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1351, __pyx_L23_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
        __pyx_t_3 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1351, __pyx_L23_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 1351, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_2);
          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_2);
          __pyx_t_2 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1351, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_v_fileno = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1352
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 *                 tr.open(fileno)             # <<<<<<<<<<<<<<
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()
 */
        __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_fileno); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1352, __pyx_L23_error)
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_tr, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1352, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1353
 *                 fileno = os_dup(sock.fileno())
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)             # <<<<<<<<<<<<<<
 *                 tr._init_protocol()
 *                 await waiter
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_tr), __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1353, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1354
 *                 tr.open(fileno)
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()             # <<<<<<<<<<<<<<
 *                 await waiter
 *             except:
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1354, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/loop.pyx":1355
 *                 tr._attach_fileobj(sock)
 *                 tr._init_protocol()
 *                 await waiter             # <<<<<<<<<<<<<<
 *             except:
 *                 tr._close()
 */
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_9);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_9;
          __Pyx_XGIVEREF(__pyx_t_10);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_10;
          __Pyx_XGIVEREF(__pyx_t_11);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_11;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L31_resume_from_yield:;
          __pyx_t_9 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_10 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_10);
          __pyx_t_11 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_11);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1355, __pyx_L23_error)
        } else {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 1355, __pyx_L23_error)
          }
        }

        /* "uvloop/loop.pyx":1349
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
      }
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L30_try_end;
      __pyx_L23_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1356
 *                 tr._init_protocol()
 *                 await waiter
 *             except:             # <<<<<<<<<<<<<<
 *                 tr._close()
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("uvloop.loop.Loop.create_unix_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_12) < 0) __PYX_ERR(2, 1356, __pyx_L25_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_12);

        /* "uvloop/loop.pyx":1357
 *                 await waiter
 *             except:
 *                 tr._close()             # <<<<<<<<<<<<<<
 *                 raise
 * 
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_cur_scope->__pyx_v_tr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_cur_scope->__pyx_v_tr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1357, __pyx_L25_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/loop.pyx":1358
 *             except:
 *                 tr._close()
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *         if ssl:
 */
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_12);
        __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_12 = 0; 
        __PYX_ERR(2, 1358, __pyx_L25_except_error)
      }
      __pyx_L25_except_error:;

      /* "uvloop/loop.pyx":1349
 *             waiter = self._new_future()
 *             tr = UnixTransport.new(self, protocol, None, waiter)
 *             try:             # <<<<<<<<<<<<<<
 *                 # libuv will make socket non-blocking
 *                 fileno = os_dup(sock.fileno())
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
      goto __pyx_L1_error;
      __pyx_L30_try_end:;
    }
  }
  __pyx_L7:;

  /* "uvloop/loop.pyx":1360
 *                 raise
 * 
 *         if ssl:             # <<<<<<<<<<<<<<
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_ssl); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1360, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":1361
 * 
 *         if ssl:
 *             await ssl_waiter             # <<<<<<<<<<<<<<
 *             return protocol._app_transport, app_protocol
 *         else:
 */
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_ssl_waiter);
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 3;
      return __pyx_r;
      __pyx_L35_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1361, __pyx_L1_error)
    } else {
      PyObject* exc_type = PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
        else __PYX_ERR(2, 1361, __pyx_L1_error)
      }
    }

    /* "uvloop/loop.pyx":1362
 *         if ssl:
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol             # <<<<<<<<<<<<<<
 *         else:
 *             return tr, protocol
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_protocol, __pyx_n_s_app_transport); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_12);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_app_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_app_protocol);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_app_protocol);
    __pyx_t_12 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1360
 *                 raise
 * 
 *         if ssl:             # <<<<<<<<<<<<<<
 *             await ssl_waiter
 *             return protocol._app_transport, app_protocol
 */
  }

  /* "uvloop/loop.pyx":1364
 *             return protocol._app_transport, app_protocol
 *         else:
 *             return tr, protocol             # <<<<<<<<<<<<<<
 * 
 *     def default_exception_handler(self, context):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_tr));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_protocol);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/loop.pyx":1296
 * 
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,             # <<<<<<<<<<<<<<
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("create_unix_connection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1366
 *             return tr, protocol
 * 
 *     def default_exception_handler(self, context):             # <<<<<<<<<<<<<<
 *         message = context.get('message')
 *         if not message:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_58default_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_context); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_58default_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_context) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("default_exception_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_57default_exception_handler(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_context));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_57default_exception_handler(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_context) {
  PyObject *__pyx_v_message = NULL;
  PyObject *__pyx_v_exception = NULL;
  PyObject *__pyx_v_exc_info = NULL;
  PyObject *__pyx_v_log_lines = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("default_exception_handler", 0);

  /* "uvloop/loop.pyx":1367
 * 
 *     def default_exception_handler(self, context):
 *         message = context.get('message')             # <<<<<<<<<<<<<<
 *         if not message:
 *             message = 'Unhandled exception in event loop'
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_context, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_message = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1368
 *     def default_exception_handler(self, context):
 *         message = context.get('message')
 *         if not message:             # <<<<<<<<<<<<<<
 *             message = 'Unhandled exception in event loop'
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_message); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 1368, __pyx_L1_error)
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (__pyx_t_4) {

    /* "uvloop/loop.pyx":1369
 *         message = context.get('message')
 *         if not message:
 *             message = 'Unhandled exception in event loop'             # <<<<<<<<<<<<<<
 * 
 *         exception = context.get('exception')
 */
    __Pyx_INCREF(__pyx_kp_u_Unhandled_exception_in_event_loo);
    __Pyx_DECREF_SET(__pyx_v_message, __pyx_kp_u_Unhandled_exception_in_event_loo);

    /* "uvloop/loop.pyx":1368
 *     def default_exception_handler(self, context):
 *         message = context.get('message')
 *         if not message:             # <<<<<<<<<<<<<<
 *             message = 'Unhandled exception in event loop'
 * 
 */
  }

  /* "uvloop/loop.pyx":1371
 *             message = 'Unhandled exception in event loop'
 * 
 *         exception = context.get('exception')             # <<<<<<<<<<<<<<
 *         if exception is not None:
 *             exc_info = (type(exception), exception, exception.__traceback__)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_context, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exception = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1372
 * 
 *         exception = context.get('exception')
 *         if exception is not None:             # <<<<<<<<<<<<<<
 *             exc_info = (type(exception), exception, exception.__traceback__)
 *         else:
 */
  __pyx_t_4 = (__pyx_v_exception != Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1373
 *         exception = context.get('exception')
 *         if exception is not None:
 *             exc_info = (type(exception), exception, exception.__traceback__)             # <<<<<<<<<<<<<<
 *         else:
 *             exc_info = False
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_exception, __pyx_n_s_traceback); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_exception)));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_exception)));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(__pyx_v_exception)));
    __Pyx_INCREF(__pyx_v_exception);
    __Pyx_GIVEREF(__pyx_v_exception);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_exception);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_v_exc_info = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1372
 * 
 *         exception = context.get('exception')
 *         if exception is not None:             # <<<<<<<<<<<<<<
 *             exc_info = (type(exception), exception, exception.__traceback__)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":1375
 *             exc_info = (type(exception), exception, exception.__traceback__)
 *         else:
 *             exc_info = False             # <<<<<<<<<<<<<<
 * 
 *         log_lines = [message]
 */
  /*else*/ {
    __Pyx_INCREF(Py_False);
    __pyx_v_exc_info = Py_False;
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":1377
 *             exc_info = False
 * 
 *         log_lines = [message]             # <<<<<<<<<<<<<<
 *         for key in sorted(context):
 *             if key in {'message', 'exception'}:
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_message);
  __Pyx_GIVEREF(__pyx_v_message);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_message);
  __pyx_v_log_lines = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1378
 * 
 *         log_lines = [message]
 *         for key in sorted(context):             # <<<<<<<<<<<<<<
 *             if key in {'message', 'exception'}:
 *                 continue
 */
  __pyx_t_1 = PySequence_List(__pyx_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_5 = PyList_Sort(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1378, __pyx_L1_error)
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1378, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 1378, __pyx_L1_error)
    #else
    __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1379
 *         log_lines = [message]
 *         for key in sorted(context):
 *             if key in {'message', 'exception'}:             # <<<<<<<<<<<<<<
 *                 continue
 *             value = context[key]
 */
    __Pyx_INCREF(__pyx_v_key);
    __pyx_t_2 = __pyx_v_key;
    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_message, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1379, __pyx_L1_error)
    if (!__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_exception, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 1379, __pyx_L1_error)
    __pyx_t_3 = __pyx_t_4;
    __pyx_L8_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {

      /* "uvloop/loop.pyx":1380
 *         for key in sorted(context):
 *             if key in {'message', 'exception'}:
 *                 continue             # <<<<<<<<<<<<<<
 *             value = context[key]
 *             value = repr(value)
 */
      goto __pyx_L5_continue;

      /* "uvloop/loop.pyx":1379
 *         log_lines = [message]
 *         for key in sorted(context):
 *             if key in {'message', 'exception'}:             # <<<<<<<<<<<<<<
 *                 continue
 *             value = context[key]
 */
    }

    /* "uvloop/loop.pyx":1381
 *             if key in {'message', 'exception'}:
 *                 continue
 *             value = context[key]             # <<<<<<<<<<<<<<
 *             value = repr(value)
 *             log_lines.append('{}: {}'.format(key, value))
 */
    __pyx_t_2 = PyObject_GetItem(__pyx_v_context, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1382
 *                 continue
 *             value = context[key]
 *             value = repr(value)             # <<<<<<<<<<<<<<
 *             log_lines.append('{}: {}'.format(key, value))
 * 
 */
    __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1383
 *             value = context[key]
 *             value = repr(value)
 *             log_lines.append('{}: {}'.format(key, value))             # <<<<<<<<<<<<<<
 * 
 *         aio_logger.error('\n'.join(log_lines), exc_info=exc_info)
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__53, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_INCREF(__pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_key);
    __Pyx_INCREF(__pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_value);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_log_lines, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(2, 1383, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1378
 * 
 *         log_lines = [message]
 *         for key in sorted(context):             # <<<<<<<<<<<<<<
 *             if key in {'message', 'exception'}:
 *                 continue
 */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1385
 *             log_lines.append('{}: {}'.format(key, value))
 * 
 *         aio_logger.error('\n'.join(log_lines), exc_info=exc_info)             # <<<<<<<<<<<<<<
 * 
 *     def set_exception_handler(self, handler):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__54, __pyx_v_log_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_exc_info, __pyx_v_exc_info) < 0) __PYX_ERR(2, 1385, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "uvloop/loop.pyx":1366
 *             return tr, protocol
 * 
 *     def default_exception_handler(self, context):             # <<<<<<<<<<<<<<
 *         message = context.get('message')
 *         if not message:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.Loop.default_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_message);
  __Pyx_XDECREF(__pyx_v_exception);
  __Pyx_XDECREF(__pyx_v_exc_info);
  __Pyx_XDECREF(__pyx_v_log_lines);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1387
 *         aio_logger.error('\n'.join(log_lines), exc_info=exc_info)
 * 
 *     def set_exception_handler(self, handler):             # <<<<<<<<<<<<<<
 *         if handler is not None and not callable(handler):
 *             raise TypeError('A callable object or None is expected, '
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_60set_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_handler); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_60set_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_handler) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_exception_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_59set_exception_handler(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_handler));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_59set_exception_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_handler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("set_exception_handler", 0);

  /* "uvloop/loop.pyx":1388
 * 
 *     def set_exception_handler(self, handler):
 *         if handler is not None and not callable(handler):             # <<<<<<<<<<<<<<
 *             raise TypeError('A callable object or None is expected, '
 *                             'got {!r}'.format(handler))
 */
  __pyx_t_2 = (__pyx_v_handler != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyCallable_Check(__pyx_v_handler); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(2, 1388, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1390
 *         if handler is not None and not callable(handler):
 *             raise TypeError('A callable object or None is expected, '
 *                             'got {!r}'.format(handler))             # <<<<<<<<<<<<<<
 *         self._exception_handler = handler
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_A_callable_object_or_None_is_exp, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_handler); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_handler);
      __Pyx_GIVEREF(__pyx_v_handler);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_handler);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/loop.pyx":1389
 *     def set_exception_handler(self, handler):
 *         if handler is not None and not callable(handler):
 *             raise TypeError('A callable object or None is expected, '             # <<<<<<<<<<<<<<
 *                             'got {!r}'.format(handler))
 *         self._exception_handler = handler
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 1389, __pyx_L1_error)

    /* "uvloop/loop.pyx":1388
 * 
 *     def set_exception_handler(self, handler):
 *         if handler is not None and not callable(handler):             # <<<<<<<<<<<<<<
 *             raise TypeError('A callable object or None is expected, '
 *                             'got {!r}'.format(handler))
 */
  }

  /* "uvloop/loop.pyx":1391
 *             raise TypeError('A callable object or None is expected, '
 *                             'got {!r}'.format(handler))
 *         self._exception_handler = handler             # <<<<<<<<<<<<<<
 * 
 *     def call_exception_handler(self, context):
 */
  __Pyx_INCREF(__pyx_v_handler);
  __Pyx_GIVEREF(__pyx_v_handler);
  __Pyx_GOTREF(__pyx_v_self->_exception_handler);
  __Pyx_DECREF(__pyx_v_self->_exception_handler);
  __pyx_v_self->_exception_handler = __pyx_v_handler;

  /* "uvloop/loop.pyx":1387
 *         aio_logger.error('\n'.join(log_lines), exc_info=exc_info)
 * 
 *     def set_exception_handler(self, handler):             # <<<<<<<<<<<<<<
 *         if handler is not None and not callable(handler):
 *             raise TypeError('A callable object or None is expected, '
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.Loop.set_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1393
 *         self._exception_handler = handler
 * 
 *     def call_exception_handler(self, context):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             self._debug_exception_handler_cnt += 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_62call_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_context); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_62call_exception_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_context) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call_exception_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_61call_exception_handler(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_context));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_61call_exception_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_context) {
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_t_20;
  char const *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  __Pyx_RefNannySetupContext("call_exception_handler", 0);

  /* "uvloop/loop.pyx":1397
 *             self._debug_exception_handler_cnt += 1
 * 
 *         if self._exception_handler is None:             # <<<<<<<<<<<<<<
 *             try:
 *                 self.default_exception_handler(context)
 */
  __pyx_t_1 = (__pyx_v_self->_exception_handler == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1398
 * 
 *         if self._exception_handler is None:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.default_exception_handler(context)
 *             except Exception:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/loop.pyx":1399
 *         if self._exception_handler is None:
 *             try:
 *                 self.default_exception_handler(context)             # <<<<<<<<<<<<<<
 *             except Exception:
 *                 # Second protection layer for unexpected errors
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_default_exception_handler); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1399, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_context); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1399, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1399, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_context);
          __Pyx_GIVEREF(__pyx_v_context);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_context);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1399, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":1398
 * 
 *         if self._exception_handler is None:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.default_exception_handler(context)
 *             except Exception:
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L11_try_end;
      __pyx_L4_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":1400
 *             try:
 *                 self.default_exception_handler(context)
 *             except Exception:             # <<<<<<<<<<<<<<
 *                 # Second protection layer for unexpected errors
 *                 # in the default implementation, as well as for subclassed
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.Loop.call_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(2, 1400, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_9);

        /* "uvloop/loop.pyx":1404
 *                 # in the default implementation, as well as for subclassed
 *                 # event loops with overloaded "default_exception_handler".
 *                 aio_logger.error('Exception in default exception handler',             # <<<<<<<<<<<<<<
 *                                  exc_info=True)
 *         else:
 */
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1404, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_8);

        /* "uvloop/loop.pyx":1405
 *                 # event loops with overloaded "default_exception_handler".
 *                 aio_logger.error('Exception in default exception handler',
 *                                  exc_info=True)             # <<<<<<<<<<<<<<
 *         else:
 *             try:
 */
        __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1405, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_exc_info, Py_True) < 0) __PYX_ERR(2, 1405, __pyx_L6_except_error)

        /* "uvloop/loop.pyx":1404
 *                 # in the default implementation, as well as for subclassed
 *                 # event loops with overloaded "default_exception_handler".
 *                 aio_logger.error('Exception in default exception handler',             # <<<<<<<<<<<<<<
 *                                  exc_info=True)
 *         else:
 */
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__55, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 1404, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;

      /* "uvloop/loop.pyx":1398
 * 
 *         if self._exception_handler is None:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.default_exception_handler(context)
 *             except Exception:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L11_try_end:;
    }

    /* "uvloop/loop.pyx":1397
 *             self._debug_exception_handler_cnt += 1
 * 
 *         if self._exception_handler is None:             # <<<<<<<<<<<<<<
 *             try:
 *                 self.default_exception_handler(context)
 */
    goto __pyx_L3;
  }

  /* "uvloop/loop.pyx":1407
 *                                  exc_info=True)
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 self._exception_handler(self, context)
 *             except Exception as exc:
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      /*try:*/ {

        /* "uvloop/loop.pyx":1408
 *         else:
 *             try:
 *                 self._exception_handler(self, context)             # <<<<<<<<<<<<<<
 *             except Exception as exc:
 *                 # Exception in the user set custom exception handler.
 */
        __Pyx_INCREF(__pyx_v_self->_exception_handler);
        __pyx_t_7 = __pyx_v_self->_exception_handler; __pyx_t_6 = NULL;
        __pyx_t_13 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_13 = 1;
          }
        }
        __pyx_t_12 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 1408, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_13, ((PyObject *)__pyx_v_self));
        __Pyx_INCREF(__pyx_v_context);
        __Pyx_GIVEREF(__pyx_v_context);
        PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_13, __pyx_v_context);
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1408, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "uvloop/loop.pyx":1407
 *                                  exc_info=True)
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 self._exception_handler(self, context)
 *             except Exception as exc:
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L21_try_end;
      __pyx_L14_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "uvloop/loop.pyx":1409
 *             try:
 *                 self._exception_handler(self, context)
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 # Exception in the user set custom exception handler.
 *                 try:
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.Loop.call_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_7, &__pyx_t_12) < 0) __PYX_ERR(2, 1409, __pyx_L16_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_exc = __pyx_t_7;
        /*try:*/ {

          /* "uvloop/loop.pyx":1411
 *             except Exception as exc:
 *                 # Exception in the user set custom exception handler.
 *                 try:             # <<<<<<<<<<<<<<
 *                     # Let's try default handler.
 *                     self.default_exception_handler({
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            /*try:*/ {

              /* "uvloop/loop.pyx":1413
 *                 try:
 *                     # Let's try default handler.
 *                     self.default_exception_handler({             # <<<<<<<<<<<<<<
 *                         'message': 'Unhandled error in exception handler',
 *                         'exception': exc,
 */
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_default_exception_handler); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1413, __pyx_L29_error)
              __Pyx_GOTREF(__pyx_t_11);

              /* "uvloop/loop.pyx":1414
 *                     # Let's try default handler.
 *                     self.default_exception_handler({
 *                         'message': 'Unhandled error in exception handler',             # <<<<<<<<<<<<<<
 *                         'exception': exc,
 *                         'context': context,
 */
              __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1414, __pyx_L29_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_message, __pyx_kp_u_Unhandled_error_in_exception_han) < 0) __PYX_ERR(2, 1414, __pyx_L29_error)

              /* "uvloop/loop.pyx":1415
 *                     self.default_exception_handler({
 *                         'message': 'Unhandled error in exception handler',
 *                         'exception': exc,             # <<<<<<<<<<<<<<
 *                         'context': context,
 *                     })
 */
              if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(2, 1414, __pyx_L29_error)

              /* "uvloop/loop.pyx":1416
 *                         'message': 'Unhandled error in exception handler',
 *                         'exception': exc,
 *                         'context': context,             # <<<<<<<<<<<<<<
 *                     })
 *                 except Exception:
 */
              if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_context, __pyx_v_context) < 0) __PYX_ERR(2, 1414, __pyx_L29_error)
              __pyx_t_17 = NULL;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
                __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_11);
                if (likely(__pyx_t_17)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                  __Pyx_INCREF(__pyx_t_17);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_11, function);
                }
              }
              if (!__pyx_t_17) {
                __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1413, __pyx_L29_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_GOTREF(__pyx_t_6);
              } else {
                __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 1413, __pyx_L29_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
                __Pyx_GIVEREF(__pyx_t_8);
                PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_8);
                __pyx_t_8 = 0;
                __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1413, __pyx_L29_error)
                __Pyx_GOTREF(__pyx_t_6);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              }
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

              /* "uvloop/loop.pyx":1411
 *             except Exception as exc:
 *                 # Exception in the user set custom exception handler.
 *                 try:             # <<<<<<<<<<<<<<
 *                     # Let's try default handler.
 *                     self.default_exception_handler({
 */
            }
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            goto __pyx_L36_try_end;
            __pyx_L29_error:;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

            /* "uvloop/loop.pyx":1418
 *                         'context': context,
 *                     })
 *                 except Exception:             # <<<<<<<<<<<<<<
 *                     # Guard 'default_exception_handler' in case it is
 *                     # overloaded.
 */
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
            if (__pyx_t_10) {
              __Pyx_AddTraceback("uvloop.loop.Loop.call_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_11, &__pyx_t_18) < 0) __PYX_ERR(2, 1418, __pyx_L31_except_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_GOTREF(__pyx_t_18);

              /* "uvloop/loop.pyx":1421
 *                     # Guard 'default_exception_handler' in case it is
 *                     # overloaded.
 *                     aio_logger.error('Exception in default exception handler '             # <<<<<<<<<<<<<<
 *                                      'while handling an unexpected error '
 *                                      'in custom exception handler',
 */
              __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1421, __pyx_L31_except_error)
              __Pyx_GOTREF(__pyx_t_8);

              /* "uvloop/loop.pyx":1424
 *                                      'while handling an unexpected error '
 *                                      'in custom exception handler',
 *                                      exc_info=True)             # <<<<<<<<<<<<<<
 * 
 *     def add_reader(self, fd, callback, *args):
 */
              __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1424, __pyx_L31_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_exc_info, Py_True) < 0) __PYX_ERR(2, 1424, __pyx_L31_except_error)

              /* "uvloop/loop.pyx":1421
 *                     # Guard 'default_exception_handler' in case it is
 *                     # overloaded.
 *                     aio_logger.error('Exception in default exception handler '             # <<<<<<<<<<<<<<
 *                                      'while handling an unexpected error '
 *                                      'in custom exception handler',
 */
              __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__56, __pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(2, 1421, __pyx_L31_except_error)
              __Pyx_GOTREF(__pyx_t_19);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              goto __pyx_L30_exception_handled;
            }
            goto __pyx_L31_except_error;
            __pyx_L31_except_error:;

            /* "uvloop/loop.pyx":1411
 *             except Exception as exc:
 *                 # Exception in the user set custom exception handler.
 *                 try:             # <<<<<<<<<<<<<<
 *                     # Let's try default handler.
 *                     self.default_exception_handler({
 */
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
            goto __pyx_L27_error;
            __pyx_L30_exception_handled:;
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
            __pyx_L36_try_end:;
          }
        }

        /* "uvloop/loop.pyx":1409
 *             try:
 *                 self._exception_handler(self, context)
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 # Exception in the user set custom exception handler.
 *                 try:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
            goto __pyx_L28;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L27_error:;
            __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_24);
            __pyx_t_10 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_exc);
              __pyx_v_exc = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
            }
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_15, __pyx_t_14);
            __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
            goto __pyx_L16_except_error;
          }
          __pyx_L28:;
        }
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L15_exception_handled;
      }
      goto __pyx_L16_except_error;
      __pyx_L16_except_error:;

      /* "uvloop/loop.pyx":1407
 *                                  exc_info=True)
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 self._exception_handler(self, context)
 *             except Exception as exc:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L1_error;
      __pyx_L15_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      __pyx_L21_try_end:;
    }
  }
  __pyx_L3:;

  /* "uvloop/loop.pyx":1393
 *         self._exception_handler = handler
 * 
 *     def call_exception_handler(self, context):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             self._debug_exception_handler_cnt += 1
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_AddTraceback("uvloop.loop.Loop.call_exception_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1426
 *                                      exc_info=True)
 * 
 *     def add_reader(self, fd, callback, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 0:
 *             args = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_64add_reader(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_64add_reader(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fd = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_reader (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_reader", 0, 2, 2, 1); __PYX_ERR(2, 1426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "add_reader") < 0)) __PYX_ERR(2, 1426, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_fd = values[0];
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_reader", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1426, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.add_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_63add_reader(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_fd, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_63add_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("add_reader", 0);
  __Pyx_INCREF(__pyx_v_args);

  /* "uvloop/loop.pyx":1427
 * 
 *     def add_reader(self, fd, callback, *args):
 *         if len(args) == 0:             # <<<<<<<<<<<<<<
 *             args = None
 *         self._add_reader(fd, new_Handle(self, callback, args))
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 1427, __pyx_L1_error)
  __pyx_t_2 = ((__pyx_t_1 == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1428
 *     def add_reader(self, fd, callback, *args):
 *         if len(args) == 0:
 *             args = None             # <<<<<<<<<<<<<<
 *         self._add_reader(fd, new_Handle(self, callback, args))
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_args, Py_None);

    /* "uvloop/loop.pyx":1427
 * 
 *     def add_reader(self, fd, callback, *args):
 *         if len(args) == 0:             # <<<<<<<<<<<<<<
 *             args = None
 *         self._add_reader(fd, new_Handle(self, callback, args))
 */
  }

  /* "uvloop/loop.pyx":1429
 *         if len(args) == 0:
 *             args = None
 *         self._add_reader(fd, new_Handle(self, callback, args))             # <<<<<<<<<<<<<<
 * 
 *     def remove_reader(self, fd):
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_new_Handle(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 1429, __pyx_L1_error)
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__add_reader(__pyx_v_self, __pyx_v_fd, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1426
 *                                      exc_info=True)
 * 
 *     def add_reader(self, fd, callback, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 0:
 *             args = None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.add_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1431
 *         self._add_reader(fd, new_Handle(self, callback, args))
 * 
 *     def remove_reader(self, fd):             # <<<<<<<<<<<<<<
 *         self._remove_reader(fd)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_66remove_reader(PyObject *__pyx_v_self, PyObject *__pyx_v_fd); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_66remove_reader(PyObject *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("remove_reader (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_65remove_reader(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_fd));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_65remove_reader(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("remove_reader", 0);

  /* "uvloop/loop.pyx":1432
 * 
 *     def remove_reader(self, fd):
 *         self._remove_reader(fd)             # <<<<<<<<<<<<<<
 * 
 *     def add_writer(self, fd, callback, *args):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__remove_reader(__pyx_v_self, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1431
 *         self._add_reader(fd, new_Handle(self, callback, args))
 * 
 *     def remove_reader(self, fd):             # <<<<<<<<<<<<<<
 *         self._remove_reader(fd)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.remove_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1434
 *         self._remove_reader(fd)
 * 
 *     def add_writer(self, fd, callback, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 0:
 *             args = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_68add_writer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_68add_writer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fd = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_writer (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_writer", 0, 2, 2, 1); __PYX_ERR(2, 1434, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "add_writer") < 0)) __PYX_ERR(2, 1434, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_fd = values[0];
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_writer", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1434, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.add_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_67add_writer(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_fd, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_67add_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("add_writer", 0);
  __Pyx_INCREF(__pyx_v_args);

  /* "uvloop/loop.pyx":1435
 * 
 *     def add_writer(self, fd, callback, *args):
 *         if len(args) == 0:             # <<<<<<<<<<<<<<
 *             args = None
 *         self._add_writer(fd, new_Handle(self, callback, args))
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 1435, __pyx_L1_error)
  __pyx_t_2 = ((__pyx_t_1 == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1436
 *     def add_writer(self, fd, callback, *args):
 *         if len(args) == 0:
 *             args = None             # <<<<<<<<<<<<<<
 *         self._add_writer(fd, new_Handle(self, callback, args))
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_args, Py_None);

    /* "uvloop/loop.pyx":1435
 * 
 *     def add_writer(self, fd, callback, *args):
 *         if len(args) == 0:             # <<<<<<<<<<<<<<
 *             args = None
 *         self._add_writer(fd, new_Handle(self, callback, args))
 */
  }

  /* "uvloop/loop.pyx":1437
 *         if len(args) == 0:
 *             args = None
 *         self._add_writer(fd, new_Handle(self, callback, args))             # <<<<<<<<<<<<<<
 * 
 *     def remove_writer(self, fd):
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_new_Handle(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 1437, __pyx_L1_error)
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__add_writer(__pyx_v_self, __pyx_v_fd, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1434
 *         self._remove_reader(fd)
 * 
 *     def add_writer(self, fd, callback, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 0:
 *             args = None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Loop.add_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1439
 *         self._add_writer(fd, new_Handle(self, callback, args))
 * 
 *     def remove_writer(self, fd):             # <<<<<<<<<<<<<<
 *         self._remove_writer(fd)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_70remove_writer(PyObject *__pyx_v_self, PyObject *__pyx_v_fd); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_70remove_writer(PyObject *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("remove_writer (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_69remove_writer(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_fd));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_69remove_writer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("remove_writer", 0);

  /* "uvloop/loop.pyx":1440
 * 
 *     def remove_writer(self, fd):
 *         self._remove_writer(fd)             # <<<<<<<<<<<<<<
 * 
 *     def sock_recv(self, sock, n):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__remove_writer(__pyx_v_self, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1439
 *         self._add_writer(fd, new_Handle(self, callback, args))
 * 
 *     def remove_writer(self, fd):             # <<<<<<<<<<<<<<
 *         self._remove_writer(fd)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop.remove_writer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1442
 *         self._remove_writer(fd)
 * 
 *     def sock_recv(self, sock, n):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_72sock_recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_72sock_recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_n = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sock_recv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sock,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sock)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sock_recv", 1, 2, 2, 1); __PYX_ERR(2, 1442, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sock_recv") < 0)) __PYX_ERR(2, 1442, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sock = values[0];
    __pyx_v_n = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sock_recv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1442, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_71sock_recv(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_sock, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_71sock_recv(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_n) {
  PyObject *__pyx_v_fut = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("sock_recv", 0);

  /* "uvloop/loop.pyx":1443
 * 
 *     def sock_recv(self, sock, n):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  __pyx_t_2 = (__pyx_v_self->_debug != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_gettimeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1443, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1443, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1444
 *     def sock_recv(self, sock, n):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         self._sock_recv(fut, 0, sock, n)
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 1444, __pyx_L1_error)

    /* "uvloop/loop.pyx":1443
 * 
 *     def sock_recv(self, sock, n):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  }

  /* "uvloop/loop.pyx":1445
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 *         self._sock_recv(fut, 0, sock, n)
 *         return fut
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fut = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1446
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         self._sock_recv(fut, 0, sock, n)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_recv(__pyx_v_self, __pyx_v_fut, 0, __pyx_v_sock, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1447
 *         fut = self._new_future()
 *         self._sock_recv(fut, 0, sock, n)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     def sock_sendall(self, sock, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fut);
  __pyx_r = __pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1442
 *         self._remove_writer(fd)
 * 
 *     def sock_recv(self, sock, n):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fut);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1449
 *         return fut
 * 
 *     def sock_sendall(self, sock, data):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_74sock_sendall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_74sock_sendall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sock_sendall (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sock,&__pyx_n_s_data,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sock)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sock_sendall", 1, 2, 2, 1); __PYX_ERR(2, 1449, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sock_sendall") < 0)) __PYX_ERR(2, 1449, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sock = values[0];
    __pyx_v_data = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sock_sendall", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1449, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_sendall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_73sock_sendall(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_sock, __pyx_v_data);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_73sock_sendall(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_fut = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("sock_sendall", 0);

  /* "uvloop/loop.pyx":1450
 * 
 *     def sock_sendall(self, sock, data):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  __pyx_t_2 = (__pyx_v_self->_debug != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_gettimeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1450, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1450, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1451
 *     def sock_sendall(self, sock, data):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         if data:
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 1451, __pyx_L1_error)

    /* "uvloop/loop.pyx":1450
 * 
 *     def sock_sendall(self, sock, data):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  }

  /* "uvloop/loop.pyx":1452
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 *         if data:
 *             self._sock_sendall(fut, 0, sock, data)
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fut = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1453
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         if data:             # <<<<<<<<<<<<<<
 *             self._sock_sendall(fut, 0, sock, data)
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1454
 *         fut = self._new_future()
 *         if data:
 *             self._sock_sendall(fut, 0, sock, data)             # <<<<<<<<<<<<<<
 *         else:
 *             fut.set_result(None)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_sendall(__pyx_v_self, __pyx_v_fut, 0, __pyx_v_sock, __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1453
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         if data:             # <<<<<<<<<<<<<<
 *             self._sock_sendall(fut, 0, sock, data)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "uvloop/loop.pyx":1456
 *             self._sock_sendall(fut, 0, sock, data)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L6:;

  /* "uvloop/loop.pyx":1457
 *         else:
 *             fut.set_result(None)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     def sock_accept(self, sock):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fut);
  __pyx_r = __pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1449
 *         return fut
 * 
 *     def sock_sendall(self, sock, data):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_sendall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fut);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1459
 *         return fut
 * 
 *     def sock_accept(self, sock):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_76sock_accept(PyObject *__pyx_v_self, PyObject *__pyx_v_sock); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_76sock_accept(PyObject *__pyx_v_self, PyObject *__pyx_v_sock) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sock_accept (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_75sock_accept(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_sock));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_75sock_accept(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock) {
  PyObject *__pyx_v_fut = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("sock_accept", 0);

  /* "uvloop/loop.pyx":1460
 * 
 *     def sock_accept(self, sock):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  __pyx_t_2 = (__pyx_v_self->_debug != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_gettimeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1460, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1460, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1460, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1460, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1461
 *     def sock_accept(self, sock):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         self._sock_accept(fut, 0, sock)
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 1461, __pyx_L1_error)

    /* "uvloop/loop.pyx":1460
 * 
 *     def sock_accept(self, sock):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  }

  /* "uvloop/loop.pyx":1462
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 *         self._sock_accept(fut, 0, sock)
 *         return fut
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fut = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1463
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         self._sock_accept(fut, 0, sock)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_accept(__pyx_v_self, __pyx_v_fut, 0, __pyx_v_sock); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1464
 *         fut = self._new_future()
 *         self._sock_accept(fut, 0, sock)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     def sock_connect(self, sock, address):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fut);
  __pyx_r = __pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1459
 *         return fut
 * 
 *     def sock_accept(self, sock):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fut);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1466
 *         return fut
 * 
 *     def sock_connect(self, sock, address):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_78sock_connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_78sock_connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_v_address = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sock_connect (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sock,&__pyx_n_s_address,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sock)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sock_connect", 1, 2, 2, 1); __PYX_ERR(2, 1466, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sock_connect") < 0)) __PYX_ERR(2, 1466, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sock = values[0];
    __pyx_v_address = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sock_connect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1466, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_77sock_connect(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_sock, __pyx_v_address);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_77sock_connect(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sock, PyObject *__pyx_v_address) {
  PyObject *__pyx_v_fut = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  __Pyx_RefNannySetupContext("sock_connect", 0);

  /* "uvloop/loop.pyx":1467
 * 
 *     def sock_connect(self, sock, address):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  __pyx_t_2 = (__pyx_v_self->_debug != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sock, __pyx_n_s_gettimeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1467, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1467, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1467, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1467, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1468
 *     def sock_connect(self, sock, address):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         try:
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 1468, __pyx_L1_error)

    /* "uvloop/loop.pyx":1467
 * 
 *     def sock_connect(self, sock, address):
 *         if self._debug and sock.gettimeout() != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 */
  }

  /* "uvloop/loop.pyx":1469
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()             # <<<<<<<<<<<<<<
 *         try:
 *             if self._debug:
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fut = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1470
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         try:             # <<<<<<<<<<<<<<
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "uvloop/loop.pyx":1471
 *         fut = self._new_future()
 *         try:
 *             if self._debug:             # <<<<<<<<<<<<<<
 *                 aio__check_resolved_address(sock, address)
 *         except ValueError as err:
 */
      __pyx_t_1 = (__pyx_v_self->_debug != 0);
      if (__pyx_t_1) {

        /* "uvloop/loop.pyx":1472
 *         try:
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)             # <<<<<<<<<<<<<<
 *         except ValueError as err:
 *             fut.set_exception(err)
 */
        __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio__check_resolved_address);
        __pyx_t_3 = __pyx_v_6uvloop_4loop_aio__check_resolved_address; __pyx_t_5 = NULL;
        __pyx_t_9 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_9 = 1;
          }
        }
        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1472, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(__pyx_v_sock);
        __Pyx_GIVEREF(__pyx_v_sock);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_sock);
        __Pyx_INCREF(__pyx_v_address);
        __Pyx_GIVEREF(__pyx_v_address);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_address);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1472, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1471
 *         fut = self._new_future()
 *         try:
 *             if self._debug:             # <<<<<<<<<<<<<<
 *                 aio__check_resolved_address(sock, address)
 *         except ValueError as err:
 */
      }

      /* "uvloop/loop.pyx":1470
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         try:             # <<<<<<<<<<<<<<
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)
 */
    }

    /* "uvloop/loop.pyx":1476
 *             fut.set_exception(err)
 *         else:
 *             self._sock_connect(fut, sock, address)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
    /*else:*/ {
      __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_vtab)->_sock_connect(__pyx_v_self, __pyx_v_fut, __pyx_v_sock, __pyx_v_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1476, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1473
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)
 *         except ValueError as err:             # <<<<<<<<<<<<<<
 *             fut.set_exception(err)
 *         else:
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.Loop.sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_10) < 0) __PYX_ERR(2, 1473, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_err = __pyx_t_3;
      /*try:*/ {

        /* "uvloop/loop.pyx":1474
 *                 aio__check_resolved_address(sock, address)
 *         except ValueError as err:
 *             fut.set_exception(err)             # <<<<<<<<<<<<<<
 *         else:
 *             self._sock_connect(fut, sock, address)
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 1474, __pyx_L20_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
          }
        }
        if (!__pyx_t_13) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1474, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 1474, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
          __Pyx_INCREF(__pyx_v_err);
          __Pyx_GIVEREF(__pyx_v_err);
          PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_err);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1474, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }

      /* "uvloop/loop.pyx":1473
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)
 *         except ValueError as err:             # <<<<<<<<<<<<<<
 *             fut.set_exception(err)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_err);
          __pyx_v_err = NULL;
          goto __pyx_L21;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L20_error:;
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          __pyx_t_11 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          }
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
          goto __pyx_L8_except_error;
        }
        __pyx_L21:;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L7_exception_handled;
    }
    goto __pyx_L8_except_error;
    __pyx_L8_except_error:;

    /* "uvloop/loop.pyx":1470
 *             raise ValueError("the socket must be non-blocking")
 *         fut = self._new_future()
 *         try:             # <<<<<<<<<<<<<<
 *             if self._debug:
 *                 aio__check_resolved_address(sock, address)
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    __pyx_L13_try_end:;
  }

  /* "uvloop/loop.pyx":1477
 *         else:
 *             self._sock_connect(fut, sock, address)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 *     def run_in_executor(self, executor, func, *args):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fut);
  __pyx_r = __pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1466
 *         return fut
 * 
 *     def sock_connect(self, sock, address):             # <<<<<<<<<<<<<<
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("uvloop.loop.Loop.sock_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fut);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1479
 *         return fut
 * 
 *     def run_in_executor(self, executor, func, *args):             # <<<<<<<<<<<<<<
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):
 *             raise TypeError("coroutines cannot be used with run_in_executor()")
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_80run_in_executor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_80run_in_executor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_executor = 0;
  PyObject *__pyx_v_func = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("run_in_executor (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_executor,&__pyx_n_s_func,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_executor)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("run_in_executor", 0, 2, 2, 1); __PYX_ERR(2, 1479, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "run_in_executor") < 0)) __PYX_ERR(2, 1479, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_executor = values[0];
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("run_in_executor", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1479, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.run_in_executor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_79run_in_executor(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_executor, __pyx_v_func, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_79run_in_executor(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_executor, PyObject *__pyx_v_func, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("run_in_executor", 0);
  __Pyx_INCREF(__pyx_v_executor);

  /* "uvloop/loop.pyx":1480
 * 
 *     def run_in_executor(self, executor, func, *args):
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):             # <<<<<<<<<<<<<<
 *             raise TypeError("coroutines cannot be used with run_in_executor()")
 * 
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_iscoroutine);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_aio_iscoroutine; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_func);
    __Pyx_GIVEREF(__pyx_v_func);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_func);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_iscoroutinefunction);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_aio_iscoroutinefunction; __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_v_func);
    __Pyx_GIVEREF(__pyx_v_func);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_func);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1481
 *     def run_in_executor(self, executor, func, *args):
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):
 *             raise TypeError("coroutines cannot be used with run_in_executor()")             # <<<<<<<<<<<<<<
 * 
 *         self._check_closed()
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1481, __pyx_L1_error)

    /* "uvloop/loop.pyx":1480
 * 
 *     def run_in_executor(self, executor, func, *args):
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):             # <<<<<<<<<<<<<<
 *             raise TypeError("coroutines cannot be used with run_in_executor()")
 * 
 */
  }

  /* "uvloop/loop.pyx":1483
 *             raise TypeError("coroutines cannot be used with run_in_executor()")
 * 
 *         self._check_closed()             # <<<<<<<<<<<<<<
 * 
 *         if executor is None:
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1485
 *         self._check_closed()
 * 
 *         if executor is None:             # <<<<<<<<<<<<<<
 *             executor = self._default_executor
 *             if executor is None:
 */
  __pyx_t_1 = (__pyx_v_executor == Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "uvloop/loop.pyx":1486
 * 
 *         if executor is None:
 *             executor = self._default_executor             # <<<<<<<<<<<<<<
 *             if executor is None:
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)
 */
    __pyx_t_2 = __pyx_v_self->_default_executor;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_executor, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1487
 *         if executor is None:
 *             executor = self._default_executor
 *             if executor is None:             # <<<<<<<<<<<<<<
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)
 *                 self._default_executor = executor
 */
    __pyx_t_6 = (__pyx_v_executor == Py_None);
    __pyx_t_1 = (__pyx_t_6 != 0);
    if (__pyx_t_1) {

      /* "uvloop/loop.pyx":1488
 *             executor = self._default_executor
 *             if executor is None:
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)             # <<<<<<<<<<<<<<
 *                 self._default_executor = executor
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_cc_ThreadPoolExecutor, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1488, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF_SET(__pyx_v_executor, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1489
 *             if executor is None:
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)
 *                 self._default_executor = executor             # <<<<<<<<<<<<<<
 * 
 *         return aio_wrap_future(executor.submit(func, *args), loop=self)
 */
      __Pyx_INCREF(__pyx_v_executor);
      __Pyx_GIVEREF(__pyx_v_executor);
      __Pyx_GOTREF(__pyx_v_self->_default_executor);
      __Pyx_DECREF(__pyx_v_self->_default_executor);
      __pyx_v_self->_default_executor = __pyx_v_executor;

      /* "uvloop/loop.pyx":1487
 *         if executor is None:
 *             executor = self._default_executor
 *             if executor is None:             # <<<<<<<<<<<<<<
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)
 *                 self._default_executor = executor
 */
    }

    /* "uvloop/loop.pyx":1485
 *         self._check_closed()
 * 
 *         if executor is None:             # <<<<<<<<<<<<<<
 *             executor = self._default_executor
 *             if executor is None:
 */
  }

  /* "uvloop/loop.pyx":1491
 *                 self._default_executor = executor
 * 
 *         return aio_wrap_future(executor.submit(func, *args), loop=self)             # <<<<<<<<<<<<<<
 * 
 *     def set_default_executor(self, executor):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_executor, __pyx_n_s_submit); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_func);
  __Pyx_GIVEREF(__pyx_v_func);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_func);
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_loop, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(2, 1491, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_wrap_future, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1479
 *         return fut
 * 
 *     def run_in_executor(self, executor, func, *args):             # <<<<<<<<<<<<<<
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):
 *             raise TypeError("coroutines cannot be used with run_in_executor()")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop.run_in_executor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_executor);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1493
 *         return aio_wrap_future(executor.submit(func, *args), loop=self)
 * 
 *     def set_default_executor(self, executor):             # <<<<<<<<<<<<<<
 *         self._default_executor = executor
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_82set_default_executor(PyObject *__pyx_v_self, PyObject *__pyx_v_executor); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_82set_default_executor(PyObject *__pyx_v_self, PyObject *__pyx_v_executor) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_default_executor (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_81set_default_executor(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_executor));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_81set_default_executor(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_executor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_default_executor", 0);

  /* "uvloop/loop.pyx":1494
 * 
 *     def set_default_executor(self, executor):
 *         self._default_executor = executor             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_INCREF(__pyx_v_executor);
  __Pyx_GIVEREF(__pyx_v_executor);
  __Pyx_GOTREF(__pyx_v_self->_default_executor);
  __Pyx_DECREF(__pyx_v_self->_default_executor);
  __pyx_v_self->_default_executor = __pyx_v_executor;

  /* "uvloop/loop.pyx":1493
 *         return aio_wrap_future(executor.submit(func, *args), loop=self)
 * 
 *     def set_default_executor(self, executor):             # <<<<<<<<<<<<<<
 *         self._default_executor = executor
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_85generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1497
 * 
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,             # <<<<<<<<<<<<<<
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_84__subprocess_run(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_84__subprocess_run(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_stdin = 0;
  PyObject *__pyx_v_stdout = 0;
  PyObject *__pyx_v_stderr = 0;
  PyObject *__pyx_v_universal_newlines = 0;
  CYTHON_UNUSED PyObject *__pyx_v_shell = 0;
  PyObject *__pyx_v_bufsize = 0;
  PyObject *__pyx_v_preexec_fn = 0;
  CYTHON_UNUSED PyObject *__pyx_v_close_fds = 0;
  PyObject *__pyx_v_cwd = 0;
  PyObject *__pyx_v_env = 0;
  PyObject *__pyx_v_startupinfo = 0;
  PyObject *__pyx_v_creationflags = 0;
  CYTHON_UNUSED PyObject *__pyx_v_restore_signals = 0;
  PyObject *__pyx_v_start_new_session = 0;
  PyObject *__pyx_v_executable = 0;
  PyObject *__pyx_v_pass_fds = 0;
  PyObject *__pyx_v___uvloop_sleep_after_fork = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__subprocess_run (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_args,&__pyx_n_s_stdin,&__pyx_n_s_stdout,&__pyx_n_s_stderr,&__pyx_n_s_universal_newlines,&__pyx_n_s_shell,&__pyx_n_s_bufsize,&__pyx_n_s_preexec_fn,&__pyx_n_s_close_fds,&__pyx_n_s_cwd,&__pyx_n_s_env,&__pyx_n_s_startupinfo,&__pyx_n_s_creationflags,&__pyx_n_s_restore_signals,&__pyx_n_s_start_new_session,&__pyx_n_s_executable,&__pyx_n_s_pass_fds,&__pyx_n_s_uvloop_sleep_after_fork,0};
    PyObject* values[19] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    values[2] = __pyx_k__64;
    values[3] = __pyx_k__65;
    values[4] = __pyx_k__66;

    /* "uvloop/loop.pyx":1501
 *                                stdout=subprocess_PIPE,
 *                                stderr=subprocess_PIPE,
 *                                universal_newlines=False,             # <<<<<<<<<<<<<<
 *                                shell=True,
 *                                bufsize=0,
 */
    values[5] = ((PyObject *)Py_False);

    /* "uvloop/loop.pyx":1502
 *                                stderr=subprocess_PIPE,
 *                                universal_newlines=False,
 *                                shell=True,             # <<<<<<<<<<<<<<
 *                                bufsize=0,
 *                                preexec_fn=None,
 */
    values[6] = ((PyObject *)Py_True);
    values[7] = ((PyObject *)__pyx_int_0);

    /* "uvloop/loop.pyx":1504
 *                                shell=True,
 *                                bufsize=0,
 *                                preexec_fn=None,             # <<<<<<<<<<<<<<
 *                                close_fds=None,
 *                                cwd=None,
 */
    values[8] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1505
 *                                bufsize=0,
 *                                preexec_fn=None,
 *                                close_fds=None,             # <<<<<<<<<<<<<<
 *                                cwd=None,
 *                                env=None,
 */
    values[9] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1506
 *                                preexec_fn=None,
 *                                close_fds=None,
 *                                cwd=None,             # <<<<<<<<<<<<<<
 *                                env=None,
 *                                startupinfo=None,
 */
    values[10] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1507
 *                                close_fds=None,
 *                                cwd=None,
 *                                env=None,             # <<<<<<<<<<<<<<
 *                                startupinfo=None,
 *                                creationflags=0,
 */
    values[11] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1508
 *                                cwd=None,
 *                                env=None,
 *                                startupinfo=None,             # <<<<<<<<<<<<<<
 *                                creationflags=0,
 *                                restore_signals=True,
 */
    values[12] = ((PyObject *)Py_None);
    values[13] = ((PyObject *)__pyx_int_0);

    /* "uvloop/loop.pyx":1510
 *                                startupinfo=None,
 *                                creationflags=0,
 *                                restore_signals=True,             # <<<<<<<<<<<<<<
 *                                start_new_session=False,
 *                                executable=None,
 */
    values[14] = ((PyObject *)Py_True);

    /* "uvloop/loop.pyx":1511
 *                                creationflags=0,
 *                                restore_signals=True,
 *                                start_new_session=False,             # <<<<<<<<<<<<<<
 *                                executable=None,
 *                                pass_fds=(),
 */
    values[15] = ((PyObject *)Py_False);

    /* "uvloop/loop.pyx":1512
 *                                restore_signals=True,
 *                                start_new_session=False,
 *                                executable=None,             # <<<<<<<<<<<<<<
 *                                pass_fds=(),
 * 
 */
    values[16] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1513
 *                                start_new_session=False,
 *                                executable=None,
 *                                pass_fds=(),             # <<<<<<<<<<<<<<
 * 
 *                                # For tests only! Do not use in your code. Ever.
 */
    values[17] = ((PyObject *)__pyx_empty_tuple);

    /* "uvloop/loop.pyx":1516
 * 
 *                                # For tests only! Do not use in your code. Ever.
 *                                __uvloop_sleep_after_fork=False             # <<<<<<<<<<<<<<
 *                             ):
 * 
 */
    values[18] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__subprocess_run", 0, 2, 19, 1); __PYX_ERR(2, 1497, __pyx_L3_error)
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stdin);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stdout);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stderr);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_universal_newlines);
          if (value) { values[5] = value; kw_args--; }
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shell);
          if (value) { values[6] = value; kw_args--; }
        }
        case  7:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bufsize);
          if (value) { values[7] = value; kw_args--; }
        }
        case  8:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_preexec_fn);
          if (value) { values[8] = value; kw_args--; }
        }
        case  9:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_close_fds);
          if (value) { values[9] = value; kw_args--; }
        }
        case 10:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cwd);
          if (value) { values[10] = value; kw_args--; }
        }
        case 11:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_env);
          if (value) { values[11] = value; kw_args--; }
        }
        case 12:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_startupinfo);
          if (value) { values[12] = value; kw_args--; }
        }
        case 13:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_creationflags);
          if (value) { values[13] = value; kw_args--; }
        }
        case 14:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_restore_signals);
          if (value) { values[14] = value; kw_args--; }
        }
        case 15:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_start_new_session);
          if (value) { values[15] = value; kw_args--; }
        }
        case 16:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_executable);
          if (value) { values[16] = value; kw_args--; }
        }
        case 17:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pass_fds);
          if (value) { values[17] = value; kw_args--; }
        }
        case 18:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_uvloop_sleep_after_fork);
          if (value) { values[18] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__subprocess_run") < 0)) __PYX_ERR(2, 1497, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_args = values[1];
    __pyx_v_stdin = values[2];
    __pyx_v_stdout = values[3];
    __pyx_v_stderr = values[4];
    __pyx_v_universal_newlines = values[5];
    __pyx_v_shell = values[6];
    __pyx_v_bufsize = values[7];
    __pyx_v_preexec_fn = values[8];
    __pyx_v_close_fds = values[9];
    __pyx_v_cwd = values[10];
    __pyx_v_env = values[11];
    __pyx_v_startupinfo = values[12];
    __pyx_v_creationflags = values[13];
    __pyx_v_restore_signals = values[14];
    __pyx_v_start_new_session = values[15];
    __pyx_v_executable = values[16];
    __pyx_v_pass_fds = values[17];
    __pyx_v___uvloop_sleep_after_fork = values[18];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__subprocess_run", 0, 2, 19, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1497, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.__subprocess_run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_83__subprocess_run(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_args, __pyx_v_stdin, __pyx_v_stdout, __pyx_v_stderr, __pyx_v_universal_newlines, __pyx_v_shell, __pyx_v_bufsize, __pyx_v_preexec_fn, __pyx_v_close_fds, __pyx_v_cwd, __pyx_v_env, __pyx_v_startupinfo, __pyx_v_creationflags, __pyx_v_restore_signals, __pyx_v_start_new_session, __pyx_v_executable, __pyx_v_pass_fds, __pyx_v___uvloop_sleep_after_fork);

  /* "uvloop/loop.pyx":1497
 * 
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,             # <<<<<<<<<<<<<<
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_83__subprocess_run(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_args, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_universal_newlines, CYTHON_UNUSED PyObject *__pyx_v_shell, PyObject *__pyx_v_bufsize, PyObject *__pyx_v_preexec_fn, CYTHON_UNUSED PyObject *__pyx_v_close_fds, PyObject *__pyx_v_cwd, PyObject *__pyx_v_env, PyObject *__pyx_v_startupinfo, PyObject *__pyx_v_creationflags, CYTHON_UNUSED PyObject *__pyx_v_restore_signals, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_executable, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v___uvloop_sleep_after_fork) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__subprocess_run", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_11___subprocess_run, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_args = __pyx_v_args;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
  __pyx_cur_scope->__pyx_v_stdin = __pyx_v_stdin;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stdin);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stdin);
  __pyx_cur_scope->__pyx_v_stdout = __pyx_v_stdout;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stdout);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stdout);
  __pyx_cur_scope->__pyx_v_stderr = __pyx_v_stderr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stderr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stderr);
  __pyx_cur_scope->__pyx_v_universal_newlines = __pyx_v_universal_newlines;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_universal_newlines);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_universal_newlines);
  __pyx_cur_scope->__pyx_v_shell = __pyx_v_shell;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_shell);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_shell);
  __pyx_cur_scope->__pyx_v_bufsize = __pyx_v_bufsize;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_bufsize);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_bufsize);
  __pyx_cur_scope->__pyx_v_preexec_fn = __pyx_v_preexec_fn;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_preexec_fn);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_preexec_fn);
  __pyx_cur_scope->__pyx_v_close_fds = __pyx_v_close_fds;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_close_fds);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_close_fds);
  __pyx_cur_scope->__pyx_v_cwd = __pyx_v_cwd;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cwd);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cwd);
  __pyx_cur_scope->__pyx_v_env = __pyx_v_env;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_env);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_env);
  __pyx_cur_scope->__pyx_v_startupinfo = __pyx_v_startupinfo;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_startupinfo);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_startupinfo);
  __pyx_cur_scope->__pyx_v_creationflags = __pyx_v_creationflags;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_creationflags);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_creationflags);
  __pyx_cur_scope->__pyx_v_restore_signals = __pyx_v_restore_signals;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_restore_signals);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_restore_signals);
  __pyx_cur_scope->__pyx_v_start_new_session = __pyx_v_start_new_session;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start_new_session);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start_new_session);
  __pyx_cur_scope->__pyx_v_executable = __pyx_v_executable;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_executable);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_executable);
  __pyx_cur_scope->__pyx_v_pass_fds = __pyx_v_pass_fds;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pass_fds);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pass_fds);
  __pyx_cur_scope->__pyx_v___uvloop_sleep_after_fork = __pyx_v___uvloop_sleep_after_fork;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v___uvloop_sleep_after_fork);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v___uvloop_sleep_after_fork);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_85generator5, (PyObject *) __pyx_cur_scope, __pyx_n_s_subprocess_run, __pyx_n_s_Loop___subprocess_run); if (unlikely(!gen)) __PYX_ERR(2, 1497, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.__subprocess_run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_85generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L20_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1497, __pyx_L1_error)

  /* "uvloop/loop.pyx":1525
 * 
 *         cdef:
 *             int debug_flags = 0             # <<<<<<<<<<<<<<
 * 
 *         if preexec_fn is not None:
 */
  __pyx_cur_scope->__pyx_v_debug_flags = 0;

  /* "uvloop/loop.pyx":1527
 *             int debug_flags = 0
 * 
 *         if preexec_fn is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_preexec_fn != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1528
 * 
 *         if preexec_fn is not None:
 *             raise ValueError('preexec_fn parameter is not supported')             # <<<<<<<<<<<<<<
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1528, __pyx_L1_error)

    /* "uvloop/loop.pyx":1527
 *             int debug_flags = 0
 * 
 *         if preexec_fn is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:
 */
  }

  /* "uvloop/loop.pyx":1529
 *         if preexec_fn is not None:
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:             # <<<<<<<<<<<<<<
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_universal_newlines); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1529, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1530
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")             # <<<<<<<<<<<<<<
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1530, __pyx_L1_error)

    /* "uvloop/loop.pyx":1529
 *         if preexec_fn is not None:
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:             # <<<<<<<<<<<<<<
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:
 */
  }

  /* "uvloop/loop.pyx":1531
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bufsize, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1531, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1532
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")             # <<<<<<<<<<<<<<
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1532, __pyx_L1_error)

    /* "uvloop/loop.pyx":1531
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:
 */
  }

  /* "uvloop/loop.pyx":1533
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:             # <<<<<<<<<<<<<<
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_preexec_fn); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1533, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1534
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')             # <<<<<<<<<<<<<<
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1534, __pyx_L1_error)

    /* "uvloop/loop.pyx":1533
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:             # <<<<<<<<<<<<<<
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:
 */
  }

  /* "uvloop/loop.pyx":1535
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:
 */
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_startupinfo != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1536
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')             # <<<<<<<<<<<<<<
 *         if creationflags != 0:
 *             raise ValueError('creationflags is not supported')
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1536, __pyx_L1_error)

    /* "uvloop/loop.pyx":1535
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:
 */
  }

  /* "uvloop/loop.pyx":1537
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('creationflags is not supported')
 * 
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_creationflags, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1537, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1538
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:
 *             raise ValueError('creationflags is not supported')             # <<<<<<<<<<<<<<
 * 
 *         if executable is not None:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1538, __pyx_L1_error)

    /* "uvloop/loop.pyx":1537
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('creationflags is not supported')
 * 
 */
  }

  /* "uvloop/loop.pyx":1540
 *             raise ValueError('creationflags is not supported')
 * 
 *         if executable is not None:             # <<<<<<<<<<<<<<
 *             args[0] = executable
 * 
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_executable != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1541
 * 
 *         if executable is not None:
 *             args[0] = executable             # <<<<<<<<<<<<<<
 * 
 *         if __uvloop_sleep_after_fork:
 */
    if (unlikely(__Pyx_SetItemInt(__pyx_cur_scope->__pyx_v_args, 0, __pyx_cur_scope->__pyx_v_executable, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(2, 1541, __pyx_L1_error)

    /* "uvloop/loop.pyx":1540
 *             raise ValueError('creationflags is not supported')
 * 
 *         if executable is not None:             # <<<<<<<<<<<<<<
 *             args[0] = executable
 * 
 */
  }

  /* "uvloop/loop.pyx":1543
 *             args[0] = executable
 * 
 *         if __uvloop_sleep_after_fork:             # <<<<<<<<<<<<<<
 *             debug_flags |= __PROCESS_DEBUG_SLEEP_AFTER_FORK
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v___uvloop_sleep_after_fork); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1543, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1544
 * 
 *         if __uvloop_sleep_after_fork:
 *             debug_flags |= __PROCESS_DEBUG_SLEEP_AFTER_FORK             # <<<<<<<<<<<<<<
 * 
 *         waiter = self._new_future()
 */
    __pyx_cur_scope->__pyx_v_debug_flags = (__pyx_cur_scope->__pyx_v_debug_flags | 1);

    /* "uvloop/loop.pyx":1543
 *             args[0] = executable
 * 
 *         if __uvloop_sleep_after_fork:             # <<<<<<<<<<<<<<
 *             debug_flags |= __PROCESS_DEBUG_SLEEP_AFTER_FORK
 * 
 */
  }

  /* "uvloop/loop.pyx":1546
 *             debug_flags |= __PROCESS_DEBUG_SLEEP_AFTER_FORK
 * 
 *         waiter = self._new_future()             # <<<<<<<<<<<<<<
 *         protocol = protocol_factory()
 *         proc = UVProcessTransport.new(self, protocol,
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_waiter = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":1547
 * 
 *         waiter = self._new_future()
 *         protocol = protocol_factory()             # <<<<<<<<<<<<<<
 *         proc = UVProcessTransport.new(self, protocol,
 *                                       args, env, cwd, start_new_session,
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_protocol_factory; __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1547, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1547, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_protocol = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":1552
 *                                       stdin, stdout, stderr, pass_fds,
 *                                       waiter,
 *                                       debug_flags)             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_debug_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "uvloop/loop.pyx":1548
 *         waiter = self._new_future()
 *         protocol = protocol_factory()
 *         proc = UVProcessTransport.new(self, protocol,             # <<<<<<<<<<<<<<
 *                                       args, env, cwd, start_new_session,
 *                                       stdin, stdout, stderr, pass_fds,
 */
  __pyx_t_4 = ((PyObject *)__pyx_f_6uvloop_4loop_18UVProcessTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_protocol, __pyx_cur_scope->__pyx_v_args, __pyx_cur_scope->__pyx_v_env, __pyx_cur_scope->__pyx_v_cwd, __pyx_cur_scope->__pyx_v_start_new_session, __pyx_cur_scope->__pyx_v_stdin, __pyx_cur_scope->__pyx_v_stdout, __pyx_cur_scope->__pyx_v_stderr, __pyx_cur_scope->__pyx_v_pass_fds, __pyx_cur_scope->__pyx_v_waiter, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_proc = ((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "uvloop/loop.pyx":1554
 *                                       debug_flags)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await waiter
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "uvloop/loop.pyx":1555
 * 
 *         try:
 *             await waiter             # <<<<<<<<<<<<<<
 *         except:
 *             proc.close()
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L20_resume_from_yield:;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1555, __pyx_L12_error)
      } else {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 1555, __pyx_L12_error)
        }
      }

      /* "uvloop/loop.pyx":1554
 *                                       debug_flags)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await waiter
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L19_try_end;
    __pyx_L12_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1556
 *         try:
 *             await waiter
 *         except:             # <<<<<<<<<<<<<<
 *             proc.close()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.Loop.__subprocess_run", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(2, 1556, __pyx_L14_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);

      /* "uvloop/loop.pyx":1557
 *             await waiter
 *         except:
 *             proc.close()             # <<<<<<<<<<<<<<
 *             raise
 * 
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_proc), __pyx_n_s_close); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1557, __pyx_L14_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (__pyx_t_11) {
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1557, __pyx_L14_except_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      } else {
        __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1557, __pyx_L14_except_error)
      }
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "uvloop/loop.pyx":1558
 *         except:
 *             proc.close()
 *             raise             # <<<<<<<<<<<<<<
 * 
 *         return proc, protocol
 */
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_5);
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; 
      __PYX_ERR(2, 1558, __pyx_L14_except_error)
    }
    __pyx_L14_except_error:;

    /* "uvloop/loop.pyx":1554
 *                                       debug_flags)
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await waiter
 *         except:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L19_try_end:;
  }

  /* "uvloop/loop.pyx":1560
 *             raise
 * 
 *         return proc, protocol             # <<<<<<<<<<<<<<
 * 
 *     def subprocess_shell(self, protocol_factory, cmd, *,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_proc));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_proc));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_proc));
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_protocol);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1497
 * 
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,             # <<<<<<<<<<<<<<
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("__subprocess_run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1562
 *         return proc, protocol
 * 
 *     def subprocess_shell(self, protocol_factory, cmd, *,             # <<<<<<<<<<<<<<
 *                          shell=True,
 *                          **kwargs):
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_87subprocess_shell(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_87subprocess_shell(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_cmd = 0;
  PyObject *__pyx_v_shell = 0;
  PyObject *__pyx_v_kwargs = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("subprocess_shell (wrapper)", 0);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_cmd,&__pyx_n_s_shell,0};
    PyObject* values[3] = {0,0,0};

    /* "uvloop/loop.pyx":1563
 * 
 *     def subprocess_shell(self, protocol_factory, cmd, *,
 *                          shell=True,             # <<<<<<<<<<<<<<
 *                          **kwargs):
 * 
 */
    values[2] = ((PyObject *)Py_True);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cmd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("subprocess_shell", 1, 2, 2, 1); __PYX_ERR(2, 1562, __pyx_L3_error)
        }
      }
      if (kw_args == 1) {
        const Py_ssize_t index = 2;
        PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
        if (value) { values[index] = value; kw_args--; }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "subprocess_shell") < 0)) __PYX_ERR(2, 1562, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_cmd = values[1];
    __pyx_v_shell = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("subprocess_shell", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1562, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.subprocess_shell", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_86subprocess_shell(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_cmd, __pyx_v_shell, __pyx_v_kwargs);

  /* "uvloop/loop.pyx":1562
 *         return proc, protocol
 * 
 *     def subprocess_shell(self, protocol_factory, cmd, *,             # <<<<<<<<<<<<<<
 *                          shell=True,
 *                          **kwargs):
 */

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_86subprocess_shell(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_cmd, PyObject *__pyx_v_shell, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("subprocess_shell", 0);

  /* "uvloop/loop.pyx":1566
 *                          **kwargs):
 * 
 *         if not shell:             # <<<<<<<<<<<<<<
 *             raise ValueError("shell must be True")
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_shell); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1566, __pyx_L1_error)
  __pyx_t_2 = ((!__pyx_t_1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1567
 * 
 *         if not shell:
 *             raise ValueError("shell must be True")             # <<<<<<<<<<<<<<
 * 
 *         args = [cmd]
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(2, 1567, __pyx_L1_error)

    /* "uvloop/loop.pyx":1566
 *                          **kwargs):
 * 
 *         if not shell:             # <<<<<<<<<<<<<<
 *             raise ValueError("shell must be True")
 * 
 */
  }

  /* "uvloop/loop.pyx":1569
 *             raise ValueError("shell must be True")
 * 
 *         args = [cmd]             # <<<<<<<<<<<<<<
 *         if shell:
 *             args = [b'/bin/sh', b'-c'] + args
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_cmd);
  __Pyx_GIVEREF(__pyx_v_cmd);
  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_cmd);
  __pyx_v_args = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/loop.pyx":1570
 * 
 *         args = [cmd]
 *         if shell:             # <<<<<<<<<<<<<<
 *             args = [b'/bin/sh', b'-c'] + args
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_shell); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1570, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1571
 *         args = [cmd]
 *         if shell:
 *             args = [b'/bin/sh', b'-c'] + args             # <<<<<<<<<<<<<<
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=True,
 */
    __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_kp_b_bin_sh);
    __Pyx_GIVEREF(__pyx_kp_b_bin_sh);
    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_kp_b_bin_sh);
    __Pyx_INCREF(__pyx_kp_b_c);
    __Pyx_GIVEREF(__pyx_kp_b_c);
    PyList_SET_ITEM(__pyx_t_3, 1, __pyx_kp_b_c);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1570
 * 
 *         args = [cmd]
 *         if shell:             # <<<<<<<<<<<<<<
 *             args = [b'/bin/sh', b'-c'] + args
 * 
 */
  }

  /* "uvloop/loop.pyx":1573
 *             args = [b'/bin/sh', b'-c'] + args
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=True,             # <<<<<<<<<<<<<<
 *                                      **kwargs)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_subprocess_run); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_v_protocol_factory);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_protocol_factory);
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_args);
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shell, Py_True) < 0) __PYX_ERR(2, 1573, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1574
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=True,
 *                                      **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def subprocess_exec(self,  protocol_factory, program, *args,
 */
  if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwargs) < 0) __PYX_ERR(2, 1574, __pyx_L1_error)

  /* "uvloop/loop.pyx":1573
 *             args = [b'/bin/sh', b'-c'] + args
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=True,             # <<<<<<<<<<<<<<
 *                                      **kwargs)
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1562
 *         return proc, protocol
 * 
 *     def subprocess_shell(self, protocol_factory, cmd, *,             # <<<<<<<<<<<<<<
 *                          shell=True,
 *                          **kwargs):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.Loop.subprocess_shell", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1576
 *                                      **kwargs)
 * 
 *     def subprocess_exec(self,  protocol_factory, program, *args,             # <<<<<<<<<<<<<<
 *                         shell=False, **kwargs):
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_89subprocess_exec(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_89subprocess_exec(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_program = 0;
  PyObject *__pyx_v_shell = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("subprocess_exec (wrapper)", 0);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_program,&__pyx_n_s_shell,0};
    PyObject* values[3] = {0,0,0};

    /* "uvloop/loop.pyx":1577
 * 
 *     def subprocess_exec(self,  protocol_factory, program, *args,
 *                         shell=False, **kwargs):             # <<<<<<<<<<<<<<
 * 
 *         if shell:
 */
    values[2] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_program)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("subprocess_exec", 0, 2, 2, 1); __PYX_ERR(2, 1576, __pyx_L3_error)
        }
      }
      if (kw_args == 1) {
        const Py_ssize_t index = 2;
        PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
        if (value) { values[index] = value; kw_args--; }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "subprocess_exec") < 0)) __PYX_ERR(2, 1576, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_program = values[1];
    __pyx_v_shell = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("subprocess_exec", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1576, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.subprocess_exec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_88subprocess_exec(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_program, __pyx_v_shell, __pyx_v_args, __pyx_v_kwargs);

  /* "uvloop/loop.pyx":1576
 *                                      **kwargs)
 * 
 *     def subprocess_exec(self,  protocol_factory, program, *args,             # <<<<<<<<<<<<<<
 *                         shell=False, **kwargs):
 * 
 */

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_88subprocess_exec(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_program, PyObject *__pyx_v_shell, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("subprocess_exec", 0);
  __Pyx_INCREF(__pyx_v_args);

  /* "uvloop/loop.pyx":1579
 *                         shell=False, **kwargs):
 * 
 *         if shell:             # <<<<<<<<<<<<<<
 *             raise ValueError("shell must be False")
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_shell); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1579, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1580
 * 
 *         if shell:
 *             raise ValueError("shell must be False")             # <<<<<<<<<<<<<<
 * 
 *         args = list((program,) + args)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1580, __pyx_L1_error)

    /* "uvloop/loop.pyx":1579
 *                         shell=False, **kwargs):
 * 
 *         if shell:             # <<<<<<<<<<<<<<
 *             raise ValueError("shell must be False")
 * 
 */
  }

  /* "uvloop/loop.pyx":1582
 *             raise ValueError("shell must be False")
 * 
 *         args = list((program,) + args)             # <<<<<<<<<<<<<<
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=False,
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_program);
  __Pyx_GIVEREF(__pyx_v_program);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_program);
  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_args, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1584
 *         args = list((program,) + args)
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=False,             # <<<<<<<<<<<<<<
 *                                      **kwargs)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_subprocess_run); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_v_protocol_factory);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_protocol_factory);
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_args);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shell, Py_False) < 0) __PYX_ERR(2, 1584, __pyx_L1_error)
  __pyx_t_4 = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":1585
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=False,
 *                                      **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  if (__Pyx_MergeKeywords(__pyx_t_4, __pyx_v_kwargs) < 0) __PYX_ERR(2, 1585, __pyx_L1_error)

  /* "uvloop/loop.pyx":1584
 *         args = list((program,) + args)
 * 
 *         return self.__subprocess_run(protocol_factory, args, shell=False,             # <<<<<<<<<<<<<<
 *                                      **kwargs)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1576
 *                                      **kwargs)
 * 
 *     def subprocess_exec(self,  protocol_factory, program, *args,             # <<<<<<<<<<<<<<
 *                         shell=False, **kwargs):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Loop.subprocess_exec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_92generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1588
 * 
 *     @aio_coroutine
 *     async def connect_read_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ReadUnixTransport transp
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_91connect_read_pipe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_91connect_read_pipe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_proto_factory = 0;
  PyObject *__pyx_v_pipe = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connect_read_pipe (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_proto_factory,&__pyx_n_s_pipe,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_proto_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pipe)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("connect_read_pipe", 1, 2, 2, 1); __PYX_ERR(2, 1588, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "connect_read_pipe") < 0)) __PYX_ERR(2, 1588, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_proto_factory = values[0];
    __pyx_v_pipe = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("connect_read_pipe", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1588, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.connect_read_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_90connect_read_pipe(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_proto_factory, __pyx_v_pipe);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_90connect_read_pipe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_proto_factory, PyObject *__pyx_v_pipe) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connect_read_pipe", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_proto_factory = __pyx_v_proto_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __pyx_cur_scope->__pyx_v_pipe = __pyx_v_pipe;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pipe);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pipe);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_92generator6, (PyObject *) __pyx_cur_scope, __pyx_n_s_connect_read_pipe, __pyx_n_s_Loop_connect_read_pipe); if (unlikely(!gen)) __PYX_ERR(2, 1588, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.connect_read_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_92generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L12_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1588, __pyx_L1_error)

  /* "uvloop/loop.pyx":1591
 *         cdef:
 *             ReadUnixTransport transp
 *             int fileno = os_dup(pipe.fileno())             # <<<<<<<<<<<<<<
 * 
 *         waiter = self._new_future()
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pipe, __pyx_n_s_fileno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1591, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1591, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_cur_scope->__pyx_v_fileno = __pyx_t_6;

  /* "uvloop/loop.pyx":1593
 *             int fileno = os_dup(pipe.fileno())
 * 
 *         waiter = self._new_future()             # <<<<<<<<<<<<<<
 *         proto = proto_factory()
 *         transp = ReadUnixTransport.new(self, proto, None, waiter)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_waiter = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1594
 * 
 *         waiter = self._new_future()
 *         proto = proto_factory()             # <<<<<<<<<<<<<<
 *         transp = ReadUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_proto_factory; __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1594, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1594, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_proto = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1595
 *         waiter = self._new_future()
 *         proto = proto_factory()
 *         transp = ReadUnixTransport.new(self, proto, None, waiter)             # <<<<<<<<<<<<<<
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_17ReadUnixTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_proto, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_transp = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1596
 *         proto = proto_factory()
 *         transp = ReadUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)             # <<<<<<<<<<<<<<
 *         transp._attach_fileobj(pipe)
 *         try:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._add_extra_info(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_transp), __pyx_n_u_pipe, __pyx_cur_scope->__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1597
 *         transp = ReadUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)             # <<<<<<<<<<<<<<
 *         try:
 *             transp.open(fileno)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_transp), __pyx_cur_scope->__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1598
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    /*try:*/ {

      /* "uvloop/loop.pyx":1599
 *         transp._attach_fileobj(pipe)
 *         try:
 *             transp.open(fileno)             # <<<<<<<<<<<<<<
 *             transp._init_protocol()
 *             await waiter
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_transp, __pyx_cur_scope->__pyx_v_fileno); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1599, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1600
 *         try:
 *             transp.open(fileno)
 *             transp._init_protocol()             # <<<<<<<<<<<<<<
 *             await waiter
 *         except:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_transp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1600, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1601
 *             transp.open(fileno)
 *             transp._init_protocol()
 *             await waiter             # <<<<<<<<<<<<<<
 *         except:
 *             transp.close()
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_t_9);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_9;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L12_resume_from_yield:;
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        __pyx_t_9 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_9);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1601, __pyx_L4_error)
      } else {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 1601, __pyx_L4_error)
        }
      }

      /* "uvloop/loop.pyx":1598
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
    }
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1602
 *             transp._init_protocol()
 *             await waiter
 *         except:             # <<<<<<<<<<<<<<
 *             transp.close()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.Loop.connect_read_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(2, 1602, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);

      /* "uvloop/loop.pyx":1603
 *             await waiter
 *         except:
 *             transp.close()             # <<<<<<<<<<<<<<
 *             raise
 *         return transp, proto
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_transp), __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1603, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_10) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1603, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1603, __pyx_L6_except_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1604
 *         except:
 *             transp.close()
 *             raise             # <<<<<<<<<<<<<<
 *         return transp, proto
 * 
 */
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
      __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; 
      __PYX_ERR(2, 1604, __pyx_L6_except_error)
    }
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":1598
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
    goto __pyx_L1_error;
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":1605
 *             transp.close()
 *             raise
 *         return transp, proto             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_proto);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1588
 * 
 *     @aio_coroutine
 *     async def connect_read_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ReadUnixTransport transp
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("connect_read_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_95generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1608
 * 
 *     @aio_coroutine
 *     async def connect_write_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             WriteUnixTransport transp
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_94connect_write_pipe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_94connect_write_pipe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_proto_factory = 0;
  PyObject *__pyx_v_pipe = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connect_write_pipe (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_proto_factory,&__pyx_n_s_pipe,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_proto_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pipe)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("connect_write_pipe", 1, 2, 2, 1); __PYX_ERR(2, 1608, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "connect_write_pipe") < 0)) __PYX_ERR(2, 1608, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_proto_factory = values[0];
    __pyx_v_pipe = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("connect_write_pipe", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1608, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.connect_write_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_93connect_write_pipe(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_proto_factory, __pyx_v_pipe);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_93connect_write_pipe(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_proto_factory, PyObject *__pyx_v_pipe) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connect_write_pipe", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_proto_factory = __pyx_v_proto_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __pyx_cur_scope->__pyx_v_pipe = __pyx_v_pipe;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pipe);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pipe);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_95generator7, (PyObject *) __pyx_cur_scope, __pyx_n_s_connect_write_pipe, __pyx_n_s_Loop_connect_write_pipe); if (unlikely(!gen)) __PYX_ERR(2, 1608, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.connect_write_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_95generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L12_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1608, __pyx_L1_error)

  /* "uvloop/loop.pyx":1611
 *         cdef:
 *             WriteUnixTransport transp
 *             int fileno = os_dup(pipe.fileno())             # <<<<<<<<<<<<<<
 * 
 *         waiter = self._new_future()
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pipe, __pyx_n_s_fileno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1611, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_cur_scope->__pyx_v_fileno = __pyx_t_6;

  /* "uvloop/loop.pyx":1613
 *             int fileno = os_dup(pipe.fileno())
 * 
 *         waiter = self._new_future()             # <<<<<<<<<<<<<<
 *         proto = proto_factory()
 *         transp = WriteUnixTransport.new(self, proto, None, waiter)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_waiter = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1614
 * 
 *         waiter = self._new_future()
 *         proto = proto_factory()             # <<<<<<<<<<<<<<
 *         transp = WriteUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto_factory);
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_proto_factory; __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1614, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1614, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_proto = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1615
 *         waiter = self._new_future()
 *         proto = proto_factory()
 *         transp = WriteUnixTransport.new(self, proto, None, waiter)             # <<<<<<<<<<<<<<
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_18WriteUnixTransport_new(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_proto, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_cur_scope->__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_transp = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1616
 *         proto = proto_factory()
 *         transp = WriteUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)             # <<<<<<<<<<<<<<
 *         transp._attach_fileobj(pipe)
 *         try:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._add_extra_info(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_transp), __pyx_n_u_pipe, __pyx_cur_scope->__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1617
 *         transp = WriteUnixTransport.new(self, proto, None, waiter)
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)             # <<<<<<<<<<<<<<
 *         try:
 *             transp.open(fileno)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_transp), __pyx_cur_scope->__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1618
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    /*try:*/ {

      /* "uvloop/loop.pyx":1619
 *         transp._attach_fileobj(pipe)
 *         try:
 *             transp.open(fileno)             # <<<<<<<<<<<<<<
 *             transp._init_protocol()
 *             await waiter
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_cur_scope->__pyx_v_transp, __pyx_cur_scope->__pyx_v_fileno); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1619, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1620
 *         try:
 *             transp.open(fileno)
 *             transp._init_protocol()             # <<<<<<<<<<<<<<
 *             await waiter
 *         except:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_cur_scope->__pyx_v_transp->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_transp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1620, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/loop.pyx":1621
 *             transp.open(fileno)
 *             transp._init_protocol()
 *             await waiter             # <<<<<<<<<<<<<<
 *         except:
 *             transp.close()
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_t_9);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_9;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L12_resume_from_yield:;
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        __pyx_t_9 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_9);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1621, __pyx_L4_error)
      } else {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 1621, __pyx_L4_error)
        }
      }

      /* "uvloop/loop.pyx":1618
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
    }
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1622
 *             transp._init_protocol()
 *             await waiter
 *         except:             # <<<<<<<<<<<<<<
 *             transp.close()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.Loop.connect_write_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(2, 1622, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);

      /* "uvloop/loop.pyx":1623
 *             await waiter
 *         except:
 *             transp.close()             # <<<<<<<<<<<<<<
 *             raise
 *         return transp, proto
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_transp), __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1623, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_10) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1623, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1623, __pyx_L6_except_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1624
 *         except:
 *             transp.close()
 *             raise             # <<<<<<<<<<<<<<
 *         return transp, proto
 * 
 */
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
      __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; 
      __PYX_ERR(2, 1624, __pyx_L6_except_error)
    }
    __pyx_L6_except_error:;

    /* "uvloop/loop.pyx":1618
 *         transp._add_extra_info('pipe', pipe)
 *         transp._attach_fileobj(pipe)
 *         try:             # <<<<<<<<<<<<<<
 *             transp.open(fileno)
 *             transp._init_protocol()
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
    goto __pyx_L1_error;
    __pyx_L11_try_end:;
  }

  /* "uvloop/loop.pyx":1625
 *             transp.close()
 *             raise
 *         return transp, proto             # <<<<<<<<<<<<<<
 * 
 *     def add_signal_handler(self, sig, callback, *args):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_transp));
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_proto);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1608
 * 
 *     @aio_coroutine
 *     async def connect_write_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             WriteUnixTransport transp
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("connect_write_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1627
 *         return transp, proto
 * 
 *     def add_signal_handler(self, sig, callback, *args):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle h
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_97add_signal_handler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_97add_signal_handler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sig = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_signal_handler (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_RefNannyFinishContext();
      return NULL;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sig,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sig)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_signal_handler", 0, 2, 2, 1); __PYX_ERR(2, 1627, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "add_signal_handler") < 0)) __PYX_ERR(2, 1627, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sig = values[0];
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_signal_handler", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1627, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("uvloop.loop.Loop.add_signal_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_96add_signal_handler(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_sig, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_96add_signal_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h = 0;
  struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_uvs = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  char const *__pyx_t_19;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  __Pyx_RefNannySetupContext("add_signal_handler", 0);

  /* "uvloop/loop.pyx":1632
 *             UVSignal uvs
 * 
 *         if (aio_iscoroutine(callback)             # <<<<<<<<<<<<<<
 *                 or aio_iscoroutinefunction(callback)):
 *             raise TypeError("coroutines cannot be used "
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_iscoroutine);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_aio_iscoroutine; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_callback);
    __Pyx_GIVEREF(__pyx_v_callback);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }

  /* "uvloop/loop.pyx":1633
 * 
 *         if (aio_iscoroutine(callback)
 *                 or aio_iscoroutinefunction(callback)):             # <<<<<<<<<<<<<<
 *             raise TypeError("coroutines cannot be used "
 *                             "with add_signal_handler()")
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_iscoroutinefunction);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_aio_iscoroutinefunction; __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_v_callback);
    __Pyx_GIVEREF(__pyx_v_callback);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_callback);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;

  /* "uvloop/loop.pyx":1632
 *             UVSignal uvs
 * 
 *         if (aio_iscoroutine(callback)             # <<<<<<<<<<<<<<
 *                 or aio_iscoroutinefunction(callback)):
 *             raise TypeError("coroutines cannot be used "
 */
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1634
 *         if (aio_iscoroutine(callback)
 *                 or aio_iscoroutinefunction(callback)):
 *             raise TypeError("coroutines cannot be used "             # <<<<<<<<<<<<<<
 *                             "with add_signal_handler()")
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1634, __pyx_L1_error)

    /* "uvloop/loop.pyx":1632
 *             UVSignal uvs
 * 
 *         if (aio_iscoroutine(callback)             # <<<<<<<<<<<<<<
 *                 or aio_iscoroutinefunction(callback)):
 *             raise TypeError("coroutines cannot be used "
 */
  }

  /* "uvloop/loop.pyx":1637
 *                             "with add_signal_handler()")
 * 
 *         self._check_signal(sig)             # <<<<<<<<<<<<<<
 *         self._check_closed()
 * 
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__check_signal(__pyx_v_self, __pyx_v_sig); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1638
 * 
 *         self._check_signal(sig)
 *         self._check_closed()             # <<<<<<<<<<<<<<
 * 
 *         if sig in self._signal_handlers:
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_4Loop__check_closed(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1640
 *         self._check_closed()
 * 
 *         if sig in self._signal_handlers:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 assert isinstance(self._signal_handlers[sig], UVSignal)
 */
  if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1640, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_sig, __pyx_v_self->_signal_handlers, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1640, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "uvloop/loop.pyx":1643
 *             IF DEBUG:
 *                 assert isinstance(self._signal_handlers[sig], UVSignal)
 *             uvs = self._signal_handlers[sig]             # <<<<<<<<<<<<<<
 *             try:
 *                 uvs.stop()
 */
    if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(2, 1643, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->_signal_handlers, __pyx_v_sig); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1643, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_UVSignal))))) __PYX_ERR(2, 1643, __pyx_L1_error)
    __pyx_v_uvs = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1644
 *                 assert isinstance(self._signal_handlers[sig], UVSignal)
 *             uvs = self._signal_handlers[sig]
 *             try:             # <<<<<<<<<<<<<<
 *                 uvs.stop()
 *             finally:
 */
    /*try:*/ {

      /* "uvloop/loop.pyx":1645
 *             uvs = self._signal_handlers[sig]
 *             try:
 *                 uvs.stop()             # <<<<<<<<<<<<<<
 *             finally:
 *                 uvs._close()
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->stop(__pyx_v_uvs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1645, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "uvloop/loop.pyx":1647
 *                 uvs.stop()
 *             finally:
 *                 uvs._close()             # <<<<<<<<<<<<<<
 * 
 *         h = new_Handle(self, callback, args)
 */
    /*finally:*/ {
      /*normal exit:*/{
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_uvs)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1647, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L9;
      }
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __pyx_L8_error:;
        __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_15);
        __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
        {
          __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_uvs)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1647, __pyx_L11_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_PyThreadState_assign
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        }
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
        __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
        goto __pyx_L1_error;
        __pyx_L11_error:;
        __Pyx_PyThreadState_assign
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
        goto __pyx_L1_error;
      }
      __pyx_L9:;
    }

    /* "uvloop/loop.pyx":1640
 *         self._check_closed()
 * 
 *         if sig in self._signal_handlers:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 assert isinstance(self._signal_handlers[sig], UVSignal)
 */
  }

  /* "uvloop/loop.pyx":1649
 *                 uvs._close()
 * 
 *         h = new_Handle(self, callback, args)             # <<<<<<<<<<<<<<
 *         uvs = UVSignal.new(self, h, sig)
 * 
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_new_Handle(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(2, 1649, __pyx_L1_error)
  __pyx_v_h = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1650
 * 
 *         h = new_Handle(self, callback, args)
 *         uvs = UVSignal.new(self, h, sig)             # <<<<<<<<<<<<<<
 * 
 *         self._signal_handlers[sig] = uvs
 */
  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_sig); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1650, __pyx_L1_error)
  __pyx_t_2 = ((PyObject *)__pyx_f_6uvloop_4loop_8UVSignal_new(__pyx_v_self, __pyx_v_h, __pyx_t_8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XDECREF_SET(__pyx_v_uvs, ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_2));
  __pyx_t_2 = 0;

  /* "uvloop/loop.pyx":1652
 *         uvs = UVSignal.new(self, h, sig)
 * 
 *         self._signal_handlers[sig] = uvs             # <<<<<<<<<<<<<<
 * 
 *         if sig == uv.SIGINT:
 */
  if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(2, 1652, __pyx_L1_error)
  }
  if (unlikely(PyDict_SetItem(__pyx_v_self->_signal_handlers, __pyx_v_sig, ((PyObject *)__pyx_v_uvs)) < 0)) __PYX_ERR(2, 1652, __pyx_L1_error)

  /* "uvloop/loop.pyx":1654
 *         self._signal_handlers[sig] = uvs
 * 
 *         if sig == uv.SIGINT:             # <<<<<<<<<<<<<<
 *             # Needed for __signal_handler_sigint
 *             self._custom_sigint = 1
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(SIGINT); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_sig, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {

    /* "uvloop/loop.pyx":1656
 *         if sig == uv.SIGINT:
 *             # Needed for __signal_handler_sigint
 *             self._custom_sigint = 1             # <<<<<<<<<<<<<<
 *             return
 *         if sig == uv.SIGHUP:
 */
    __pyx_v_self->_custom_sigint = 1;

    /* "uvloop/loop.pyx":1657
 *             # Needed for __signal_handler_sigint
 *             self._custom_sigint = 1
 *             return             # <<<<<<<<<<<<<<
 *         if sig == uv.SIGHUP:
 *             # loop._on_sigint and loop._on_sighup will handle
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1654
 *         self._signal_handlers[sig] = uvs
 * 
 *         if sig == uv.SIGINT:             # <<<<<<<<<<<<<<
 *             # Needed for __signal_handler_sigint
 *             self._custom_sigint = 1
 */
  }

  /* "uvloop/loop.pyx":1658
 *             self._custom_sigint = 1
 *             return
 *         if sig == uv.SIGHUP:             # <<<<<<<<<<<<<<
 *             # loop._on_sigint and loop._on_sighup will handle
 *             # any signals installed by user
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(SIGHUP); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_sig, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "uvloop/loop.pyx":1661
 *             # loop._on_sigint and loop._on_sighup will handle
 *             # any signals installed by user
 *             return             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1658
 *             self._custom_sigint = 1
 *             return
 *         if sig == uv.SIGHUP:             # <<<<<<<<<<<<<<
 *             # loop._on_sigint and loop._on_sighup will handle
 *             # any signals installed by user
 */
  }

  /* "uvloop/loop.pyx":1663
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             uvs.start()
 *         except OSError as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13);
    __Pyx_XGOTREF(__pyx_t_15);
    __Pyx_XGOTREF(__pyx_t_14);
    __Pyx_XGOTREF(__pyx_t_13);
    /*try:*/ {

      /* "uvloop/loop.pyx":1664
 * 
 *         try:
 *             uvs.start()             # <<<<<<<<<<<<<<
 *         except OSError as exc:
 *             del self._signal_handlers[sig]
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->start(__pyx_v_uvs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1664, __pyx_L14_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/loop.pyx":1663
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             uvs.start()
 *         except OSError as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    goto __pyx_L21_try_end;
    __pyx_L14_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/loop.pyx":1665
 *         try:
 *             uvs.start()
 *         except OSError as exc:             # <<<<<<<<<<<<<<
 *             del self._signal_handlers[sig]
 *             if exc.errno == errno.EINVAL:
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OSError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("uvloop.loop.Loop.add_signal_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(2, 1665, __pyx_L16_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_exc = __pyx_t_3;
      /*try:*/ {

        /* "uvloop/loop.pyx":1666
 *             uvs.start()
 *         except OSError as exc:
 *             del self._signal_handlers[sig]             # <<<<<<<<<<<<<<
 *             if exc.errno == errno.EINVAL:
 *                 raise RuntimeError('sig {} cannot be caught'.format(sig))
 */
        if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(2, 1666, __pyx_L27_error)
        }
        if (unlikely(PyDict_DelItem(__pyx_v_self->_signal_handlers, __pyx_v_sig) < 0)) __PYX_ERR(2, 1666, __pyx_L27_error)

        /* "uvloop/loop.pyx":1667
 *         except OSError as exc:
 *             del self._signal_handlers[sig]
 *             if exc.errno == errno.EINVAL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('sig {} cannot be caught'.format(sig))
 *             else:
 */
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_n_s_errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1667, __pyx_L27_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_16 = __Pyx_PyInt_From_int(EINVAL); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1667, __pyx_L27_error)
        __Pyx_GOTREF(__pyx_t_16);
        __pyx_t_17 = PyObject_RichCompare(__pyx_t_5, __pyx_t_16, Py_EQ); __Pyx_XGOTREF(__pyx_t_17); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1667, __pyx_L27_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 1667, __pyx_L27_error)
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (__pyx_t_6) {

          /* "uvloop/loop.pyx":1668
 *             del self._signal_handlers[sig]
 *             if exc.errno == errno.EINVAL:
 *                 raise RuntimeError('sig {} cannot be caught'.format(sig))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise
 */
          __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_sig_cannot_be_caught, __pyx_n_s_format); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1668, __pyx_L27_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_16))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_16);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_16, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_17 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_v_sig); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1668, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_17);
          } else {
            __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 1668, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_v_sig);
            __Pyx_GIVEREF(__pyx_v_sig);
            PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_v_sig);
            __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_18, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1668, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_17);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          }
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1668, __pyx_L27_error)
          __Pyx_GOTREF(__pyx_t_16);
          __Pyx_GIVEREF(__pyx_t_17);
          PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_17);
          __pyx_t_17 = 0;
          __pyx_t_17 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_16, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 1668, __pyx_L27_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_Raise(__pyx_t_17, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          __PYX_ERR(2, 1668, __pyx_L27_error)

          /* "uvloop/loop.pyx":1667
 *         except OSError as exc:
 *             del self._signal_handlers[sig]
 *             if exc.errno == errno.EINVAL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('sig {} cannot be caught'.format(sig))
 *             else:
 */
        }

        /* "uvloop/loop.pyx":1670
 *                 raise RuntimeError('sig {} cannot be caught'.format(sig))
 *             else:
 *                 raise             # <<<<<<<<<<<<<<
 * 
 *     def remove_signal_handler(self, sig):
 */
        /*else*/ {
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_3);
          __Pyx_XGIVEREF(__pyx_t_4);
          __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
          __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
          __PYX_ERR(2, 1670, __pyx_L27_error)
        }
      }

      /* "uvloop/loop.pyx":1665
 *         try:
 *             uvs.start()
 *         except OSError as exc:             # <<<<<<<<<<<<<<
 *             del self._signal_handlers[sig]
 *             if exc.errno == errno.EINVAL:
 */
      /*finally:*/ {
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L27_error:;
          __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_10);
          __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_19;
          goto __pyx_L16_except_error;
        }
      }
    }
    goto __pyx_L16_except_error;
    __pyx_L16_except_error:;

    /* "uvloop/loop.pyx":1663
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             uvs.start()
 *         except OSError as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_15);
    __Pyx_XGIVEREF(__pyx_t_14);
    __Pyx_XGIVEREF(__pyx_t_13);
    __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
    goto __pyx_L1_error;
    __pyx_L21_try_end:;
  }

  /* "uvloop/loop.pyx":1627
 *         return transp, proto
 * 
 *     def add_signal_handler(self, sig, callback, *args):             # <<<<<<<<<<<<<<
 *         cdef:
 *             Handle h
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("uvloop.loop.Loop.add_signal_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XDECREF((PyObject *)__pyx_v_uvs);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1672
 *                 raise
 * 
 *     def remove_signal_handler(self, sig):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVSignal uvs
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_99remove_signal_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_sig); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_99remove_signal_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_sig) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("remove_signal_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_98remove_signal_handler(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), ((PyObject *)__pyx_v_sig));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_98remove_signal_handler(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_sig) {
  struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_uvs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  __Pyx_RefNannySetupContext("remove_signal_handler", 0);

  /* "uvloop/loop.pyx":1676
 *             UVSignal uvs
 * 
 *         self._check_signal(sig)             # <<<<<<<<<<<<<<
 * 
 *         if sig not in self._signal_handlers:
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__check_signal(__pyx_v_self, __pyx_v_sig); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1678
 *         self._check_signal(sig)
 * 
 *         if sig not in self._signal_handlers:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  if (unlikely(__pyx_v_self->_signal_handlers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1678, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_sig, __pyx_v_self->_signal_handlers, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1678, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1679
 * 
 *         if sig not in self._signal_handlers:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         if sig == uv.SIGINT:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1678
 *         self._check_signal(sig)
 * 
 *         if sig not in self._signal_handlers:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "uvloop/loop.pyx":1681
 *             return False
 * 
 *         if sig == uv.SIGINT:             # <<<<<<<<<<<<<<
 *             self._custom_sigint = 0
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(SIGINT); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_sig, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 1681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {

    /* "uvloop/loop.pyx":1682
 * 
 *         if sig == uv.SIGINT:
 *             self._custom_sigint = 0             # <<<<<<<<<<<<<<
 * 
 *         uvs = <UVSignal>(self._signal_handlers.pop(sig))
 */
    __pyx_v_self->_custom_sigint = 0;

    /* "uvloop/loop.pyx":1681
 *             return False
 * 
 *         if sig == uv.SIGINT:             # <<<<<<<<<<<<<<
 *             self._custom_sigint = 0
 * 
 */
  }

  /* "uvloop/loop.pyx":1684
 *             self._custom_sigint = 0
 * 
 *         uvs = <UVSignal>(self._signal_handlers.pop(sig))             # <<<<<<<<<<<<<<
 *         try:
 *             uvs.stop()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_signal_handlers, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sig); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_v_sig);
    __Pyx_GIVEREF(__pyx_v_sig);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_sig);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_uvs = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1685
 * 
 *         uvs = <UVSignal>(self._signal_handlers.pop(sig))
 *         try:             # <<<<<<<<<<<<<<
 *             uvs.stop()
 *         finally:
 */
  /*try:*/ {

    /* "uvloop/loop.pyx":1686
 *         uvs = <UVSignal>(self._signal_handlers.pop(sig))
 *         try:
 *             uvs.stop()             # <<<<<<<<<<<<<<
 *         finally:
 *             uvs._close()
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->stop(__pyx_v_uvs); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1686, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "uvloop/loop.pyx":1688
 *             uvs.stop()
 *         finally:
 *             uvs._close()             # <<<<<<<<<<<<<<
 * 
 *         return True
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_uvs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1688, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L6_error:;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_uvs->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_uvs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1688, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
      __pyx_L9_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L7:;
  }

  /* "uvloop/loop.pyx":1690
 *             uvs._close()
 * 
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1672
 *                 raise
 * 
 *     def remove_signal_handler(self, sig):             # <<<<<<<<<<<<<<
 *         cdef:
 *             UVSignal uvs
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.Loop.remove_signal_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_uvs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_102generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_101create_datagram_endpoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_101create_datagram_endpoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_protocol_factory = 0;
  PyObject *__pyx_v_local_addr = 0;
  PyObject *__pyx_v_remote_addr = 0;
  PyObject *__pyx_v_family = 0;
  PyObject *__pyx_v_proto = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_reuse_address = 0;
  PyObject *__pyx_v_reuse_port = 0;
  PyObject *__pyx_v_allow_broadcast = 0;
  PyObject *__pyx_v_sock = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_datagram_endpoint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol_factory,&__pyx_n_s_local_addr,&__pyx_n_s_remote_addr,&__pyx_n_s_family,&__pyx_n_s_proto,&__pyx_n_s_flags,&__pyx_n_s_reuse_address,&__pyx_n_s_reuse_port,&__pyx_n_s_allow_broadcast,&__pyx_n_s_sock,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};

    /* "uvloop/loop.pyx":1694
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,
 *                                        local_addr=None, remote_addr=None, *,             # <<<<<<<<<<<<<<
 *                                        family=0, proto=0, flags=0,
 *                                        reuse_address=None, reuse_port=None,
 */
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_int_0);
    values[5] = ((PyObject *)__pyx_int_0);

    /* "uvloop/loop.pyx":1696
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 *                                        reuse_address=None, reuse_port=None,             # <<<<<<<<<<<<<<
 *                                        allow_broadcast=None, sock=None):
 * 
 */
    values[6] = ((PyObject *)Py_None);
    values[7] = ((PyObject *)Py_None);

    /* "uvloop/loop.pyx":1697
 *                                        family=0, proto=0, flags=0,
 *                                        reuse_address=None, reuse_port=None,
 *                                        allow_broadcast=None, sock=None):             # <<<<<<<<<<<<<<
 * 
 *         cdef:
 */
    values[8] = ((PyObject *)Py_None);
    values[9] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_protocol_factory)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_local_addr);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_remote_addr);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (kw_args > 0 && likely(kw_args <= 7)) {
        Py_ssize_t index;
        for (index = 3; index < 10 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_datagram_endpoint") < 0)) __PYX_ERR(2, 1693, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_protocol_factory = values[0];
    __pyx_v_local_addr = values[1];
    __pyx_v_remote_addr = values[2];
    __pyx_v_family = values[3];
    __pyx_v_proto = values[4];
    __pyx_v_flags = values[5];
    __pyx_v_reuse_address = values[6];
    __pyx_v_reuse_port = values[7];
    __pyx_v_allow_broadcast = values[8];
    __pyx_v_sock = values[9];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("create_datagram_endpoint", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1693, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_datagram_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_100create_datagram_endpoint(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self), __pyx_v_protocol_factory, __pyx_v_local_addr, __pyx_v_remote_addr, __pyx_v_family, __pyx_v_proto, __pyx_v_flags, __pyx_v_reuse_address, __pyx_v_reuse_port, __pyx_v_allow_broadcast, __pyx_v_sock);

  /* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_4Loop_24create_datagram_endpoint_2generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/loop.pyx":1714
 *                             allow_broadcast=allow_broadcast)
 *                 problems = ', '.join(
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'socket modifier keyword arguments can not be used '
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_24create_datagram_endpoint_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_15_genexpr(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_15_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_24create_datagram_endpoint_2generator12, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_create_datagram_endpoint_locals); if (unlikely(!gen)) __PYX_ERR(2, 1714, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_datagram_endpoint.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_24create_datagram_endpoint_2generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1714, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(2, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_opts)) { __Pyx_RaiseClosureNameError("opts"); __PYX_ERR(2, 1714, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_opts == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "items");
    __PYX_ERR(2, 1714, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_opts, 1, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(2, 1714, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_v);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_v, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_v); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 1714, __pyx_L1_error)
    if (__pyx_t_8) {
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__76, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 1714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_k);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_k);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_k);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_v);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_v);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_v);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 1714, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_100create_datagram_endpoint(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self, PyObject *__pyx_v_protocol_factory, PyObject *__pyx_v_local_addr, PyObject *__pyx_v_remote_addr, PyObject *__pyx_v_family, PyObject *__pyx_v_proto, PyObject *__pyx_v_flags, PyObject *__pyx_v_reuse_address, PyObject *__pyx_v_reuse_port, PyObject *__pyx_v_allow_broadcast, PyObject *__pyx_v_sock) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create_datagram_endpoint", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_protocol_factory = __pyx_v_protocol_factory;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_cur_scope->__pyx_v_local_addr = __pyx_v_local_addr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_local_addr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_local_addr);
  __pyx_cur_scope->__pyx_v_remote_addr = __pyx_v_remote_addr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_remote_addr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_remote_addr);
  __pyx_cur_scope->__pyx_v_family = __pyx_v_family;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_family);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_family);
  __pyx_cur_scope->__pyx_v_proto = __pyx_v_proto;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_proto);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_proto);
  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_flags);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flags);
  __pyx_cur_scope->__pyx_v_reuse_address = __pyx_v_reuse_address;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_reuse_address);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_reuse_address);
  __pyx_cur_scope->__pyx_v_reuse_port = __pyx_v_reuse_port;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_reuse_port);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_reuse_port);
  __pyx_cur_scope->__pyx_v_allow_broadcast = __pyx_v_allow_broadcast;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_allow_broadcast);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_allow_broadcast);
  __pyx_cur_scope->__pyx_v_sock = __pyx_v_sock;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sock);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_4Loop_102generator8, (PyObject *) __pyx_cur_scope, __pyx_n_s_create_datagram_endpoint, __pyx_n_s_Loop_create_datagram_endpoint); if (unlikely(!gen)) __PYX_ERR(2, 1693, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Loop.create_datagram_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_4Loop_102generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  struct addrinfo *__pyx_t_13;
  unsigned int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_t_18;
  char const *__pyx_t_19;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  PyObject *__pyx_t_25 = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L23_resume_from_yield;
    case 2: goto __pyx_L30_resume_from_yield;
    case 3: goto __pyx_L66_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1693, __pyx_L1_error)

  /* "uvloop/loop.pyx":1700
 * 
 *         cdef:
 *             UDPTransport udp = None             # <<<<<<<<<<<<<<
 *             system.addrinfo * lai
 *             system.addrinfo * rai
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_cur_scope->__pyx_v_udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)Py_None);

  /* "uvloop/loop.pyx":1704
 *             system.addrinfo * rai
 * 
 *         if sock is not None:             # <<<<<<<<<<<<<<
 *             if (local_addr or remote_addr or
 *                     family or proto or flags or
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_sock != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1705
 * 
 *         if sock is not None:
 *             if (local_addr or remote_addr or             # <<<<<<<<<<<<<<
 *                     family or proto or flags or
 *                     reuse_address or reuse_port or allow_broadcast):
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_local_addr); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1705, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_remote_addr); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1705, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }

    /* "uvloop/loop.pyx":1706
 *         if sock is not None:
 *             if (local_addr or remote_addr or
 *                     family or proto or flags or             # <<<<<<<<<<<<<<
 *                     reuse_address or reuse_port or allow_broadcast):
 *                 # show the problematic kwargs in exception msg
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_family); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1706, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_proto); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1706, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_flags); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1706, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }

    /* "uvloop/loop.pyx":1707
 *             if (local_addr or remote_addr or
 *                     family or proto or flags or
 *                     reuse_address or reuse_port or allow_broadcast):             # <<<<<<<<<<<<<<
 *                 # show the problematic kwargs in exception msg
 *                 opts = dict(local_addr=local_addr, remote_addr=remote_addr,
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_address); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1707, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1707, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_allow_broadcast); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1707, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_1;
    __pyx_L6_bool_binop_done:;

    /* "uvloop/loop.pyx":1705
 * 
 *         if sock is not None:
 *             if (local_addr or remote_addr or             # <<<<<<<<<<<<<<
 *                     family or proto or flags or
 *                     reuse_address or reuse_port or allow_broadcast):
 */
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":1709
 *                     reuse_address or reuse_port or allow_broadcast):
 *                 # show the problematic kwargs in exception msg
 *                 opts = dict(local_addr=local_addr, remote_addr=remote_addr,             # <<<<<<<<<<<<<<
 *                             family=family, proto=proto, flags=flags,
 *                             reuse_address=reuse_address, reuse_port=reuse_port,
 */
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1709, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_local_addr, __pyx_cur_scope->__pyx_v_local_addr) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remote_addr, __pyx_cur_scope->__pyx_v_remote_addr) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)

      /* "uvloop/loop.pyx":1710
 *                 # show the problematic kwargs in exception msg
 *                 opts = dict(local_addr=local_addr, remote_addr=remote_addr,
 *                             family=family, proto=proto, flags=flags,             # <<<<<<<<<<<<<<
 *                             reuse_address=reuse_address, reuse_port=reuse_port,
 *                             allow_broadcast=allow_broadcast)
 */
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_family, __pyx_cur_scope->__pyx_v_family) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_proto, __pyx_cur_scope->__pyx_v_proto) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flags, __pyx_cur_scope->__pyx_v_flags) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)

      /* "uvloop/loop.pyx":1711
 *                 opts = dict(local_addr=local_addr, remote_addr=remote_addr,
 *                             family=family, proto=proto, flags=flags,
 *                             reuse_address=reuse_address, reuse_port=reuse_port,             # <<<<<<<<<<<<<<
 *                             allow_broadcast=allow_broadcast)
 *                 problems = ', '.join(
 */
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reuse_address, __pyx_cur_scope->__pyx_v_reuse_address) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reuse_port, __pyx_cur_scope->__pyx_v_reuse_port) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)

      /* "uvloop/loop.pyx":1712
 *                             family=family, proto=proto, flags=flags,
 *                             reuse_address=reuse_address, reuse_port=reuse_port,
 *                             allow_broadcast=allow_broadcast)             # <<<<<<<<<<<<<<
 *                 problems = ', '.join(
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)
 */
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allow_broadcast, __pyx_cur_scope->__pyx_v_allow_broadcast) < 0) __PYX_ERR(2, 1709, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_v_opts = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":1714
 *                             allow_broadcast=allow_broadcast)
 *                 problems = ', '.join(
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'socket modifier keyword arguments can not be used '
 */
      __pyx_t_3 = __pyx_pf_6uvloop_4loop_4Loop_24create_datagram_endpoint_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "uvloop/loop.pyx":1713
 *                             reuse_address=reuse_address, reuse_port=reuse_port,
 *                             allow_broadcast=allow_broadcast)
 *                 problems = ', '.join(             # <<<<<<<<<<<<<<
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)
 *                 raise ValueError(
 */
      __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1713, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyUnicode_Join(__pyx_kp_u__42, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1713, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_v_problems = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":1717
 *                 raise ValueError(
 *                     'socket modifier keyword arguments can not be used '
 *                     'when sock is specified. ({})'.format(problems))             # <<<<<<<<<<<<<<
 *             sock.setblocking(False)
 *             udp = UDPTransport.__new__(UDPTransport)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_socket_modifier_keyword_argument, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_problems); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_problems);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_problems);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_cur_scope->__pyx_v_problems);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/loop.pyx":1715
 *                 problems = ', '.join(
 *                     '{}={}'.format(k, v) for k, v in opts.items() if v)
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'socket modifier keyword arguments can not be used '
 *                     'when sock is specified. ({})'.format(problems))
 */
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(2, 1715, __pyx_L1_error)

      /* "uvloop/loop.pyx":1705
 * 
 *         if sock is not None:
 *             if (local_addr or remote_addr or             # <<<<<<<<<<<<<<
 *                     family or proto or flags or
 *                     reuse_address or reuse_port or allow_broadcast):
 */
    }

    /* "uvloop/loop.pyx":1718
 *                     'socket modifier keyword arguments can not be used '
 *                     'when sock is specified. ({})'.format(problems))
 *             sock.setblocking(False)             # <<<<<<<<<<<<<<
 *             udp = UDPTransport.__new__(UDPTransport)
 *             udp._init(self, uv.AF_UNSPEC)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_setblocking); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1719
 *                     'when sock is specified. ({})'.format(problems))
 *             sock.setblocking(False)
 *             udp = UDPTransport.__new__(UDPTransport)             # <<<<<<<<<<<<<<
 *             udp._init(self, uv.AF_UNSPEC)
 *             udp._open(sock.family, sock.fileno())
 */
    __pyx_t_4 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(2, 1719, __pyx_L1_error)
    __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_udp, ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_4));
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1720
 *             sock.setblocking(False)
 *             udp = UDPTransport.__new__(UDPTransport)
 *             udp._init(self, uv.AF_UNSPEC)             # <<<<<<<<<<<<<<
 *             udp._open(sock.family, sock.fileno())
 *             udp._attach_fileobj(sock)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, AF_UNSPEC); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1721
 *             udp = UDPTransport.__new__(UDPTransport)
 *             udp._init(self, uv.AF_UNSPEC)
 *             udp._open(sock.family, sock.fileno())             # <<<<<<<<<<<<<<
 *             udp._attach_fileobj(sock)
 *         else:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_family); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1721, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sock, __pyx_n_s_fileno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1721, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1721, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1721, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_open(__pyx_cur_scope->__pyx_v_udp, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1722
 *             udp._init(self, uv.AF_UNSPEC)
 *             udp._open(sock.family, sock.fileno())
 *             udp._attach_fileobj(sock)             # <<<<<<<<<<<<<<
 *         else:
 *             reuse_address = bool(reuse_address)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._attach_fileobj(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp), __pyx_cur_scope->__pyx_v_sock); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1704
 *             system.addrinfo * rai
 * 
 *         if sock is not None:             # <<<<<<<<<<<<<<
 *             if (local_addr or remote_addr or
 *                     family or proto or flags or
 */
    goto __pyx_L4;
  }

  /* "uvloop/loop.pyx":1724
 *             udp._attach_fileobj(sock)
 *         else:
 *             reuse_address = bool(reuse_address)             # <<<<<<<<<<<<<<
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_address); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1724, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_reuse_address);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_reuse_address, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1725
 *         else:
 *             reuse_address = bool(reuse_address)
 *             reuse_port = bool(reuse_port)             # <<<<<<<<<<<<<<
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1725, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_reuse_port);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_reuse_port, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1726
 *             reuse_address = bool(reuse_address)
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'reuse_port not supported by socket module')
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1726, __pyx_L1_error)
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L15_bool_binop_done;
    }
    __pyx_t_1 = ((!(__pyx_v_6uvloop_4loop_has_SO_REUSEPORT != 0)) != 0);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L15_bool_binop_done:;
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":1727
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'reuse_port not supported by socket module')
 * 
 */
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1727, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(2, 1727, __pyx_L1_error)

      /* "uvloop/loop.pyx":1726
 *             reuse_address = bool(reuse_address)
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'reuse_port not supported by socket module')
 */
    }

    /* "uvloop/loop.pyx":1730
 *                     'reuse_port not supported by socket module')
 * 
 *             lads = None             # <<<<<<<<<<<<<<
 *             if local_addr is not None:
 *                 if (not isinstance(local_addr, (tuple, list)) or
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_lads = Py_None;

    /* "uvloop/loop.pyx":1731
 * 
 *             lads = None
 *             if local_addr is not None:             # <<<<<<<<<<<<<<
 *                 if (not isinstance(local_addr, (tuple, list)) or
 *                         len(local_addr) != 2):
 */
    __pyx_t_2 = (__pyx_cur_scope->__pyx_v_local_addr != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/loop.pyx":1732
 *             lads = None
 *             if local_addr is not None:
 *                 if (not isinstance(local_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2):
 *                     raise TypeError(
 */
      __pyx_t_9 = PyTuple_Check(__pyx_cur_scope->__pyx_v_local_addr); 
      __pyx_t_10 = (__pyx_t_9 != 0);
      if (!__pyx_t_10) {
      } else {
        __pyx_t_2 = __pyx_t_10;
        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_10 = PyList_Check(__pyx_cur_scope->__pyx_v_local_addr); 
      __pyx_t_9 = (__pyx_t_10 != 0);
      __pyx_t_2 = __pyx_t_9;
      __pyx_L21_bool_binop_done:;
      __pyx_t_9 = ((!(__pyx_t_2 != 0)) != 0);
      if (!__pyx_t_9) {
      } else {
        __pyx_t_1 = __pyx_t_9;
        goto __pyx_L19_bool_binop_done;
      }

      /* "uvloop/loop.pyx":1733
 *             if local_addr is not None:
 *                 if (not isinstance(local_addr, (tuple, list)) or
 *                         len(local_addr) != 2):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'local_addr must be a tuple of (host, port)')
 */
      __pyx_t_11 = PyObject_Length(__pyx_cur_scope->__pyx_v_local_addr); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 1733, __pyx_L1_error)
      __pyx_t_9 = ((__pyx_t_11 != 2) != 0);
      __pyx_t_1 = __pyx_t_9;
      __pyx_L19_bool_binop_done:;

      /* "uvloop/loop.pyx":1732
 *             lads = None
 *             if local_addr is not None:
 *                 if (not isinstance(local_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2):
 *                     raise TypeError(
 */
      if (__pyx_t_1) {

        /* "uvloop/loop.pyx":1734
 *                 if (not isinstance(local_addr, (tuple, list)) or
 *                         len(local_addr) != 2):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'local_addr must be a tuple of (host, port)')
 *                 lads = await self._getaddrinfo(
 */
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(2, 1734, __pyx_L1_error)

        /* "uvloop/loop.pyx":1732
 *             lads = None
 *             if local_addr is not None:
 *                 if (not isinstance(local_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(local_addr) != 2):
 *                     raise TypeError(
 */
      }

      /* "uvloop/loop.pyx":1737
 *                         'local_addr must be a tuple of (host, port)')
 *                 lads = await self._getaddrinfo(
 *                     local_addr[0], local_addr[1],             # <<<<<<<<<<<<<<
 *                     family, uv.SOCK_DGRAM, proto, flags,
 *                     0)
 */
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_local_addr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_local_addr, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "uvloop/loop.pyx":1738
 *                 lads = await self._getaddrinfo(
 *                     local_addr[0], local_addr[1],
 *                     family, uv.SOCK_DGRAM, proto, flags,             # <<<<<<<<<<<<<<
 *                     0)
 * 
 */
      __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_family); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1738, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_proto); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1738, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1738, __pyx_L1_error)

      /* "uvloop/loop.pyx":1736
 *                     raise TypeError(
 *                         'local_addr must be a tuple of (host, port)')
 *                 lads = await self._getaddrinfo(             # <<<<<<<<<<<<<<
 *                     local_addr[0], local_addr[1],
 *                     family, uv.SOCK_DGRAM, proto, flags,
 */
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_t_4, __pyx_t_3, __pyx_t_8, SOCK_DGRAM, __pyx_t_7, __pyx_t_12, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L23_resume_from_yield:;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1736, __pyx_L1_error)
        __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6);
      } else {
        __pyx_t_6 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(2, 1736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_lads);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_lads, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;

      /* "uvloop/loop.pyx":1731
 * 
 *             lads = None
 *             if local_addr is not None:             # <<<<<<<<<<<<<<
 *                 if (not isinstance(local_addr, (tuple, list)) or
 *                         len(local_addr) != 2):
 */
    }

    /* "uvloop/loop.pyx":1741
 *                     0)
 * 
 *             rads = None             # <<<<<<<<<<<<<<
 *             if remote_addr is not None:
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_rads = Py_None;

    /* "uvloop/loop.pyx":1742
 * 
 *             rads = None
 *             if remote_addr is not None:             # <<<<<<<<<<<<<<
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 *                         len(remote_addr) != 2):
 */
    __pyx_t_1 = (__pyx_cur_scope->__pyx_v_remote_addr != Py_None);
    __pyx_t_9 = (__pyx_t_1 != 0);
    if (__pyx_t_9) {

      /* "uvloop/loop.pyx":1743
 *             rads = None
 *             if remote_addr is not None:
 *                 if (not isinstance(remote_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(remote_addr) != 2):
 *                     raise TypeError(
 */
      __pyx_t_2 = PyTuple_Check(__pyx_cur_scope->__pyx_v_remote_addr); 
      __pyx_t_10 = (__pyx_t_2 != 0);
      if (!__pyx_t_10) {
      } else {
        __pyx_t_1 = __pyx_t_10;
        goto __pyx_L28_bool_binop_done;
      }
      __pyx_t_10 = PyList_Check(__pyx_cur_scope->__pyx_v_remote_addr); 
      __pyx_t_2 = (__pyx_t_10 != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L28_bool_binop_done:;
      __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
      if (!__pyx_t_2) {
      } else {
        __pyx_t_9 = __pyx_t_2;
        goto __pyx_L26_bool_binop_done;
      }

      /* "uvloop/loop.pyx":1744
 *             if remote_addr is not None:
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 *                         len(remote_addr) != 2):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'remote_addr must be a tuple of (host, port)')
 */
      __pyx_t_11 = PyObject_Length(__pyx_cur_scope->__pyx_v_remote_addr); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 1744, __pyx_L1_error)
      __pyx_t_2 = ((__pyx_t_11 != 2) != 0);
      __pyx_t_9 = __pyx_t_2;
      __pyx_L26_bool_binop_done:;

      /* "uvloop/loop.pyx":1743
 *             rads = None
 *             if remote_addr is not None:
 *                 if (not isinstance(remote_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(remote_addr) != 2):
 *                     raise TypeError(
 */
      if (__pyx_t_9) {

        /* "uvloop/loop.pyx":1745
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 *                         len(remote_addr) != 2):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'remote_addr must be a tuple of (host, port)')
 *                 rads = await self._getaddrinfo(
 */
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1745, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(2, 1745, __pyx_L1_error)

        /* "uvloop/loop.pyx":1743
 *             rads = None
 *             if remote_addr is not None:
 *                 if (not isinstance(remote_addr, (tuple, list)) or             # <<<<<<<<<<<<<<
 *                         len(remote_addr) != 2):
 *                     raise TypeError(
 */
      }

      /* "uvloop/loop.pyx":1748
 *                         'remote_addr must be a tuple of (host, port)')
 *                 rads = await self._getaddrinfo(
 *                     remote_addr[0], remote_addr[1],             # <<<<<<<<<<<<<<
 *                     family, uv.SOCK_DGRAM, proto, flags,
 *                     0)
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_remote_addr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1748, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_remote_addr, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1748, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "uvloop/loop.pyx":1749
 *                 rads = await self._getaddrinfo(
 *                     remote_addr[0], remote_addr[1],
 *                     family, uv.SOCK_DGRAM, proto, flags,             # <<<<<<<<<<<<<<
 *                     0)
 * 
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_family); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1749, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_proto); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1749, __pyx_L1_error)
      __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1749, __pyx_L1_error)

      /* "uvloop/loop.pyx":1747
 *                     raise TypeError(
 *                         'remote_addr must be a tuple of (host, port)')
 *                 rads = await self._getaddrinfo(             # <<<<<<<<<<<<<<
 *                     remote_addr[0], remote_addr[1],
 *                     family, uv.SOCK_DGRAM, proto, flags,
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_getaddrinfo(__pyx_cur_scope->__pyx_v_self, __pyx_t_6, __pyx_t_3, __pyx_t_12, SOCK_DGRAM, __pyx_t_7, __pyx_t_8, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1747, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 2;
        return __pyx_r;
        __pyx_L30_resume_from_yield:;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1747, __pyx_L1_error)
        __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_4 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(2, 1747, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_rads);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_rads, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;

      /* "uvloop/loop.pyx":1742
 * 
 *             rads = None
 *             if remote_addr is not None:             # <<<<<<<<<<<<<<
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 *                         len(remote_addr) != 2):
 */
    }

    /* "uvloop/loop.pyx":1752
 *                     0)
 * 
 *             excs = []             # <<<<<<<<<<<<<<
 *             if lads is None:
 *                 if rads is not None:
 */
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_cur_scope->__pyx_v_excs = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "uvloop/loop.pyx":1753
 * 
 *             excs = []
 *             if lads is None:             # <<<<<<<<<<<<<<
 *                 if rads is not None:
 *                     udp = UDPTransport.__new__(UDPTransport)
 */
    __pyx_t_9 = (__pyx_cur_scope->__pyx_v_lads == Py_None);
    __pyx_t_2 = (__pyx_t_9 != 0);
    if (__pyx_t_2) {

      /* "uvloop/loop.pyx":1754
 *             excs = []
 *             if lads is None:
 *                 if rads is not None:             # <<<<<<<<<<<<<<
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     rai = (<AddrInfo>rads).data
 */
      __pyx_t_2 = (__pyx_cur_scope->__pyx_v_rads != Py_None);
      __pyx_t_9 = (__pyx_t_2 != 0);
      if (__pyx_t_9) {

        /* "uvloop/loop.pyx":1755
 *             if lads is None:
 *                 if rads is not None:
 *                     udp = UDPTransport.__new__(UDPTransport)             # <<<<<<<<<<<<<<
 *                     rai = (<AddrInfo>rads).data
 *                     udp._init(self, rai.ai_family)
 */
        __pyx_t_4 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1755, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(2, 1755, __pyx_L1_error)
        __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
        __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_udp, ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_4));
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1756
 *                 if rads is not None:
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     rai = (<AddrInfo>rads).data             # <<<<<<<<<<<<<<
 *                     udp._init(self, rai.ai_family)
 *                     udp._set_remote_address(rai.ai_addr[0])
 */
        __pyx_t_13 = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_cur_scope->__pyx_v_rads)->data;
        __pyx_cur_scope->__pyx_v_rai = __pyx_t_13;

        /* "uvloop/loop.pyx":1757
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     rai = (<AddrInfo>rads).data
 *                     udp._init(self, rai.ai_family)             # <<<<<<<<<<<<<<
 *                     udp._set_remote_address(rai.ai_addr[0])
 *                 else:
 */
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_rai->ai_family); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1757, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1758
 *                     rai = (<AddrInfo>rads).data
 *                     udp._init(self, rai.ai_family)
 *                     udp._set_remote_address(rai.ai_addr[0])             # <<<<<<<<<<<<<<
 *                 else:
 *                     if family not in (uv.AF_INET, uv.AF_INET6):
 */
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_set_remote_address(__pyx_cur_scope->__pyx_v_udp, (__pyx_cur_scope->__pyx_v_rai->ai_addr[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1758, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1754
 *             excs = []
 *             if lads is None:
 *                 if rads is not None:             # <<<<<<<<<<<<<<
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     rai = (<AddrInfo>rads).data
 */
        goto __pyx_L32;
      }

      /* "uvloop/loop.pyx":1760
 *                     udp._set_remote_address(rai.ai_addr[0])
 *                 else:
 *                     if family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *                         raise ValueError('unexpected address family')
 *                     udp = UDPTransport.__new__(UDPTransport)
 */
      /*else*/ {
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_family);
        __pyx_t_4 = __pyx_cur_scope->__pyx_v_family;
        __pyx_t_3 = __Pyx_PyInt_From_int(AF_INET); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (__pyx_t_2) {
        } else {
          __pyx_t_9 = __pyx_t_2;
          goto __pyx_L34_bool_binop_done;
        }
        __pyx_t_6 = __Pyx_PyInt_From_int(AF_INET6); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1760, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = __pyx_t_2;
        __pyx_L34_bool_binop_done:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_2 = (__pyx_t_9 != 0);
        if (__pyx_t_2) {

          /* "uvloop/loop.pyx":1761
 *                 else:
 *                     if family not in (uv.AF_INET, uv.AF_INET6):
 *                         raise ValueError('unexpected address family')             # <<<<<<<<<<<<<<
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     udp._init(self, family)
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1761, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(2, 1761, __pyx_L1_error)

          /* "uvloop/loop.pyx":1760
 *                     udp._set_remote_address(rai.ai_addr[0])
 *                 else:
 *                     if family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *                         raise ValueError('unexpected address family')
 *                     udp = UDPTransport.__new__(UDPTransport)
 */
        }

        /* "uvloop/loop.pyx":1762
 *                     if family not in (uv.AF_INET, uv.AF_INET6):
 *                         raise ValueError('unexpected address family')
 *                     udp = UDPTransport.__new__(UDPTransport)             # <<<<<<<<<<<<<<
 *                     udp._init(self, family)
 * 
 */
        __pyx_t_4 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1762, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(2, 1762, __pyx_L1_error)
        __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
        __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_udp, ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_4));
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1763
 *                         raise ValueError('unexpected address family')
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     udp._init(self, family)             # <<<<<<<<<<<<<<
 * 
 *                 if reuse_port:
 */
        __pyx_t_14 = __Pyx_PyInt_As_unsigned_int(__pyx_cur_scope->__pyx_v_family); if (unlikely((__pyx_t_14 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1763, __pyx_L1_error)
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1763, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_L32:;

      /* "uvloop/loop.pyx":1765
 *                     udp._init(self, family)
 * 
 *                 if reuse_port:             # <<<<<<<<<<<<<<
 *                     self._sock_set_reuseport(udp._fileno())
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1765, __pyx_L1_error)
      if (__pyx_t_2) {

        /* "uvloop/loop.pyx":1766
 * 
 *                 if reuse_port:
 *                     self._sock_set_reuseport(udp._fileno())             # <<<<<<<<<<<<<<
 * 
 *                 socket = udp._get_socket()
 */
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1766, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1766, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_set_reuseport(__pyx_cur_scope->__pyx_v_self, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1766, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1765
 *                     udp._init(self, family)
 * 
 *                 if reuse_port:             # <<<<<<<<<<<<<<
 *                     self._sock_set_reuseport(udp._fileno())
 * 
 */
      }

      /* "uvloop/loop.pyx":1768
 *                     self._sock_set_reuseport(udp._fileno())
 * 
 *                 socket = udp._get_socket()             # <<<<<<<<<<<<<<
 *                 socket.bind(('0.0.0.0', 0))
 *             else:
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1768, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_cur_scope->__pyx_v_socket = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "uvloop/loop.pyx":1769
 * 
 *                 socket = udp._get_socket()
 *                 socket.bind(('0.0.0.0', 0))             # <<<<<<<<<<<<<<
 *             else:
 *                 lai = (<AddrInfo>lads).data
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1769, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1769, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/loop.pyx":1753
 * 
 *             excs = []
 *             if lads is None:             # <<<<<<<<<<<<<<
 *                 if rads is not None:
 *                     udp = UDPTransport.__new__(UDPTransport)
 */
      goto __pyx_L31;
    }

    /* "uvloop/loop.pyx":1771
 *                 socket.bind(('0.0.0.0', 0))
 *             else:
 *                 lai = (<AddrInfo>lads).data             # <<<<<<<<<<<<<<
 *                 while lai is not NULL:
 *                     try:
 */
    /*else*/ {
      __pyx_t_13 = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_cur_scope->__pyx_v_lads)->data;
      __pyx_cur_scope->__pyx_v_lai = __pyx_t_13;

      /* "uvloop/loop.pyx":1772
 *             else:
 *                 lai = (<AddrInfo>lads).data
 *                 while lai is not NULL:             # <<<<<<<<<<<<<<
 *                     try:
 *                         udp = UDPTransport.__new__(UDPTransport)
 */
      while (1) {
        __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_lai != NULL) != 0);
        if (!__pyx_t_2) break;

        /* "uvloop/loop.pyx":1773
 *                 lai = (<AddrInfo>lads).data
 *                 while lai is not NULL:
 *                     try:             # <<<<<<<<<<<<<<
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)
 */
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          /*try:*/ {

            /* "uvloop/loop.pyx":1774
 *                 while lai is not NULL:
 *                     try:
 *                         udp = UDPTransport.__new__(UDPTransport)             # <<<<<<<<<<<<<<
 *                         udp._init(self, lai.ai_family)
 *                         if reuse_port:
 */
            __pyx_t_3 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1774, __pyx_L39_error)
            __Pyx_GOTREF(__pyx_t_3);
            if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(2, 1774, __pyx_L39_error)
            __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
            __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_udp, ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_3));
            __Pyx_GIVEREF(__pyx_t_3);
            __pyx_t_3 = 0;

            /* "uvloop/loop.pyx":1775
 *                     try:
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)             # <<<<<<<<<<<<<<
 *                         if reuse_port:
 *                             self._sock_set_reuseport(udp._fileno())
 */
            __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_lai->ai_family); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1775, __pyx_L39_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "uvloop/loop.pyx":1776
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)
 *                         if reuse_port:             # <<<<<<<<<<<<<<
 *                             self._sock_set_reuseport(udp._fileno())
 *                         udp._bind(lai.ai_addr, reuse_address)
 */
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1776, __pyx_L39_error)
            if (__pyx_t_2) {

              /* "uvloop/loop.pyx":1777
 *                         udp._init(self, lai.ai_family)
 *                         if reuse_port:
 *                             self._sock_set_reuseport(udp._fileno())             # <<<<<<<<<<<<<<
 *                         udp._bind(lai.ai_addr, reuse_address)
 *                     except Exception as ex:
 */
              __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1777, __pyx_L39_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1777, __pyx_L39_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_set_reuseport(__pyx_cur_scope->__pyx_v_self, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1777, __pyx_L39_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "uvloop/loop.pyx":1776
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)
 *                         if reuse_port:             # <<<<<<<<<<<<<<
 *                             self._sock_set_reuseport(udp._fileno())
 *                         udp._bind(lai.ai_addr, reuse_address)
 */
            }

            /* "uvloop/loop.pyx":1778
 *                         if reuse_port:
 *                             self._sock_set_reuseport(udp._fileno())
 *                         udp._bind(lai.ai_addr, reuse_address)             # <<<<<<<<<<<<<<
 *                     except Exception as ex:
 *                         lai = lai.ai_next
 */
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_address); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1778, __pyx_L39_error)
            __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_bind(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_lai->ai_addr, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1778, __pyx_L39_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "uvloop/loop.pyx":1773
 *                 lai = (<AddrInfo>lads).data
 *                 while lai is not NULL:
 *                     try:             # <<<<<<<<<<<<<<
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)
 */
          }

          /* "uvloop/loop.pyx":1784
 *                         continue
 *                     else:
 *                         break             # <<<<<<<<<<<<<<
 *                 else:
 *                     ctx = None
 */
          /*else:*/ {
            goto __pyx_L44_try_break;
          }
          __pyx_L39_error:;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "uvloop/loop.pyx":1779
 *                             self._sock_set_reuseport(udp._fileno())
 *                         udp._bind(lai.ai_addr, reuse_address)
 *                     except Exception as ex:             # <<<<<<<<<<<<<<
 *                         lai = lai.ai_next
 *                         excs.append(ex)
 */
          __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
          if (__pyx_t_8) {
            __Pyx_AddTraceback("uvloop.loop.Loop.create_datagram_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(2, 1779, __pyx_L41_except_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_4);
            __pyx_cur_scope->__pyx_v_ex = __pyx_t_4;
            /*try:*/ {

              /* "uvloop/loop.pyx":1780
 *                         udp._bind(lai.ai_addr, reuse_address)
 *                     except Exception as ex:
 *                         lai = lai.ai_next             # <<<<<<<<<<<<<<
 *                         excs.append(ex)
 *                         continue
 */
              __pyx_t_13 = __pyx_cur_scope->__pyx_v_lai->ai_next;
              __pyx_cur_scope->__pyx_v_lai = __pyx_t_13;

              /* "uvloop/loop.pyx":1781
 *                     except Exception as ex:
 *                         lai = lai.ai_next
 *                         excs.append(ex)             # <<<<<<<<<<<<<<
 *                         continue
 *                     else:
 */
              __pyx_t_18 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_excs, __pyx_cur_scope->__pyx_v_ex); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(2, 1781, __pyx_L53_error)

              /* "uvloop/loop.pyx":1782
 *                         lai = lai.ai_next
 *                         excs.append(ex)
 *                         continue             # <<<<<<<<<<<<<<
 *                     else:
 *                         break
 */
              goto __pyx_L50_continue;
            }

            /* "uvloop/loop.pyx":1779
 *                             self._sock_set_reuseport(udp._fileno())
 *                         udp._bind(lai.ai_addr, reuse_address)
 *                     except Exception as ex:             # <<<<<<<<<<<<<<
 *                         lai = lai.ai_next
 *                         excs.append(ex)
 */
            /*finally:*/ {
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __pyx_L53_error:;
                __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
                __Pyx_PyThreadState_assign
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
                if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                __Pyx_XGOTREF(__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_21);
                __Pyx_XGOTREF(__pyx_t_22);
                __Pyx_XGOTREF(__pyx_t_23);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_25);
                __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
                {
                  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ex);
                  __Pyx_DECREF(__pyx_cur_scope->__pyx_v_ex);
                  __pyx_cur_scope->__pyx_v_ex = NULL;
                }
                __Pyx_PyThreadState_assign
                if (PY_MAJOR_VERSION >= 3) {
                  __Pyx_XGIVEREF(__pyx_t_23);
                  __Pyx_XGIVEREF(__pyx_t_24);
                  __Pyx_XGIVEREF(__pyx_t_25);
                  __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                }
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
                __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_19;
                goto __pyx_L41_except_error;
              }
              __pyx_L50_continue: {
                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ex);
                __Pyx_DECREF(__pyx_cur_scope->__pyx_v_ex);
                __pyx_cur_scope->__pyx_v_ex = NULL;
                goto __pyx_L49_except_continue;
              }
            }
            __pyx_L49_except_continue:;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L45_try_continue;
          }
          goto __pyx_L41_except_error;
          __pyx_L41_except_error:;

          /* "uvloop/loop.pyx":1773
 *                 lai = (<AddrInfo>lads).data
 *                 while lai is not NULL:
 *                     try:             # <<<<<<<<<<<<<<
 *                         udp = UDPTransport.__new__(UDPTransport)
 *                         udp._init(self, lai.ai_family)
 */
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          goto __pyx_L1_error;
          __pyx_L44_try_break:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          goto __pyx_L38_break;
          __pyx_L45_try_continue:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          goto __pyx_L37_continue;
        }
        __pyx_L37_continue:;
      }

      /* "uvloop/loop.pyx":1786
 *                         break
 *                 else:
 *                     ctx = None             # <<<<<<<<<<<<<<
 *                     if len(excs):
 *                         ctx = excs[0]
 */
      /*else*/ {
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __pyx_cur_scope->__pyx_v_ctx = Py_None;

        /* "uvloop/loop.pyx":1787
 *                 else:
 *                     ctx = None
 *                     if len(excs):             # <<<<<<<<<<<<<<
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(
 */
        __pyx_t_11 = PyList_GET_SIZE(__pyx_cur_scope->__pyx_v_excs); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(2, 1787, __pyx_L1_error)
        __pyx_t_2 = (__pyx_t_11 != 0);
        if (__pyx_t_2) {

          /* "uvloop/loop.pyx":1788
 *                     ctx = None
 *                     if len(excs):
 *                         ctx = excs[0]             # <<<<<<<<<<<<<<
 *                     raise OSError('could not bind to local_addr {}'.format(
 *                         local_addr)) from ctx
 */
          __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_excs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1788, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ctx);
          __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ctx, __pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_6);
          __pyx_t_6 = 0;

          /* "uvloop/loop.pyx":1787
 *                 else:
 *                     ctx = None
 *                     if len(excs):             # <<<<<<<<<<<<<<
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(
 */
        }

        /* "uvloop/loop.pyx":1789
 *                     if len(excs):
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(             # <<<<<<<<<<<<<<
 *                         local_addr)) from ctx
 * 
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_could_not_bind_to_local_addr, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "uvloop/loop.pyx":1790
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(
 *                         local_addr)) from ctx             # <<<<<<<<<<<<<<
 * 
 *                 if rads is not None:
 */
        __pyx_t_3 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_3) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_local_addr); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1789, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1789, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_local_addr);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_local_addr);
          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_cur_scope->__pyx_v_local_addr);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1789, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1789
 *                     if len(excs):
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(             # <<<<<<<<<<<<<<
 *                         local_addr)) from ctx
 * 
 */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/loop.pyx":1790
 *                         ctx = excs[0]
 *                     raise OSError('could not bind to local_addr {}'.format(
 *                         local_addr)) from ctx             # <<<<<<<<<<<<<<
 * 
 *                 if rads is not None:
 */
        __Pyx_Raise(__pyx_t_6, 0, 0, __pyx_cur_scope->__pyx_v_ctx);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(2, 1789, __pyx_L1_error)
      }
      __pyx_L38_break:;

      /* "uvloop/loop.pyx":1792
 *                         local_addr)) from ctx
 * 
 *                 if rads is not None:             # <<<<<<<<<<<<<<
 *                     rai = (<AddrInfo>lads).data
 *                     sock = udp._get_socket()
 */
      __pyx_t_2 = (__pyx_cur_scope->__pyx_v_rads != Py_None);
      __pyx_t_9 = (__pyx_t_2 != 0);
      if (__pyx_t_9) {

        /* "uvloop/loop.pyx":1793
 * 
 *                 if rads is not None:
 *                     rai = (<AddrInfo>lads).data             # <<<<<<<<<<<<<<
 *                     sock = udp._get_socket()
 *                     while rai is not NULL:
 */
        __pyx_t_13 = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_cur_scope->__pyx_v_lads)->data;
        __pyx_cur_scope->__pyx_v_rai = __pyx_t_13;

        /* "uvloop/loop.pyx":1794
 *                 if rads is not None:
 *                     rai = (<AddrInfo>lads).data
 *                     sock = udp._get_socket()             # <<<<<<<<<<<<<<
 *                     while rai is not NULL:
 *                         if rai.ai_family != lai.ai_family:
 */
        __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1794, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_sock);
        __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_sock, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":1795
 *                     rai = (<AddrInfo>lads).data
 *                     sock = udp._get_socket()
 *                     while rai is not NULL:             # <<<<<<<<<<<<<<
 *                         if rai.ai_family != lai.ai_family:
 *                             rai = rai.ai_next
 */
        while (1) {
          __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_rai != NULL) != 0);
          if (!__pyx_t_9) break;

          /* "uvloop/loop.pyx":1796
 *                     sock = udp._get_socket()
 *                     while rai is not NULL:
 *                         if rai.ai_family != lai.ai_family:             # <<<<<<<<<<<<<<
 *                             rai = rai.ai_next
 *                             continue
 */
          __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_rai->ai_family != __pyx_cur_scope->__pyx_v_lai->ai_family) != 0);
          if (__pyx_t_9) {

            /* "uvloop/loop.pyx":1797
 *                     while rai is not NULL:
 *                         if rai.ai_family != lai.ai_family:
 *                             rai = rai.ai_next             # <<<<<<<<<<<<<<
 *                             continue
 *                         if rai.ai_protocol != lai.ai_protocol:
 */
            __pyx_t_13 = __pyx_cur_scope->__pyx_v_rai->ai_next;
            __pyx_cur_scope->__pyx_v_rai = __pyx_t_13;

            /* "uvloop/loop.pyx":1798
 *                         if rai.ai_family != lai.ai_family:
 *                             rai = rai.ai_next
 *                             continue             # <<<<<<<<<<<<<<
 *                         if rai.ai_protocol != lai.ai_protocol:
 *                             rai = rai.ai_next
 */
            goto __pyx_L61_continue;

            /* "uvloop/loop.pyx":1796
 *                     sock = udp._get_socket()
 *                     while rai is not NULL:
 *                         if rai.ai_family != lai.ai_family:             # <<<<<<<<<<<<<<
 *                             rai = rai.ai_next
 *                             continue
 */
          }

          /* "uvloop/loop.pyx":1799
 *                             rai = rai.ai_next
 *                             continue
 *                         if rai.ai_protocol != lai.ai_protocol:             # <<<<<<<<<<<<<<
 *                             rai = rai.ai_next
 *                             continue
 */
          __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_rai->ai_protocol != __pyx_cur_scope->__pyx_v_lai->ai_protocol) != 0);
          if (__pyx_t_9) {

            /* "uvloop/loop.pyx":1800
 *                             continue
 *                         if rai.ai_protocol != lai.ai_protocol:
 *                             rai = rai.ai_next             # <<<<<<<<<<<<<<
 *                             continue
 *                         udp._set_remote_address(rai.ai_addr[0])
 */
            __pyx_t_13 = __pyx_cur_scope->__pyx_v_rai->ai_next;
            __pyx_cur_scope->__pyx_v_rai = __pyx_t_13;

            /* "uvloop/loop.pyx":1801
 *                         if rai.ai_protocol != lai.ai_protocol:
 *                             rai = rai.ai_next
 *                             continue             # <<<<<<<<<<<<<<
 *                         udp._set_remote_address(rai.ai_addr[0])
 *                         break
 */
            goto __pyx_L61_continue;

            /* "uvloop/loop.pyx":1799
 *                             rai = rai.ai_next
 *                             continue
 *                         if rai.ai_protocol != lai.ai_protocol:             # <<<<<<<<<<<<<<
 *                             rai = rai.ai_next
 *                             continue
 */
          }

          /* "uvloop/loop.pyx":1802
 *                             rai = rai.ai_next
 *                             continue
 *                         udp._set_remote_address(rai.ai_addr[0])             # <<<<<<<<<<<<<<
 *                         break
 *                     else:
 */
          __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_set_remote_address(__pyx_cur_scope->__pyx_v_udp, (__pyx_cur_scope->__pyx_v_rai->ai_addr[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1802, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/loop.pyx":1803
 *                             continue
 *                         udp._set_remote_address(rai.ai_addr[0])
 *                         break             # <<<<<<<<<<<<<<
 *                     else:
 *                         raise OSError(
 */
          goto __pyx_L62_break;
          __pyx_L61_continue:;
        }

        /* "uvloop/loop.pyx":1805
 *                         break
 *                     else:
 *                         raise OSError(             # <<<<<<<<<<<<<<
 *                             'could not bind to remote_addr {}'.format(
 *                                 remote_addr))
 */
        /*else*/ {

          /* "uvloop/loop.pyx":1806
 *                     else:
 *                         raise OSError(
 *                             'could not bind to remote_addr {}'.format(             # <<<<<<<<<<<<<<
 *                                 remote_addr))
 * 
 */
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_could_not_bind_to_remote_addr, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1806, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);

          /* "uvloop/loop.pyx":1807
 *                         raise OSError(
 *                             'could not bind to remote_addr {}'.format(
 *                                 remote_addr))             # <<<<<<<<<<<<<<
 * 
 *                     udp._set_remote_address(rai.ai_addr[0])
 */
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_remote_addr); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1806, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1806, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_remote_addr);
            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_remote_addr);
            PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_cur_scope->__pyx_v_remote_addr);
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1806, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "uvloop/loop.pyx":1805
 *                         break
 *                     else:
 *                         raise OSError(             # <<<<<<<<<<<<<<
 *                             'could not bind to remote_addr {}'.format(
 *                                 remote_addr))
 */
          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1805, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1805, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_Raise(__pyx_t_6, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __PYX_ERR(2, 1805, __pyx_L1_error)
        }
        __pyx_L62_break:;

        /* "uvloop/loop.pyx":1809
 *                                 remote_addr))
 * 
 *                     udp._set_remote_address(rai.ai_addr[0])             # <<<<<<<<<<<<<<
 * 
 *         if allow_broadcast:
 */
        __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_set_remote_address(__pyx_cur_scope->__pyx_v_udp, (__pyx_cur_scope->__pyx_v_rai->ai_addr[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1809, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/loop.pyx":1792
 *                         local_addr)) from ctx
 * 
 *                 if rads is not None:             # <<<<<<<<<<<<<<
 *                     rai = (<AddrInfo>lads).data
 *                     sock = udp._get_socket()
 */
      }
    }
    __pyx_L31:;
  }
  __pyx_L4:;

  /* "uvloop/loop.pyx":1811
 *                     udp._set_remote_address(rai.ai_addr[0])
 * 
 *         if allow_broadcast:             # <<<<<<<<<<<<<<
 *             udp._set_broadcast(1)
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_allow_broadcast); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(2, 1811, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "uvloop/loop.pyx":1812
 * 
 *         if allow_broadcast:
 *             udp._set_broadcast(1)             # <<<<<<<<<<<<<<
 * 
 *         protocol = protocol_factory()
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_set_broadcast(__pyx_cur_scope->__pyx_v_udp, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/loop.pyx":1811
 *                     udp._set_remote_address(rai.ai_addr[0])
 * 
 *         if allow_broadcast:             # <<<<<<<<<<<<<<
 *             udp._set_broadcast(1)
 * 
 */
  }

  /* "uvloop/loop.pyx":1814
 *             udp._set_broadcast(1)
 * 
 *         protocol = protocol_factory()             # <<<<<<<<<<<<<<
 *         waiter = self._new_future()
 *         assert udp is not None
 */
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol_factory);
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_protocol_factory; __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1814, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1814, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_protocol = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1815
 * 
 *         protocol = protocol_factory()
 *         waiter = self._new_future()             # <<<<<<<<<<<<<<
 *         assert udp is not None
 *         udp._set_protocol(protocol)
 */
  __pyx_t_6 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_waiter = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1816
 *         protocol = protocol_factory()
 *         waiter = self._new_future()
 *         assert udp is not None             # <<<<<<<<<<<<<<
 *         udp._set_protocol(protocol)
 *         udp._set_waiter(waiter)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_9 = (((PyObject *)__pyx_cur_scope->__pyx_v_udp) != Py_None);
    if (unlikely(!(__pyx_t_9 != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(2, 1816, __pyx_L1_error)
    }
  }
  #endif

  /* "uvloop/loop.pyx":1817
 *         waiter = self._new_future()
 *         assert udp is not None
 *         udp._set_protocol(protocol)             # <<<<<<<<<<<<<<
 *         udp._set_waiter(waiter)
 *         udp._init_protocol()
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._set_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_udp), __pyx_cur_scope->__pyx_v_protocol); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1818
 *         assert udp is not None
 *         udp._set_protocol(protocol)
 *         udp._set_waiter(waiter)             # <<<<<<<<<<<<<<
 *         udp._init_protocol()
 * 
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._set_waiter(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_udp), __pyx_cur_scope->__pyx_v_waiter); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1819
 *         udp._set_protocol(protocol)
 *         udp._set_waiter(waiter)
 *         udp._init_protocol()             # <<<<<<<<<<<<<<
 * 
 *         await waiter
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "uvloop/loop.pyx":1821
 *         udp._init_protocol()
 * 
 *         await waiter             # <<<<<<<<<<<<<<
 *         return udp, protocol
 * 
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L66_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 1821, __pyx_L1_error)
  } else {
    PyObject* exc_type = PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
      else __PYX_ERR(2, 1821, __pyx_L1_error)
    }
  }

  /* "uvloop/loop.pyx":1822
 * 
 *         await waiter
 *         return udp, protocol             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_udp));
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_protocol);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_cur_scope->__pyx_v_protocol);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("create_datagram_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pxd":40
 *         bint _coroutine_wrapper_set
 * 
 *         readonly bint _closed             # <<<<<<<<<<<<<<
 *         bint _debug
 *         bint _running
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_7_closed_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_4Loop_7_closed_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_4Loop_7_closed___get__(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_4Loop_7_closed___get__(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_closed); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Loop._closed.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1825
 * 
 * 
 * cdef void __loop_alloc_buffer(uv.uv_handle_t* uvhandle,             # <<<<<<<<<<<<<<
 *                               size_t suggested_size,
 *                               uv.uv_buf_t* buf) with gil:
 */

static void __pyx_f_6uvloop_4loop___loop_alloc_buffer(uv_handle_t *__pyx_v_uvhandle, CYTHON_UNUSED size_t __pyx_v_suggested_size, uv_buf_t *__pyx_v_buf) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  char *__pyx_t_3;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__loop_alloc_buffer", 0);

  /* "uvloop/loop.pyx":1829
 *                               uv.uv_buf_t* buf) with gil:
 *     cdef:
 *         Loop loop = (<UVHandle>uvhandle.data)._loop             # <<<<<<<<<<<<<<
 * 
 *     if loop._recv_buffer_in_use == 1:
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_uvhandle->data)->_loop);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/loop.pyx":1831
 *         Loop loop = (<UVHandle>uvhandle.data)._loop
 * 
 *     if loop._recv_buffer_in_use == 1:             # <<<<<<<<<<<<<<
 *         buf.len = 0
 *         exc = RuntimeError('concurrent allocations')
 */
  __pyx_t_2 = ((__pyx_v_loop->_recv_buffer_in_use == 1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/loop.pyx":1832
 * 
 *     if loop._recv_buffer_in_use == 1:
 *         buf.len = 0             # <<<<<<<<<<<<<<
 *         exc = RuntimeError('concurrent allocations')
 *         loop._handle_exception(exc)
 */
    __pyx_v_buf->len = 0;

    /* "uvloop/loop.pyx":1833
 *     if loop._recv_buffer_in_use == 1:
 *         buf.len = 0
 *         exc = RuntimeError('concurrent allocations')             # <<<<<<<<<<<<<<
 *         loop._handle_exception(exc)
 *         return
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/loop.pyx":1834
 *         buf.len = 0
 *         exc = RuntimeError('concurrent allocations')
 *         loop._handle_exception(exc)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_loop->__pyx_vtab)->_handle_exception(__pyx_v_loop, __pyx_v_exc);

    /* "uvloop/loop.pyx":1835
 *         exc = RuntimeError('concurrent allocations')
 *         loop._handle_exception(exc)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     loop._recv_buffer_in_use = 1
 */
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1831
 *         Loop loop = (<UVHandle>uvhandle.data)._loop
 * 
 *     if loop._recv_buffer_in_use == 1:             # <<<<<<<<<<<<<<
 *         buf.len = 0
 *         exc = RuntimeError('concurrent allocations')
 */
  }

  /* "uvloop/loop.pyx":1837
 *         return
 * 
 *     loop._recv_buffer_in_use = 1             # <<<<<<<<<<<<<<
 *     buf.base = loop._recv_buffer
 *     buf.len = sizeof(loop._recv_buffer)
 */
  __pyx_v_loop->_recv_buffer_in_use = 1;

  /* "uvloop/loop.pyx":1838
 * 
 *     loop._recv_buffer_in_use = 1
 *     buf.base = loop._recv_buffer             # <<<<<<<<<<<<<<
 *     buf.len = sizeof(loop._recv_buffer)
 * 
 */
  __pyx_t_3 = __pyx_v_loop->_recv_buffer;
  __pyx_v_buf->base = __pyx_t_3;

  /* "uvloop/loop.pyx":1839
 *     loop._recv_buffer_in_use = 1
 *     buf.base = loop._recv_buffer
 *     buf.len = sizeof(loop._recv_buffer)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_buf->len = (sizeof(__pyx_v_loop->_recv_buffer));

  /* "uvloop/loop.pyx":1825
 * 
 * 
 * cdef void __loop_alloc_buffer(uv.uv_handle_t* uvhandle,             # <<<<<<<<<<<<<<
 *                               size_t suggested_size,
 *                               uv.uv_buf_t* buf) with gil:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("uvloop.loop.__loop_alloc_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/loop.pyx":1842
 * 
 * 
 * cdef inline void __loop_free_buffer(Loop loop):             # <<<<<<<<<<<<<<
 *     loop._recv_buffer_in_use = 0
 * 
 */

static CYTHON_INLINE void __pyx_f_6uvloop_4loop___loop_free_buffer(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__loop_free_buffer", 0);

  /* "uvloop/loop.pyx":1843
 * 
 * cdef inline void __loop_free_buffer(Loop loop):
 *     loop._recv_buffer_in_use = 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_loop->_recv_buffer_in_use = 0;

  /* "uvloop/loop.pyx":1842
 * 
 * 
 * cdef inline void __loop_free_buffer(Loop loop):             # <<<<<<<<<<<<<<
 *     loop._recv_buffer_in_use = 0
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/cbhandles.pyx":4
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class Handle:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.cancelled = 0
 *         self.cb_type = 0
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_6Handle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_6Handle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_6Handle___cinit__(((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_6Handle___cinit__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/cbhandles.pyx":5
 * cdef class Handle:
 *     def __cinit__(self):
 *         self.cancelled = 0             # <<<<<<<<<<<<<<
 *         self.cb_type = 0
 * 
 */
  __pyx_v_self->cancelled = 0;

  /* "uvloop/cbhandles.pyx":6
 *     def __cinit__(self):
 *         self.cancelled = 0
 *         self.cb_type = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _set_loop(self, Loop loop):
 */
  __pyx_v_self->cb_type = 0;

  /* "uvloop/cbhandles.pyx":4
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class Handle:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.cancelled = 0
 *         self.cb_type = 0
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":8
 *         self.cb_type = 0
 * 
 *     cdef inline _set_loop(self, Loop loop):             # <<<<<<<<<<<<<<
 *         self.loop = loop
 *         IF DEBUG:
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__set_loop(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_loop", 0);

  /* "uvloop/cbhandles.pyx":9
 * 
 *     cdef inline _set_loop(self, Loop loop):
 *         self.loop = loop             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_cb_handles_total += 1
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_loop));
  __Pyx_GOTREF(__pyx_v_self->loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->loop));
  __pyx_v_self->loop = __pyx_v_loop;

  /* "uvloop/cbhandles.pyx":8
 *         self.cb_type = 0
 * 
 *     cdef inline _set_loop(self, Loop loop):             # <<<<<<<<<<<<<<
 *         self.loop = loop
 *         IF DEBUG:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":21
 *                 raise RuntimeError('Handle.loop is None in Handle.__dealloc__')
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_6Handle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_6Handle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_6Handle_2__init__(((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_6Handle_2__init__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "uvloop/cbhandles.pyx":23
 *     def __init__(self):
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_is_not_supposed_to_be_instantia, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/cbhandles.pyx":24
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 *                 self.__class__.__name__))             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _run(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/cbhandles.pyx":22
 * 
 *     def __init__(self):
 *         raise TypeError(             # <<<<<<<<<<<<<<
 *             '{} is not supposed to be instantiated from Python'.format(
 *                 self.__class__.__name__))
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 22, __pyx_L1_error)

  /* "uvloop/cbhandles.pyx":21
 *                 raise RuntimeError('Handle.loop is None in Handle.__dealloc__')
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Handle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":26
 *                 self.__class__.__name__))
 * 
 *     cdef inline _run(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int cb_type
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6Handle__run(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  int __pyx_v_cb_type;
  PyObject *__pyx_v_callback = 0;
  int __pyx_v_old_exec_py_code;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  char const *__pyx_t_23;
  __Pyx_RefNannySetupContext("_run", 0);

  /* "uvloop/cbhandles.pyx":32
 *             bint old_exec_py_code
 * 
 *         if self.cancelled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = (__pyx_v_self->cancelled != 0);
  if (__pyx_t_1) {

    /* "uvloop/cbhandles.pyx":33
 * 
 *         if self.cancelled:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         cb_type = self.cb_type
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/cbhandles.pyx":32
 *             bint old_exec_py_code
 * 
 *         if self.cancelled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/cbhandles.pyx":35
 *             return
 * 
 *         cb_type = self.cb_type             # <<<<<<<<<<<<<<
 * 
 *         Py_INCREF(self)   # Since _run is a cdef and there's no BoundMethod,
 */
  __pyx_t_2 = __pyx_v_self->cb_type;
  __pyx_v_cb_type = __pyx_t_2;

  /* "uvloop/cbhandles.pyx":37
 *         cb_type = self.cb_type
 * 
 *         Py_INCREF(self)   # Since _run is a cdef and there's no BoundMethod,             # <<<<<<<<<<<<<<
 *                           # we guard 'self' manually (since the callback
 *                           # might cause GC of the handle.)
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/cbhandles.pyx":40
 *                           # we guard 'self' manually (since the callback
 *                           # might cause GC of the handle.)
 *         old_exec_py_code = self.loop._executing_py_code             # <<<<<<<<<<<<<<
 *         # old_exec_py_code might be 0 -- that means that this
 *         # handle is run by libuv callback or something
 */
  __pyx_t_1 = __pyx_v_self->loop->_executing_py_code;
  __pyx_v_old_exec_py_code = __pyx_t_1;

  /* "uvloop/cbhandles.pyx":45
 *         # and it can be 1 -- that means that we're calling it
 *         # from a UVHandle (for instance UVIdle) callback.
 *         self.loop._executing_py_code = 1             # <<<<<<<<<<<<<<
 *         try:
 *             if cb_type == 1:
 */
  __pyx_v_self->loop->_executing_py_code = 1;

  /* "uvloop/cbhandles.pyx":46
 *         # from a UVHandle (for instance UVIdle) callback.
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if cb_type == 1:
 *                 callback = self.arg1
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/cbhandles.pyx":47
 *         self.loop._executing_py_code = 1
 *         try:
 *             if cb_type == 1:             # <<<<<<<<<<<<<<
 *                 callback = self.arg1
 *                 args = self.arg2
 */
        switch (__pyx_v_cb_type) {
          case 1:

          /* "uvloop/cbhandles.pyx":48
 *         try:
 *             if cb_type == 1:
 *                 callback = self.arg1             # <<<<<<<<<<<<<<
 *                 args = self.arg2
 * 
 */
          __pyx_t_6 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_6);
          __pyx_v_callback = __pyx_t_6;
          __pyx_t_6 = 0;

          /* "uvloop/cbhandles.pyx":49
 *             if cb_type == 1:
 *                 callback = self.arg1
 *                 args = self.arg2             # <<<<<<<<<<<<<<
 * 
 *                 if args is None:
 */
          __pyx_t_6 = __pyx_v_self->arg2;
          __Pyx_INCREF(__pyx_t_6);
          __pyx_v_args = __pyx_t_6;
          __pyx_t_6 = 0;

          /* "uvloop/cbhandles.pyx":51
 *                 args = self.arg2
 * 
 *                 if args is None:             # <<<<<<<<<<<<<<
 *                     callback()
 *                 else:
 */
          __pyx_t_1 = (__pyx_v_args == Py_None);
          __pyx_t_7 = (__pyx_t_1 != 0);
          if (__pyx_t_7) {

            /* "uvloop/cbhandles.pyx":52
 * 
 *                 if args is None:
 *                     callback()             # <<<<<<<<<<<<<<
 *                 else:
 *                     callback(*args)
 */
            __Pyx_INCREF(__pyx_v_callback);
            __pyx_t_8 = __pyx_v_callback; __pyx_t_9 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_9)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_9);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
              }
            }
            if (__pyx_t_9) {
              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 52, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            } else {
              __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 52, __pyx_L7_error)
            }
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

            /* "uvloop/cbhandles.pyx":51
 *                 args = self.arg2
 * 
 *                 if args is None:             # <<<<<<<<<<<<<<
 *                     callback()
 *                 else:
 */
            goto __pyx_L15;
          }

          /* "uvloop/cbhandles.pyx":54
 *                     callback()
 *                 else:
 *                     callback(*args)             # <<<<<<<<<<<<<<
 * 
 *             elif cb_type == 2:
 */
          /*else*/ {
            __pyx_t_6 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 54, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_callback, __pyx_t_6, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 54, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __pyx_L15:;

          /* "uvloop/cbhandles.pyx":47
 *         self.loop._executing_py_code = 1
 *         try:
 *             if cb_type == 1:             # <<<<<<<<<<<<<<
 *                 callback = self.arg1
 *                 args = self.arg2
 */
          break;

          /* "uvloop/cbhandles.pyx":56
 *                     callback(*args)
 * 
 *             elif cb_type == 2:             # <<<<<<<<<<<<<<
 *                 ((<method_t*>self.callback)[0])(self.arg1)
 * 
 */
          case 2:

          /* "uvloop/cbhandles.pyx":57
 * 
 *             elif cb_type == 2:
 *                 ((<method_t*>self.callback)[0])(self.arg1)             # <<<<<<<<<<<<<<
 * 
 *             elif cb_type == 3:
 */
          __pyx_t_8 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_8);
          __pyx_t_6 = (((__pyx_t_6uvloop_4loop_method_t *)__pyx_v_self->callback)[0])(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 57, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/cbhandles.pyx":56
 *                     callback(*args)
 * 
 *             elif cb_type == 2:             # <<<<<<<<<<<<<<
 *                 ((<method_t*>self.callback)[0])(self.arg1)
 * 
 */
          break;

          /* "uvloop/cbhandles.pyx":59
 *                 ((<method_t*>self.callback)[0])(self.arg1)
 * 
 *             elif cb_type == 3:             # <<<<<<<<<<<<<<
 *                 ((<method1_t*>self.callback)[0])(
 *                     self.arg1, self.arg2)
 */
          case 3:

          /* "uvloop/cbhandles.pyx":61
 *             elif cb_type == 3:
 *                 ((<method1_t*>self.callback)[0])(
 *                     self.arg1, self.arg2)             # <<<<<<<<<<<<<<
 * 
 *             elif cb_type == 4:
 */
          __pyx_t_6 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_8 = __pyx_v_self->arg2;
          __Pyx_INCREF(__pyx_t_8);

          /* "uvloop/cbhandles.pyx":60
 * 
 *             elif cb_type == 3:
 *                 ((<method1_t*>self.callback)[0])(             # <<<<<<<<<<<<<<
 *                     self.arg1, self.arg2)
 * 
 */
          __pyx_t_9 = (((__pyx_t_6uvloop_4loop_method1_t *)__pyx_v_self->callback)[0])(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 60, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

          /* "uvloop/cbhandles.pyx":59
 *                 ((<method_t*>self.callback)[0])(self.arg1)
 * 
 *             elif cb_type == 3:             # <<<<<<<<<<<<<<
 *                 ((<method1_t*>self.callback)[0])(
 *                     self.arg1, self.arg2)
 */
          break;

          /* "uvloop/cbhandles.pyx":63
 *                     self.arg1, self.arg2)
 * 
 *             elif cb_type == 4:             # <<<<<<<<<<<<<<
 *                 ((<method2_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3)
 */
          case 4:

          /* "uvloop/cbhandles.pyx":65
 *             elif cb_type == 4:
 *                 ((<method2_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3)             # <<<<<<<<<<<<<<
 * 
 *             elif cb_type == 5:
 */
          __pyx_t_9 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_9);
          __pyx_t_8 = __pyx_v_self->arg2;
          __Pyx_INCREF(__pyx_t_8);
          __pyx_t_6 = __pyx_v_self->arg3;
          __Pyx_INCREF(__pyx_t_6);

          /* "uvloop/cbhandles.pyx":64
 * 
 *             elif cb_type == 4:
 *                 ((<method2_t*>self.callback)[0])(             # <<<<<<<<<<<<<<
 *                     self.arg1, self.arg2, self.arg3)
 * 
 */
          __pyx_t_10 = (((__pyx_t_6uvloop_4loop_method2_t *)__pyx_v_self->callback)[0])(__pyx_t_9, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 64, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "uvloop/cbhandles.pyx":63
 *                     self.arg1, self.arg2)
 * 
 *             elif cb_type == 4:             # <<<<<<<<<<<<<<
 *                 ((<method2_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3)
 */
          break;

          /* "uvloop/cbhandles.pyx":67
 *                     self.arg1, self.arg2, self.arg3)
 * 
 *             elif cb_type == 5:             # <<<<<<<<<<<<<<
 *                 ((<method3_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4)
 */
          case 5:

          /* "uvloop/cbhandles.pyx":69
 *             elif cb_type == 5:
 *                 ((<method3_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4)             # <<<<<<<<<<<<<<
 * 
 *             elif cb_type == 6:
 */
          __pyx_t_10 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_10);
          __pyx_t_6 = __pyx_v_self->arg2;
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_8 = __pyx_v_self->arg3;
          __Pyx_INCREF(__pyx_t_8);
          __pyx_t_9 = __pyx_v_self->arg4;
          __Pyx_INCREF(__pyx_t_9);

          /* "uvloop/cbhandles.pyx":68
 * 
 *             elif cb_type == 5:
 *                 ((<method3_t*>self.callback)[0])(             # <<<<<<<<<<<<<<
 *                     self.arg1, self.arg2, self.arg3, self.arg4)
 * 
 */
          __pyx_t_11 = (((__pyx_t_6uvloop_4loop_method3_t *)__pyx_v_self->callback)[0])(__pyx_t_10, __pyx_t_6, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 68, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

          /* "uvloop/cbhandles.pyx":67
 *                     self.arg1, self.arg2, self.arg3)
 * 
 *             elif cb_type == 5:             # <<<<<<<<<<<<<<
 *                 ((<method3_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4)
 */
          break;

          /* "uvloop/cbhandles.pyx":71
 *                     self.arg1, self.arg2, self.arg3, self.arg4)
 * 
 *             elif cb_type == 6:             # <<<<<<<<<<<<<<
 *                 ((<method4_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4, self.arg5)
 */
          case 6:

          /* "uvloop/cbhandles.pyx":73
 *             elif cb_type == 6:
 *                 ((<method4_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4, self.arg5)             # <<<<<<<<<<<<<<
 * 
 *             else:
 */
          __pyx_t_11 = __pyx_v_self->arg1;
          __Pyx_INCREF(__pyx_t_11);
          __pyx_t_9 = __pyx_v_self->arg2;
          __Pyx_INCREF(__pyx_t_9);
          __pyx_t_8 = __pyx_v_self->arg3;
          __Pyx_INCREF(__pyx_t_8);
          __pyx_t_6 = __pyx_v_self->arg4;
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_10 = __pyx_v_self->arg5;
          __Pyx_INCREF(__pyx_t_10);

          /* "uvloop/cbhandles.pyx":72
 * 
 *             elif cb_type == 6:
 *                 ((<method4_t*>self.callback)[0])(             # <<<<<<<<<<<<<<
 *                     self.arg1, self.arg2, self.arg3, self.arg4, self.arg5)
 * 
 */
          __pyx_t_12 = (((__pyx_t_6uvloop_4loop_method4_t *)__pyx_v_self->callback)[0])(__pyx_t_11, __pyx_t_9, __pyx_t_8, __pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 72, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

          /* "uvloop/cbhandles.pyx":71
 *                     self.arg1, self.arg2, self.arg3, self.arg4)
 * 
 *             elif cb_type == 6:             # <<<<<<<<<<<<<<
 *                 ((<method4_t*>self.callback)[0])(
 *                     self.arg1, self.arg2, self.arg3, self.arg4, self.arg5)
 */
          break;
          default:

          /* "uvloop/cbhandles.pyx":76
 * 
 *             else:
 *                 raise RuntimeError('invalid Handle.cb_type: {}'.format(             # <<<<<<<<<<<<<<
 *                     cb_type))
 * 
 */
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid_Handle_cb_type, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 76, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_10);

          /* "uvloop/cbhandles.pyx":77
 *             else:
 *                 raise RuntimeError('invalid Handle.cb_type: {}'.format(
 *                     cb_type))             # <<<<<<<<<<<<<<
 * 
 *         except Exception as ex:
 */
          __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_cb_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 77, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_10, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 76, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_12);
          } else {
            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 76, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_9, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 76, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "uvloop/cbhandles.pyx":76
 * 
 *             else:
 *                 raise RuntimeError('invalid Handle.cb_type: {}'.format(             # <<<<<<<<<<<<<<
 *                     cb_type))
 * 
 */
          __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 76, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GIVEREF(__pyx_t_12);
          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12);
          __pyx_t_12 = 0;
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_10, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 76, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_Raise(__pyx_t_12, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __PYX_ERR(3, 76, __pyx_L7_error)
          break;
        }

        /* "uvloop/cbhandles.pyx":46
 *         # from a UVHandle (for instance UVIdle) callback.
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if cb_type == 1:
 *                 callback = self.arg1
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "uvloop/cbhandles.pyx":79
 *                     cb_type))
 * 
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             if cb_type == 1:
 *                 msg = 'Exception in callback {}'.format(callback)
 */
      __pyx_t_2 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_2) {
        __Pyx_AddTraceback("uvloop.loop.Handle._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_10, &__pyx_t_9) < 0) __PYX_ERR(3, 79, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __pyx_v_ex = __pyx_t_10;
        /*try:*/ {

          /* "uvloop/cbhandles.pyx":80
 * 
 *         except Exception as ex:
 *             if cb_type == 1:             # <<<<<<<<<<<<<<
 *                 msg = 'Exception in callback {}'.format(callback)
 *             else:
 */
          __pyx_t_7 = ((__pyx_v_cb_type == 1) != 0);
          if (__pyx_t_7) {

            /* "uvloop/cbhandles.pyx":81
 *         except Exception as ex:
 *             if cb_type == 1:
 *                 msg = 'Exception in callback {}'.format(callback)             # <<<<<<<<<<<<<<
 *             else:
 *                 msg = 'Exception in callback {}'.format(self.meth_name)
 */
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Exception_in_callback, __pyx_n_s_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 81, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (unlikely(!__pyx_v_callback)) { __Pyx_RaiseUnboundLocalError("callback"); __PYX_ERR(3, 81, __pyx_L21_error) }
            __pyx_t_11 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_11)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_11);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
              }
            }
            if (!__pyx_t_11) {
              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 81, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_6);
            } else {
              __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 81, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
              __Pyx_INCREF(__pyx_v_callback);
              __Pyx_GIVEREF(__pyx_v_callback);
              PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_callback);
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 81, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_v_msg = __pyx_t_6;
            __pyx_t_6 = 0;

            /* "uvloop/cbhandles.pyx":80
 * 
 *         except Exception as ex:
 *             if cb_type == 1:             # <<<<<<<<<<<<<<
 *                 msg = 'Exception in callback {}'.format(callback)
 *             else:
 */
            goto __pyx_L23;
          }

          /* "uvloop/cbhandles.pyx":83
 *                 msg = 'Exception in callback {}'.format(callback)
 *             else:
 *                 msg = 'Exception in callback {}'.format(self.meth_name)             # <<<<<<<<<<<<<<
 * 
 *             self.loop.call_exception_handler({
 */
          /*else*/ {
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Exception_in_callback, __pyx_n_s_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 83, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_13 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_13)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_13);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
              }
            }
            if (!__pyx_t_13) {
              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_self->meth_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 83, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_6);
            } else {
              __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 83, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL;
              __Pyx_INCREF(__pyx_v_self->meth_name);
              __Pyx_GIVEREF(__pyx_v_self->meth_name);
              PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_self->meth_name);
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 83, __pyx_L21_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_v_msg = __pyx_t_6;
            __pyx_t_6 = 0;
          }
          __pyx_L23:;

          /* "uvloop/cbhandles.pyx":85
 *                 msg = 'Exception in callback {}'.format(self.meth_name)
 * 
 *             self.loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                 'message': msg,
 *                 'exception': ex
 */
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 85, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_8);

          /* "uvloop/cbhandles.pyx":86
 * 
 *             self.loop.call_exception_handler({
 *                 'message': msg,             # <<<<<<<<<<<<<<
 *                 'exception': ex
 *             })
 */
          __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 86, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_11);
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_message, __pyx_v_msg) < 0) __PYX_ERR(3, 86, __pyx_L21_error)

          /* "uvloop/cbhandles.pyx":88
 *                 'message': msg,
 *                 'exception': ex
 *             })             # <<<<<<<<<<<<<<
 * 
 *         finally:
 */
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_exception, __pyx_v_ex) < 0) __PYX_ERR(3, 86, __pyx_L21_error)
          __pyx_t_13 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
            }
          }
          if (!__pyx_t_13) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 85, __pyx_L21_error)
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(3, 85, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_GIVEREF(__pyx_t_11);
            PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_11);
            __pyx_t_11 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 85, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }

        /* "uvloop/cbhandles.pyx":79
 *                     cb_type))
 * 
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             if cb_type == 1:
 *                 msg = 'Exception in callback {}'.format(callback)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L22;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L21_error:;
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_2 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L9_except_error;
          }
          __pyx_L22:;
        }
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "uvloop/cbhandles.pyx":46
 *         # from a UVHandle (for instance UVIdle) callback.
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if cb_type == 1:
 *                 callback = self.arg1
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L5_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L14_try_end:;
    }
  }

  /* "uvloop/cbhandles.pyx":91
 * 
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code             # <<<<<<<<<<<<<<
 *             Py_DECREF(self)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_v_self->loop->_executing_py_code = __pyx_v_old_exec_py_code;

      /* "uvloop/cbhandles.pyx":92
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code
 *             Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _cancel(self):
 */
      Py_DECREF(((PyObject *)__pyx_v_self));
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_22);
      __Pyx_XGOTREF(__pyx_t_21);
      __Pyx_XGOTREF(__pyx_t_20);
      __pyx_t_15 = __pyx_lineno; __pyx_t_2 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
      {

        /* "uvloop/cbhandles.pyx":91
 * 
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code             # <<<<<<<<<<<<<<
 *             Py_DECREF(self)
 * 
 */
        __pyx_v_self->loop->_executing_py_code = __pyx_v_old_exec_py_code;

        /* "uvloop/cbhandles.pyx":92
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code
 *             Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _cancel(self):
 */
        Py_DECREF(((PyObject *)__pyx_v_self));
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_22);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0;
      __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_2; __pyx_filename = __pyx_t_23;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/cbhandles.pyx":26
 *                 self.__class__.__name__))
 * 
 *     cdef inline _run(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int cb_type
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("uvloop.loop.Handle._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":94
 *             Py_DECREF(self)
 * 
 *     cdef _cancel(self):             # <<<<<<<<<<<<<<
 *         self.cancelled = 1
 *         self.callback = NULL
 */

static PyObject *__pyx_f_6uvloop_4loop_6Handle__cancel(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_cancel", 0);

  /* "uvloop/cbhandles.pyx":95
 * 
 *     cdef _cancel(self):
 *         self.cancelled = 1             # <<<<<<<<<<<<<<
 *         self.callback = NULL
 *         self.arg1 = self.arg2 = self.arg3 = self.arg4 = self.arg5 = None
 */
  __pyx_v_self->cancelled = 1;

  /* "uvloop/cbhandles.pyx":96
 *     cdef _cancel(self):
 *         self.cancelled = 1
 *         self.callback = NULL             # <<<<<<<<<<<<<<
 *         self.arg1 = self.arg2 = self.arg3 = self.arg4 = self.arg5 = None
 * 
 */
  __pyx_v_self->callback = NULL;

  /* "uvloop/cbhandles.pyx":97
 *         self.cancelled = 1
 *         self.callback = NULL
 *         self.arg1 = self.arg2 = self.arg3 = self.arg4 = self.arg5 = None             # <<<<<<<<<<<<<<
 * 
 *     # Public API
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg1);
  __Pyx_DECREF(__pyx_v_self->arg1);
  __pyx_v_self->arg1 = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg2);
  __Pyx_DECREF(__pyx_v_self->arg2);
  __pyx_v_self->arg2 = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg3);
  __Pyx_DECREF(__pyx_v_self->arg3);
  __pyx_v_self->arg3 = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg4);
  __Pyx_DECREF(__pyx_v_self->arg4);
  __pyx_v_self->arg4 = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg5);
  __Pyx_DECREF(__pyx_v_self->arg5);
  __pyx_v_self->arg5 = Py_None;

  /* "uvloop/cbhandles.pyx":94
 *             Py_DECREF(self)
 * 
 *     cdef _cancel(self):             # <<<<<<<<<<<<<<
 *         self.cancelled = 1
 *         self.callback = NULL
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":101
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         if self.cancelled:
 *             return '<Handle cancelled {:#x}>'.format(id(self))
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Handle_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Handle_5__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Handle_4__repr__(((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Handle_4__repr__(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/cbhandles.pyx":102
 * 
 *     def __repr__(self):
 *         if self.cancelled:             # <<<<<<<<<<<<<<
 *             return '<Handle cancelled {:#x}>'.format(id(self))
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->cancelled != 0);
  if (__pyx_t_1) {

    /* "uvloop/cbhandles.pyx":103
 *     def __repr__(self):
 *         if self.cancelled:
 *             return '<Handle cancelled {:#x}>'.format(id(self))             # <<<<<<<<<<<<<<
 *         else:
 *             return '<Handle {!r} {:#x}>'.format(
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Handle_cancelled_x, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 103, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "uvloop/cbhandles.pyx":102
 * 
 *     def __repr__(self):
 *         if self.cancelled:             # <<<<<<<<<<<<<<
 *             return '<Handle cancelled {:#x}>'.format(id(self))
 *         else:
 */
  }

  /* "uvloop/cbhandles.pyx":105
 *             return '<Handle cancelled {:#x}>'.format(id(self))
 *         else:
 *             return '<Handle {!r} {:#x}>'.format(             # <<<<<<<<<<<<<<
 *                 self.arg1 if self.cb_type == 1 else self.meth_name,
 *                 id(self))
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Handle_r_x, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/cbhandles.pyx":106
 *         else:
 *             return '<Handle {!r} {:#x}>'.format(
 *                 self.arg1 if self.cb_type == 1 else self.meth_name,             # <<<<<<<<<<<<<<
 *                 id(self))
 * 
 */
    if (((__pyx_v_self->cb_type == 1) != 0)) {
      __Pyx_INCREF(__pyx_v_self->arg1);
      __pyx_t_6 = __pyx_v_self->arg1;
    } else {
      __Pyx_INCREF(__pyx_v_self->meth_name);
      __pyx_t_6 = __pyx_v_self->meth_name;
    }

    /* "uvloop/cbhandles.pyx":107
 *             return '<Handle {!r} {:#x}>'.format(
 *                 self.arg1 if self.cb_type == 1 else self.meth_name,
 *                 id(self))             # <<<<<<<<<<<<<<
 * 
 *     def cancel(self):
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self));
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
    __pyx_t_6 = 0;
    __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/cbhandles.pyx":101
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         if self.cancelled:
 *             return '<Handle cancelled {:#x}>'.format(id(self))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Handle.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":109
 *                 id(self))
 * 
 *     def cancel(self):             # <<<<<<<<<<<<<<
 *         self._cancel()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Handle_7cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Handle_7cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Handle_6cancel(((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Handle_6cancel(struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "uvloop/cbhandles.pyx":110
 * 
 *     def cancel(self):
 *         self._cancel()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->__pyx_vtab)->_cancel(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":109
 *                 id(self))
 * 
 *     def cancel(self):             # <<<<<<<<<<<<<<
 *         self._cancel()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Handle.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":116
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class TimerHandle:
 *     def __cinit__(self, Loop loop, object callback, object args,             # <<<<<<<<<<<<<<
 *                   uint64_t delay):
 * 
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_11TimerHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_11TimerHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  uint64_t __pyx_v_delay;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_callback,&__pyx_n_s_args,&__pyx_n_s_delay,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(3, 116, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(3, 116, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_delay)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(3, 116, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(3, 116, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)values[0]);
    __pyx_v_callback = values[1];
    __pyx_v_args = values[2];
    __pyx_v_delay = __Pyx_PyInt_As_uint64_t(values[3]); if (unlikely((__pyx_v_delay == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 117, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 116, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.TimerHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6uvloop_4loop_Loop, 1, "loop", 0))) __PYX_ERR(3, 116, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_11TimerHandle___cinit__(((struct __pyx_obj_6uvloop_4loop_TimerHandle *)__pyx_v_self), __pyx_v_loop, __pyx_v_callback, __pyx_v_args, __pyx_v_delay);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_11TimerHandle___cinit__(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_callback, PyObject *__pyx_v_args, uint64_t __pyx_v_delay) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/cbhandles.pyx":119
 *                   uint64_t delay):
 * 
 *         self.loop = loop             # <<<<<<<<<<<<<<
 *         self.callback = callback
 *         self.args = args
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_loop));
  __Pyx_GOTREF(__pyx_v_self->loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->loop));
  __pyx_v_self->loop = __pyx_v_loop;

  /* "uvloop/cbhandles.pyx":120
 * 
 *         self.loop = loop
 *         self.callback = callback             # <<<<<<<<<<<<<<
 *         self.args = args
 *         self.closed = 0
 */
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  __Pyx_GOTREF(__pyx_v_self->callback);
  __Pyx_DECREF(__pyx_v_self->callback);
  __pyx_v_self->callback = __pyx_v_callback;

  /* "uvloop/cbhandles.pyx":121
 *         self.loop = loop
 *         self.callback = callback
 *         self.args = args             # <<<<<<<<<<<<<<
 *         self.closed = 0
 * 
 */
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  __Pyx_GOTREF(__pyx_v_self->args);
  __Pyx_DECREF(__pyx_v_self->args);
  __pyx_v_self->args = __pyx_v_args;

  /* "uvloop/cbhandles.pyx":122
 *         self.callback = callback
 *         self.args = args
 *         self.closed = 0             # <<<<<<<<<<<<<<
 * 
 *         self.timer = UVTimer.new(
 */
  __pyx_v_self->closed = 0;

  /* "uvloop/cbhandles.pyx":124
 *         self.closed = 0
 * 
 *         self.timer = UVTimer.new(             # <<<<<<<<<<<<<<
 *             loop, <method_t*>&self._run, self, delay)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6uvloop_4loop_7UVTimer_new(__pyx_v_loop, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle *)__pyx_v_self->__pyx_vtab)->_run)), ((PyObject *)__pyx_v_self), __pyx_v_delay)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->timer);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->timer));
  __pyx_v_self->timer = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":127
 *             loop, <method_t*>&self._run, self, delay)
 * 
 *         self.timer.start()             # <<<<<<<<<<<<<<
 * 
 *         # Only add to loop._timers when `self.timer` is successfully created
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->timer->__pyx_base.__pyx_vtab)->start(__pyx_v_self->timer); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":130
 * 
 *         # Only add to loop._timers when `self.timer` is successfully created
 *         loop._timers.add(self)             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
  if (unlikely(__pyx_v_loop->_timers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
    __PYX_ERR(3, 130, __pyx_L1_error)
  }
  __pyx_t_2 = PySet_Add(__pyx_v_loop->_timers, ((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 130, __pyx_L1_error)

  /* "uvloop/cbhandles.pyx":116
 * @cython.freelist(DEFAULT_FREELIST_SIZE)
 * cdef class TimerHandle:
 *     def __cinit__(self, Loop loop, object callback, object args,             # <<<<<<<<<<<<<<
 *                   uint64_t delay):
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TimerHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":142
 *                 raise RuntimeError('active TimerHandle is deallacating')
 * 
 *     cdef _cancel(self):             # <<<<<<<<<<<<<<
 *         if self.closed == 1:
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_11TimerHandle__cancel(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  __Pyx_RefNannySetupContext("_cancel", 0);

  /* "uvloop/cbhandles.pyx":143
 * 
 *     cdef _cancel(self):
 *         if self.closed == 1:             # <<<<<<<<<<<<<<
 *             return
 *         self.closed = 1
 */
  __pyx_t_1 = ((__pyx_v_self->closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/cbhandles.pyx":144
 *     cdef _cancel(self):
 *         if self.closed == 1:
 *             return             # <<<<<<<<<<<<<<
 *         self.closed = 1
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/cbhandles.pyx":143
 * 
 *     cdef _cancel(self):
 *         if self.closed == 1:             # <<<<<<<<<<<<<<
 *             return
 *         self.closed = 1
 */
  }

  /* "uvloop/cbhandles.pyx":145
 *         if self.closed == 1:
 *             return
 *         self.closed = 1             # <<<<<<<<<<<<<<
 * 
 *         self.callback = None
 */
  __pyx_v_self->closed = 1;

  /* "uvloop/cbhandles.pyx":147
 *         self.closed = 1
 * 
 *         self.callback = None             # <<<<<<<<<<<<<<
 *         self.args = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->callback);
  __Pyx_DECREF(__pyx_v_self->callback);
  __pyx_v_self->callback = Py_None;

  /* "uvloop/cbhandles.pyx":148
 * 
 *         self.callback = None
 *         self.args = None             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->args);
  __Pyx_DECREF(__pyx_v_self->args);
  __pyx_v_self->args = Py_None;

  /* "uvloop/cbhandles.pyx":150
 *         self.args = None
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self.loop._timers.remove(self)
 *         finally:
 */
  /*try:*/ {

    /* "uvloop/cbhandles.pyx":151
 * 
 *         try:
 *             self.loop._timers.remove(self)             # <<<<<<<<<<<<<<
 *         finally:
 *             self.timer._close()
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop->_timers, __pyx_n_s_remove); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 151, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 151, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 151, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 151, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "uvloop/cbhandles.pyx":153
 *             self.loop._timers.remove(self)
 *         finally:
 *             self.timer._close()             # <<<<<<<<<<<<<<
 *             self.timer = None  # let it die asap
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->timer->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->timer)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/cbhandles.pyx":154
 *         finally:
 *             self.timer._close()
 *             self.timer = None  # let it die asap             # <<<<<<<<<<<<<<
 * 
 *     cdef _run(self):
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->timer);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->timer));
      __pyx_v_self->timer = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)Py_None);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
      {

        /* "uvloop/cbhandles.pyx":153
 *             self.loop._timers.remove(self)
 *         finally:
 *             self.timer._close()             # <<<<<<<<<<<<<<
 *             self.timer = None  # let it die asap
 * 
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->timer->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self->timer)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 153, __pyx_L8_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/cbhandles.pyx":154
 *         finally:
 *             self.timer._close()
 *             self.timer = None  # let it die asap             # <<<<<<<<<<<<<<
 * 
 *     cdef _run(self):
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_self->timer);
        __Pyx_DECREF(((PyObject *)__pyx_v_self->timer));
        __pyx_v_self->timer = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)Py_None);
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
      goto __pyx_L1_error;
      __pyx_L8_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/cbhandles.pyx":142
 *                 raise RuntimeError('active TimerHandle is deallacating')
 * 
 *     cdef _cancel(self):             # <<<<<<<<<<<<<<
 *         if self.closed == 1:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.TimerHandle._cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":156
 *             self.timer = None  # let it die asap
 * 
 *     cdef _run(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             bint old_exec_py_code
 */

static PyObject *__pyx_f_6uvloop_4loop_11TimerHandle__run(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self) {
  int __pyx_v_old_exec_py_code;
  PyObject *__pyx_v_callback = NULL;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_t_17;
  char const *__pyx_t_18;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  char const *__pyx_t_25;
  __Pyx_RefNannySetupContext("_run", 0);

  /* "uvloop/cbhandles.pyx":160
 *             bint old_exec_py_code
 * 
 *         if self.closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/cbhandles.pyx":161
 * 
 *         if self.closed == 1:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         callback = self.callback
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/cbhandles.pyx":160
 *             bint old_exec_py_code
 * 
 *         if self.closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/cbhandles.pyx":163
 *             return
 * 
 *         callback = self.callback             # <<<<<<<<<<<<<<
 *         args = self.args
 *         self._cancel()
 */
  __pyx_t_2 = __pyx_v_self->callback;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_callback = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "uvloop/cbhandles.pyx":164
 * 
 *         callback = self.callback
 *         args = self.args             # <<<<<<<<<<<<<<
 *         self._cancel()
 * 
 */
  __pyx_t_2 = __pyx_v_self->args;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_args = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "uvloop/cbhandles.pyx":165
 *         callback = self.callback
 *         args = self.args
 *         self._cancel()             # <<<<<<<<<<<<<<
 * 
 *         Py_INCREF(self)  # Since _run is a cdef and there's no BoundMethod,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle *)__pyx_v_self->__pyx_vtab)->_cancel(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/cbhandles.pyx":167
 *         self._cancel()
 * 
 *         Py_INCREF(self)  # Since _run is a cdef and there's no BoundMethod,             # <<<<<<<<<<<<<<
 *                          # we guard 'self' manually.
 *         old_exec_py_code = self.loop._executing_py_code
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/cbhandles.pyx":169
 *         Py_INCREF(self)  # Since _run is a cdef and there's no BoundMethod,
 *                          # we guard 'self' manually.
 *         old_exec_py_code = self.loop._executing_py_code             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if old_exec_py_code == 1:
 */
  __pyx_t_1 = __pyx_v_self->loop->_executing_py_code;
  __pyx_v_old_exec_py_code = __pyx_t_1;

  /* "uvloop/cbhandles.pyx":173
 *             if old_exec_py_code == 1:
 *                 raise RuntimeError('Python exec-mode before TimerHandle._run')
 *         self.loop._executing_py_code = 1             # <<<<<<<<<<<<<<
 *         try:
 *             if args is not None:
 */
  __pyx_v_self->loop->_executing_py_code = 1;

  /* "uvloop/cbhandles.pyx":174
 *                 raise RuntimeError('Python exec-mode before TimerHandle._run')
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if args is not None:
 *                 callback(*args)
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/cbhandles.pyx":175
 *         self.loop._executing_py_code = 1
 *         try:
 *             if args is not None:             # <<<<<<<<<<<<<<
 *                 callback(*args)
 *             else:
 */
        __pyx_t_1 = (__pyx_v_args != Py_None);
        __pyx_t_6 = (__pyx_t_1 != 0);
        if (__pyx_t_6) {

          /* "uvloop/cbhandles.pyx":176
 *         try:
 *             if args is not None:
 *                 callback(*args)             # <<<<<<<<<<<<<<
 *             else:
 *                 callback()
 */
          __pyx_t_2 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 176, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_callback, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 176, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "uvloop/cbhandles.pyx":175
 *         self.loop._executing_py_code = 1
 *         try:
 *             if args is not None:             # <<<<<<<<<<<<<<
 *                 callback(*args)
 *             else:
 */
          goto __pyx_L15;
        }

        /* "uvloop/cbhandles.pyx":178
 *                 callback(*args)
 *             else:
 *                 callback()             # <<<<<<<<<<<<<<
 *         except Exception as ex:
 *             self.loop.call_exception_handler({
 */
        /*else*/ {
          __Pyx_INCREF(__pyx_v_callback);
          __pyx_t_2 = __pyx_v_callback; __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_2, function);
            }
          }
          if (__pyx_t_8) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 178, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          } else {
            __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 178, __pyx_L7_error)
          }
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_L15:;

        /* "uvloop/cbhandles.pyx":174
 *                 raise RuntimeError('Python exec-mode before TimerHandle._run')
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if args is not None:
 *                 callback(*args)
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/cbhandles.pyx":179
 *             else:
 *                 callback()
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             self.loop.call_exception_handler({
 *                 'message': 'Exception in callback {}'.format(callback),
 */
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_9) {
        __Pyx_AddTraceback("uvloop.loop.TimerHandle._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(3, 179, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_2);
        __pyx_v_ex = __pyx_t_2;
        /*try:*/ {

          /* "uvloop/cbhandles.pyx":180
 *                 callback()
 *         except Exception as ex:
 *             self.loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                 'message': 'Exception in callback {}'.format(callback),
 *                 'exception': ex
 */
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 180, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_11);

          /* "uvloop/cbhandles.pyx":181
 *         except Exception as ex:
 *             self.loop.call_exception_handler({
 *                 'message': 'Exception in callback {}'.format(callback),             # <<<<<<<<<<<<<<
 *                 'exception': ex
 *             })
 */
          __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 181, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Exception_in_callback, __pyx_n_s_format); if (unlikely(!__pyx_t_14)) __PYX_ERR(3, 181, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_15 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
            if (likely(__pyx_t_15)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_15);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_14, function);
            }
          }
          if (!__pyx_t_15) {
            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_callback); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 181, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_13);
          } else {
            __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(3, 181, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_16);
            __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL;
            __Pyx_INCREF(__pyx_v_callback);
            __Pyx_GIVEREF(__pyx_v_callback);
            PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_v_callback);
            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_16, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 181, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          }
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_message, __pyx_t_13) < 0) __PYX_ERR(3, 181, __pyx_L21_error)
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

          /* "uvloop/cbhandles.pyx":183
 *                 'message': 'Exception in callback {}'.format(callback),
 *                 'exception': ex
 *             })             # <<<<<<<<<<<<<<
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code
 */
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_exception, __pyx_v_ex) < 0) __PYX_ERR(3, 181, __pyx_L21_error)
          __pyx_t_13 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          if (!__pyx_t_13) {
            __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 180, __pyx_L21_error)
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else {
            __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(3, 180, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_GIVEREF(__pyx_t_12);
            PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_12);
            __pyx_t_12 = 0;
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 180, __pyx_L21_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }

        /* "uvloop/cbhandles.pyx":179
 *             else:
 *                 callback()
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             self.loop.call_exception_handler({
 *                 'message': 'Exception in callback {}'.format(callback),
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L22;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L21_error:;
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_24);
            __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
            }
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
            goto __pyx_L9_except_error;
          }
          __pyx_L22:;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "uvloop/cbhandles.pyx":174
 *                 raise RuntimeError('Python exec-mode before TimerHandle._run')
 *         self.loop._executing_py_code = 1
 *         try:             # <<<<<<<<<<<<<<
 *             if args is not None:
 *                 callback(*args)
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L5_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L14_try_end:;
    }
  }

  /* "uvloop/cbhandles.pyx":185
 *             })
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code             # <<<<<<<<<<<<<<
 *             Py_DECREF(self)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_v_self->loop->_executing_py_code = __pyx_v_old_exec_py_code;

      /* "uvloop/cbhandles.pyx":186
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code
 *             Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     # Public API
 */
      Py_DECREF(((PyObject *)__pyx_v_self));
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_24);
      __Pyx_XGOTREF(__pyx_t_23);
      __Pyx_XGOTREF(__pyx_t_22);
      __pyx_t_17 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
      {

        /* "uvloop/cbhandles.pyx":185
 *             })
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code             # <<<<<<<<<<<<<<
 *             Py_DECREF(self)
 * 
 */
        __pyx_v_self->loop->_executing_py_code = __pyx_v_old_exec_py_code;

        /* "uvloop/cbhandles.pyx":186
 *         finally:
 *             self.loop._executing_py_code = old_exec_py_code
 *             Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     # Public API
 */
        Py_DECREF(((PyObject *)__pyx_v_self));
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_24);
        __Pyx_XGIVEREF(__pyx_t_23);
        __Pyx_XGIVEREF(__pyx_t_22);
        __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
      __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_25;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/cbhandles.pyx":156
 *             self.timer = None  # let it die asap
 * 
 *     cdef _run(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             bint old_exec_py_code
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("uvloop.loop.TimerHandle._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":190
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_11TimerHandle_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_11TimerHandle_3__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_11TimerHandle_2__repr__(((struct __pyx_obj_6uvloop_4loop_TimerHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_11TimerHandle_2__repr__(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/cbhandles.pyx":191
 * 
 *     def __repr__(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/cbhandles.pyx":192
 *     def __repr__(self):
 *         if self.closed:
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))             # <<<<<<<<<<<<<<
 *         else:
 *             return '<TimerHandle {!r} {:#x}>'.format(self.callback, id(self))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_TimerHandle_cancelled_x, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 192, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "uvloop/cbhandles.pyx":191
 * 
 *     def __repr__(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))
 *         else:
 */
  }

  /* "uvloop/cbhandles.pyx":194
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))
 *         else:
 *             return '<TimerHandle {!r} {:#x}>'.format(self.callback, id(self))             # <<<<<<<<<<<<<<
 * 
 *     def cancel(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_TimerHandle_r_x, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_self));
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->callback);
    __Pyx_GIVEREF(__pyx_v_self->callback);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_v_self->callback);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "uvloop/cbhandles.pyx":190
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return '<TimerHandle cancelled {:#x}>'.format(id(self))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.TimerHandle.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":196
 *             return '<TimerHandle {!r} {:#x}>'.format(self.callback, id(self))
 * 
 *     def cancel(self):             # <<<<<<<<<<<<<<
 *         self._cancel()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_11TimerHandle_5cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_11TimerHandle_5cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_11TimerHandle_4cancel(((struct __pyx_obj_6uvloop_4loop_TimerHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_11TimerHandle_4cancel(struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "uvloop/cbhandles.pyx":197
 * 
 *     def cancel(self):
 *         self._cancel()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle *)__pyx_v_self->__pyx_vtab)->_cancel(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":196
 *             return '<TimerHandle {!r} {:#x}>'.format(self.callback, id(self))
 * 
 *     def cancel(self):             # <<<<<<<<<<<<<<
 *         self._cancel()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TimerHandle.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":200
 * 
 * 
 * cdef new_Handle(Loop loop, object callback, object args):             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 */

static PyObject *__pyx_f_6uvloop_4loop_new_Handle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_Handle", 0);

  /* "uvloop/cbhandles.pyx":202
 * cdef new_Handle(Loop loop, object callback, object args):
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 202, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":203
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 1
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":205
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 1             # <<<<<<<<<<<<<<
 * 
 *     handle.arg1 = callback
 */
  __pyx_v_handle->cb_type = 1;

  /* "uvloop/cbhandles.pyx":207
 *     handle.cb_type = 1
 * 
 *     handle.arg1 = callback             # <<<<<<<<<<<<<<
 *     handle.arg2 = args
 * 
 */
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_callback;

  /* "uvloop/cbhandles.pyx":208
 * 
 *     handle.arg1 = callback
 *     handle.arg2 = args             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  __Pyx_GOTREF(__pyx_v_handle->arg2);
  __Pyx_DECREF(__pyx_v_handle->arg2);
  __pyx_v_handle->arg2 = __pyx_v_args;

  /* "uvloop/cbhandles.pyx":210
 *     handle.arg2 = args
 * 
 *     return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":200
 * 
 * 
 * cdef new_Handle(Loop loop, object callback, object args):             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_Handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":213
 * 
 * 
 * cdef new_MethodHandle(Loop loop, str name, method_t *callback, object ctx):             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 */

static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_name, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_MethodHandle", 0);

  /* "uvloop/cbhandles.pyx":215
 * cdef new_MethodHandle(Loop loop, str name, method_t *callback, object ctx):
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 215, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":216
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 2
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":218
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 2             # <<<<<<<<<<<<<<
 *     handle.meth_name = name
 * 
 */
  __pyx_v_handle->cb_type = 2;

  /* "uvloop/cbhandles.pyx":219
 * 
 *     handle.cb_type = 2
 *     handle.meth_name = name             # <<<<<<<<<<<<<<
 * 
 *     handle.callback = <void*> callback
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_handle->meth_name);
  __Pyx_DECREF(__pyx_v_handle->meth_name);
  __pyx_v_handle->meth_name = __pyx_v_name;

  /* "uvloop/cbhandles.pyx":221
 *     handle.meth_name = name
 * 
 *     handle.callback = <void*> callback             # <<<<<<<<<<<<<<
 *     handle.arg1 = ctx
 * 
 */
  __pyx_v_handle->callback = ((void *)__pyx_v_callback);

  /* "uvloop/cbhandles.pyx":222
 * 
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_ctx;

  /* "uvloop/cbhandles.pyx":224
 *     handle.arg1 = ctx
 * 
 *     return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":213
 * 
 * 
 * cdef new_MethodHandle(Loop loop, str name, method_t *callback, object ctx):             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_MethodHandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":227
 * 
 * 
 * cdef new_MethodHandle1(Loop loop, str name, method1_t *callback,             # <<<<<<<<<<<<<<
 *                        object ctx, object arg):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle1(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_name, __pyx_t_6uvloop_4loop_method1_t *__pyx_v_callback, PyObject *__pyx_v_ctx, PyObject *__pyx_v_arg) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_MethodHandle1", 0);

  /* "uvloop/cbhandles.pyx":231
 * 
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 231, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":232
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 3
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":234
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 3             # <<<<<<<<<<<<<<
 *     handle.meth_name = name
 * 
 */
  __pyx_v_handle->cb_type = 3;

  /* "uvloop/cbhandles.pyx":235
 * 
 *     handle.cb_type = 3
 *     handle.meth_name = name             # <<<<<<<<<<<<<<
 * 
 *     handle.callback = <void*> callback
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_handle->meth_name);
  __Pyx_DECREF(__pyx_v_handle->meth_name);
  __pyx_v_handle->meth_name = __pyx_v_name;

  /* "uvloop/cbhandles.pyx":237
 *     handle.meth_name = name
 * 
 *     handle.callback = <void*> callback             # <<<<<<<<<<<<<<
 *     handle.arg1 = ctx
 *     handle.arg2 = arg
 */
  __pyx_v_handle->callback = ((void *)__pyx_v_callback);

  /* "uvloop/cbhandles.pyx":238
 * 
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx             # <<<<<<<<<<<<<<
 *     handle.arg2 = arg
 * 
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_ctx;

  /* "uvloop/cbhandles.pyx":239
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx
 *     handle.arg2 = arg             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_arg);
  __Pyx_GIVEREF(__pyx_v_arg);
  __Pyx_GOTREF(__pyx_v_handle->arg2);
  __Pyx_DECREF(__pyx_v_handle->arg2);
  __pyx_v_handle->arg2 = __pyx_v_arg;

  /* "uvloop/cbhandles.pyx":241
 *     handle.arg2 = arg
 * 
 *     return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":227
 * 
 * 
 * cdef new_MethodHandle1(Loop loop, str name, method1_t *callback,             # <<<<<<<<<<<<<<
 *                        object ctx, object arg):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_MethodHandle1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":244
 * 
 * 
 * cdef new_MethodHandle2(Loop loop, str name, method2_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle2(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_name, __pyx_t_6uvloop_4loop_method2_t *__pyx_v_callback, PyObject *__pyx_v_ctx, PyObject *__pyx_v_arg1, PyObject *__pyx_v_arg2) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_MethodHandle2", 0);

  /* "uvloop/cbhandles.pyx":248
 * 
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 248, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":249
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 4
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":251
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 4             # <<<<<<<<<<<<<<
 *     handle.meth_name = name
 * 
 */
  __pyx_v_handle->cb_type = 4;

  /* "uvloop/cbhandles.pyx":252
 * 
 *     handle.cb_type = 4
 *     handle.meth_name = name             # <<<<<<<<<<<<<<
 * 
 *     handle.callback = <void*> callback
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_handle->meth_name);
  __Pyx_DECREF(__pyx_v_handle->meth_name);
  __pyx_v_handle->meth_name = __pyx_v_name;

  /* "uvloop/cbhandles.pyx":254
 *     handle.meth_name = name
 * 
 *     handle.callback = <void*> callback             # <<<<<<<<<<<<<<
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 */
  __pyx_v_handle->callback = ((void *)__pyx_v_callback);

  /* "uvloop/cbhandles.pyx":255
 * 
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx             # <<<<<<<<<<<<<<
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_ctx;

  /* "uvloop/cbhandles.pyx":256
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1             # <<<<<<<<<<<<<<
 *     handle.arg3 = arg2
 * 
 */
  __Pyx_INCREF(__pyx_v_arg1);
  __Pyx_GIVEREF(__pyx_v_arg1);
  __Pyx_GOTREF(__pyx_v_handle->arg2);
  __Pyx_DECREF(__pyx_v_handle->arg2);
  __pyx_v_handle->arg2 = __pyx_v_arg1;

  /* "uvloop/cbhandles.pyx":257
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_arg2);
  __Pyx_GIVEREF(__pyx_v_arg2);
  __Pyx_GOTREF(__pyx_v_handle->arg3);
  __Pyx_DECREF(__pyx_v_handle->arg3);
  __pyx_v_handle->arg3 = __pyx_v_arg2;

  /* "uvloop/cbhandles.pyx":259
 *     handle.arg3 = arg2
 * 
 *     return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":244
 * 
 * 
 * cdef new_MethodHandle2(Loop loop, str name, method2_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_MethodHandle2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":262
 * 
 * 
 * cdef new_MethodHandle3(Loop loop, str name, method3_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2, object arg3):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle3(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_name, __pyx_t_6uvloop_4loop_method3_t *__pyx_v_callback, PyObject *__pyx_v_ctx, PyObject *__pyx_v_arg1, PyObject *__pyx_v_arg2, PyObject *__pyx_v_arg3) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_MethodHandle3", 0);

  /* "uvloop/cbhandles.pyx":266
 * 
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 266, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":267
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 5
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":269
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 5             # <<<<<<<<<<<<<<
 *     handle.meth_name = name
 * 
 */
  __pyx_v_handle->cb_type = 5;

  /* "uvloop/cbhandles.pyx":270
 * 
 *     handle.cb_type = 5
 *     handle.meth_name = name             # <<<<<<<<<<<<<<
 * 
 *     handle.callback = <void*> callback
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_handle->meth_name);
  __Pyx_DECREF(__pyx_v_handle->meth_name);
  __pyx_v_handle->meth_name = __pyx_v_name;

  /* "uvloop/cbhandles.pyx":272
 *     handle.meth_name = name
 * 
 *     handle.callback = <void*> callback             # <<<<<<<<<<<<<<
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 */
  __pyx_v_handle->callback = ((void *)__pyx_v_callback);

  /* "uvloop/cbhandles.pyx":273
 * 
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx             # <<<<<<<<<<<<<<
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_ctx;

  /* "uvloop/cbhandles.pyx":274
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1             # <<<<<<<<<<<<<<
 *     handle.arg3 = arg2
 *     handle.arg4 = arg3
 */
  __Pyx_INCREF(__pyx_v_arg1);
  __Pyx_GIVEREF(__pyx_v_arg1);
  __Pyx_GOTREF(__pyx_v_handle->arg2);
  __Pyx_DECREF(__pyx_v_handle->arg2);
  __pyx_v_handle->arg2 = __pyx_v_arg1;

  /* "uvloop/cbhandles.pyx":275
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2             # <<<<<<<<<<<<<<
 *     handle.arg4 = arg3
 * 
 */
  __Pyx_INCREF(__pyx_v_arg2);
  __Pyx_GIVEREF(__pyx_v_arg2);
  __Pyx_GOTREF(__pyx_v_handle->arg3);
  __Pyx_DECREF(__pyx_v_handle->arg3);
  __pyx_v_handle->arg3 = __pyx_v_arg2;

  /* "uvloop/cbhandles.pyx":276
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2
 *     handle.arg4 = arg3             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_arg3);
  __Pyx_GIVEREF(__pyx_v_arg3);
  __Pyx_GOTREF(__pyx_v_handle->arg4);
  __Pyx_DECREF(__pyx_v_handle->arg4);
  __pyx_v_handle->arg4 = __pyx_v_arg3;

  /* "uvloop/cbhandles.pyx":278
 *     handle.arg4 = arg3
 * 
 *     return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":262
 * 
 * 
 * cdef new_MethodHandle3(Loop loop, str name, method3_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2, object arg3):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_MethodHandle3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/cbhandles.pyx":281
 * 
 * 
 * cdef new_MethodHandle4(Loop loop, str name, method4_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2, object arg3, object arg4):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_new_MethodHandle4(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_name, __pyx_t_6uvloop_4loop_method4_t *__pyx_v_callback, PyObject *__pyx_v_ctx, PyObject *__pyx_v_arg1, PyObject *__pyx_v_arg2, PyObject *__pyx_v_arg3, PyObject *__pyx_v_arg4) {
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_handle = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new_MethodHandle4", 0);

  /* "uvloop/cbhandles.pyx":285
 * 
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)             # <<<<<<<<<<<<<<
 *     handle._set_loop(loop)
 * 
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_Handle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_Handle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_Handle)))) __PYX_ERR(3, 285, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":286
 *     cdef Handle handle
 *     handle = Handle.__new__(Handle)
 *     handle._set_loop(loop)             # <<<<<<<<<<<<<<
 * 
 *     handle.cb_type = 6
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_6Handle__set_loop(__pyx_v_handle, __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/cbhandles.pyx":288
 *     handle._set_loop(loop)
 * 
 *     handle.cb_type = 6             # <<<<<<<<<<<<<<
 *     handle.meth_name = name
 * 
 */
  __pyx_v_handle->cb_type = 6;

  /* "uvloop/cbhandles.pyx":289
 * 
 *     handle.cb_type = 6
 *     handle.meth_name = name             # <<<<<<<<<<<<<<
 * 
 *     handle.callback = <void*> callback
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_handle->meth_name);
  __Pyx_DECREF(__pyx_v_handle->meth_name);
  __pyx_v_handle->meth_name = __pyx_v_name;

  /* "uvloop/cbhandles.pyx":291
 *     handle.meth_name = name
 * 
 *     handle.callback = <void*> callback             # <<<<<<<<<<<<<<
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 */
  __pyx_v_handle->callback = ((void *)__pyx_v_callback);

  /* "uvloop/cbhandles.pyx":292
 * 
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx             # <<<<<<<<<<<<<<
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_handle->arg1);
  __Pyx_DECREF(__pyx_v_handle->arg1);
  __pyx_v_handle->arg1 = __pyx_v_ctx;

  /* "uvloop/cbhandles.pyx":293
 *     handle.callback = <void*> callback
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1             # <<<<<<<<<<<<<<
 *     handle.arg3 = arg2
 *     handle.arg4 = arg3
 */
  __Pyx_INCREF(__pyx_v_arg1);
  __Pyx_GIVEREF(__pyx_v_arg1);
  __Pyx_GOTREF(__pyx_v_handle->arg2);
  __Pyx_DECREF(__pyx_v_handle->arg2);
  __pyx_v_handle->arg2 = __pyx_v_arg1;

  /* "uvloop/cbhandles.pyx":294
 *     handle.arg1 = ctx
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2             # <<<<<<<<<<<<<<
 *     handle.arg4 = arg3
 *     handle.arg5 = arg4
 */
  __Pyx_INCREF(__pyx_v_arg2);
  __Pyx_GIVEREF(__pyx_v_arg2);
  __Pyx_GOTREF(__pyx_v_handle->arg3);
  __Pyx_DECREF(__pyx_v_handle->arg3);
  __pyx_v_handle->arg3 = __pyx_v_arg2;

  /* "uvloop/cbhandles.pyx":295
 *     handle.arg2 = arg1
 *     handle.arg3 = arg2
 *     handle.arg4 = arg3             # <<<<<<<<<<<<<<
 *     handle.arg5 = arg4
 * 
 */
  __Pyx_INCREF(__pyx_v_arg3);
  __Pyx_GIVEREF(__pyx_v_arg3);
  __Pyx_GOTREF(__pyx_v_handle->arg4);
  __Pyx_DECREF(__pyx_v_handle->arg4);
  __pyx_v_handle->arg4 = __pyx_v_arg3;

  /* "uvloop/cbhandles.pyx":296
 *     handle.arg3 = arg2
 *     handle.arg4 = arg3
 *     handle.arg5 = arg4             # <<<<<<<<<<<<<<
 * 
 *     return handle
 */
  __Pyx_INCREF(__pyx_v_arg4);
  __Pyx_GIVEREF(__pyx_v_arg4);
  __Pyx_GOTREF(__pyx_v_handle->arg5);
  __Pyx_DECREF(__pyx_v_handle->arg5);
  __pyx_v_handle->arg5 = __pyx_v_arg4;

  /* "uvloop/cbhandles.pyx":298
 *     handle.arg5 = arg4
 * 
 *     return handle             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = ((PyObject *)__pyx_v_handle);
  goto __pyx_L0;

  /* "uvloop/cbhandles.pyx":281
 * 
 * 
 * cdef new_MethodHandle4(Loop loop, str name, method4_t *callback, object ctx,             # <<<<<<<<<<<<<<
 *                        object arg1, object arg2, object arg3, object arg4):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.new_MethodHandle4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":18
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._closed = 0
 *         self._inited = 0
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_8UVHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_8UVHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVHandle___cinit__(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_8UVHandle___cinit__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/handle.pyx":19
 * 
 *     def __cinit__(self):
 *         self._closed = 0             # <<<<<<<<<<<<<<
 *         self._inited = 0
 *         self._handle = NULL
 */
  __pyx_v_self->_closed = 0;

  /* "uvloop/handles/handle.pyx":20
 *     def __cinit__(self):
 *         self._closed = 0
 *         self._inited = 0             # <<<<<<<<<<<<<<
 *         self._handle = NULL
 *         self._loop = None
 */
  __pyx_v_self->_inited = 0;

  /* "uvloop/handles/handle.pyx":21
 *         self._closed = 0
 *         self._inited = 0
 *         self._handle = NULL             # <<<<<<<<<<<<<<
 *         self._loop = None
 * 
 */
  __pyx_v_self->_handle = NULL;

  /* "uvloop/handles/handle.pyx":22
 *         self._inited = 0
 *         self._handle = NULL
 *         self._loop = None             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_loop));
  __pyx_v_self->_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None);

  /* "uvloop/handles/handle.pyx":18
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._closed = 0
 *         self._inited = 0
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":24
 *         self._loop = None
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_8UVHandle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_8UVHandle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVHandle_2__init__(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_8UVHandle_2__init__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "uvloop/handles/handle.pyx":26
 *     def __init__(self):
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_is_not_supposed_to_be_instantia, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/handles/handle.pyx":27
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 *                 self.__class__.__name__))             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/handle.pyx":25
 * 
 *     def __init__(self):
 *         raise TypeError(             # <<<<<<<<<<<<<<
 *             '{} is not supposed to be instantiated from Python'.format(
 *                 self.__class__.__name__))
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 25, __pyx_L1_error)

  /* "uvloop/handles/handle.pyx":24
 *         self._loop = None
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{} is not supposed to be instantiated from Python'.format(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVHandle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":29
 *                 self.__class__.__name__))
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if self._loop is not None:
 */

/* Python wrapper */
static void __pyx_pw_6uvloop_4loop_8UVHandle_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6uvloop_4loop_8UVHandle_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_6uvloop_4loop_8UVHandle_4__dealloc__(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6uvloop_4loop_8UVHandle_4__dealloc__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "uvloop/handles/handle.pyx":40
 *                     .format(self.__class__.__name__))
 * 
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":41
 * 
 *         if self._handle is NULL:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         # -> When we're at this point, something is wrong <-
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":40
 *                     .format(self.__class__.__name__))
 * 
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":45
 *         # -> When we're at this point, something is wrong <-
 * 
 *         if self._handle.loop is NULL:             # <<<<<<<<<<<<<<
 *             # The handle wasn't initialized with "uv_{handle}_init"
 *             self._closed = 1
 */
  __pyx_t_1 = ((__pyx_v_self->_handle->loop == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":47
 *         if self._handle.loop is NULL:
 *             # The handle wasn't initialized with "uv_{handle}_init"
 *             self._closed = 1             # <<<<<<<<<<<<<<
 *             self._free()
 *             raise RuntimeError(
 */
    __pyx_v_self->_closed = 1;

    /* "uvloop/handles/handle.pyx":48
 *             # The handle wasn't initialized with "uv_{handle}_init"
 *             self._closed = 1
 *             self._free()             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 '{} is open in __dealloc__ with loop set to NULL'
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_self->__pyx_vtab)->_free(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":51
 *             raise RuntimeError(
 *                 '{} is open in __dealloc__ with loop set to NULL'
 *                 .format(self.__class__.__name__))             # <<<<<<<<<<<<<<
 * 
 *         if self._closed == 1:
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_is_open_in___dealloc___with_loo, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/handle.pyx":49
 *             self._closed = 1
 *             self._free()
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 '{} is open in __dealloc__ with loop set to NULL'
 *                 .format(self.__class__.__name__))
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 49, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":45
 *         # -> When we're at this point, something is wrong <-
 * 
 *         if self._handle.loop is NULL:             # <<<<<<<<<<<<<<
 *             # The handle wasn't initialized with "uv_{handle}_init"
 *             self._closed = 1
 */
  }

  /* "uvloop/handles/handle.pyx":53
 *                 .format(self.__class__.__name__))
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             # So _handle is not NULL and self._closed == 1?
 *             raise RuntimeError(
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":56
 *             # So _handle is not NULL and self._closed == 1?
 *             raise RuntimeError(
 *                 '{}.__dealloc__: _handle is NULL, _closed == 1'.format(             # <<<<<<<<<<<<<<
 *                     self.__class__.__name__))
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_dealloc____handle_is_NULL__cl, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":57
 *             raise RuntimeError(
 *                 '{}.__dealloc__: _handle is NULL, _closed == 1'.format(
 *                     self.__class__.__name__))             # <<<<<<<<<<<<<<
 * 
 *         # The handle is dealloced while open.  Let's try to close it.
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/handle.pyx":55
 *         if self._closed == 1:
 *             # So _handle is not NULL and self._closed == 1?
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 '{}.__dealloc__: _handle is NULL, _closed == 1'.format(
 *                     self.__class__.__name__))
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 55, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":53
 *                 .format(self.__class__.__name__))
 * 
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             # So _handle is not NULL and self._closed == 1?
 *             raise RuntimeError(
 */
  }

  /* "uvloop/handles/handle.pyx":62
 *         # Situations when this is possible include unhandled exceptions,
 *         # errors during Handle.__cinit__/__init__ etc.
 *         if self._inited:             # <<<<<<<<<<<<<<
 *             self._handle.data = <void*> __NOHANDLE__
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 */
  __pyx_t_1 = (__pyx_v_self->_inited != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":63
 *         # errors during Handle.__cinit__/__init__ etc.
 *         if self._inited:
 *             self._handle.data = <void*> __NOHANDLE__             # <<<<<<<<<<<<<<
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 *             self._handle = NULL
 */
    __pyx_v_self->_handle->data = ((void *)__pyx_v_6uvloop_4loop___NOHANDLE__);

    /* "uvloop/handles/handle.pyx":64
 *         if self._inited:
 *             self._handle.data = <void*> __NOHANDLE__
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors             # <<<<<<<<<<<<<<
 *             self._handle = NULL
 *             warnings_warn("unclosed resource {!r}".format(self),
 */
    uv_close(__pyx_v_self->_handle, __pyx_f_6uvloop_4loop___uv_close_handle_cb);

    /* "uvloop/handles/handle.pyx":65
 *             self._handle.data = <void*> __NOHANDLE__
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 *             self._handle = NULL             # <<<<<<<<<<<<<<
 *             warnings_warn("unclosed resource {!r}".format(self),
 *                 ResourceWarning)
 */
    __pyx_v_self->_handle = NULL;

    /* "uvloop/handles/handle.pyx":66
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 *             self._handle = NULL
 *             warnings_warn("unclosed resource {!r}".format(self),             # <<<<<<<<<<<<<<
 *                 ResourceWarning)
 *         else:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_unclosed_resource_r, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_self));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/handle.pyx":67
 *             self._handle = NULL
 *             warnings_warn("unclosed resource {!r}".format(self),
 *                 ResourceWarning)             # <<<<<<<<<<<<<<
 *         else:
 *             # The handle was allocated, but not initialized
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_warnings_warn);
    __pyx_t_4 = __pyx_v_6uvloop_4loop_warnings_warn; __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_t_3);
    __Pyx_INCREF(__pyx_builtin_ResourceWarning);
    __Pyx_GIVEREF(__pyx_builtin_ResourceWarning);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_builtin_ResourceWarning);
    __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":62
 *         # Situations when this is possible include unhandled exceptions,
 *         # errors during Handle.__cinit__/__init__ etc.
 *         if self._inited:             # <<<<<<<<<<<<<<
 *             self._handle.data = <void*> __NOHANDLE__
 *             uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 */
    goto __pyx_L6;
  }

  /* "uvloop/handles/handle.pyx":70
 *         else:
 *             # The handle was allocated, but not initialized
 *             self._closed = 1             # <<<<<<<<<<<<<<
 *             self._free()
 * 
 */
  /*else*/ {
    __pyx_v_self->_closed = 1;

    /* "uvloop/handles/handle.pyx":71
 *             # The handle was allocated, but not initialized
 *             self._closed = 1
 *             self._free()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_self->__pyx_vtab)->_free(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "uvloop/handles/handle.pyx":29
 *                 self.__class__.__name__))
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if self._loop is not None:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("uvloop.loop.UVHandle.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/handles/handle.pyx":74
 * 
 * 
 *     cdef _free(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self._handle)
 *         self._handle = NULL
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__free(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_free", 0);

  /* "uvloop/handles/handle.pyx":75
 * 
 *     cdef _free(self):
 *         PyMem_Free(self._handle)             # <<<<<<<<<<<<<<
 *         self._handle = NULL
 * 
 */
  PyMem_Free(__pyx_v_self->_handle);

  /* "uvloop/handles/handle.pyx":76
 *     cdef _free(self):
 *         PyMem_Free(self._handle)
 *         self._handle = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _abort_init(self):
 */
  __pyx_v_self->_handle = NULL;

  /* "uvloop/handles/handle.pyx":74
 * 
 * 
 *     cdef _free(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self._handle)
 *         self._handle = NULL
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":78
 *         self._handle = NULL
 * 
 *     cdef inline _abort_init(self):             # <<<<<<<<<<<<<<
 *         if self._handle is not NULL:
 *             self._free()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__abort_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_abort_init", 0);

  /* "uvloop/handles/handle.pyx":79
 * 
 *     cdef inline _abort_init(self):
 *         if self._handle is not NULL:             # <<<<<<<<<<<<<<
 *             self._free()
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_handle != NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":80
 *     cdef inline _abort_init(self):
 *         if self._handle is not NULL:
 *             self._free()             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_self->__pyx_vtab)->_free(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":79
 * 
 *     cdef inline _abort_init(self):
 *         if self._handle is not NULL:             # <<<<<<<<<<<<<<
 *             self._free()
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":91
 *                     '_abort_init: {}._closed is set'.format(name))
 * 
 *         self._closed = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _finish_init(self):
 */
  __pyx_v_self->_closed = 1;

  /* "uvloop/handles/handle.pyx":78
 *         self._handle = NULL
 * 
 *     cdef inline _abort_init(self):             # <<<<<<<<<<<<<<
 *         if self._handle is not NULL:
 *             self._free()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVHandle._abort_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":93
 *         self._closed = 1
 * 
 *     cdef inline _finish_init(self):             # <<<<<<<<<<<<<<
 *         self._inited = 1
 *         self._handle.data = <void*>self
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__finish_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_finish_init", 0);

  /* "uvloop/handles/handle.pyx":94
 * 
 *     cdef inline _finish_init(self):
 *         self._inited = 1             # <<<<<<<<<<<<<<
 *         self._handle.data = <void*>self
 * 
 */
  __pyx_v_self->_inited = 1;

  /* "uvloop/handles/handle.pyx":95
 *     cdef inline _finish_init(self):
 *         self._inited = 1
 *         self._handle.data = <void*>self             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _start_init(self, Loop loop):
 */
  __pyx_v_self->_handle->data = ((void *)__pyx_v_self);

  /* "uvloop/handles/handle.pyx":93
 *         self._closed = 1
 * 
 *     cdef inline _finish_init(self):             # <<<<<<<<<<<<<<
 *         self._inited = 1
 *         self._handle.data = <void*>self
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":97
 *         self._handle.data = <void*>self
 * 
 *     cdef inline _start_init(self, Loop loop):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if self._loop is not None:
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__start_init(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_start_init", 0);

  /* "uvloop/handles/handle.pyx":108
 *             loop._debug_handles_current.update([cls_name])
 * 
 *         self._loop = loop             # <<<<<<<<<<<<<<
 * 
 *     cdef inline bint _is_alive(self):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_loop));
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_loop));
  __pyx_v_self->_loop = __pyx_v_loop;

  /* "uvloop/handles/handle.pyx":97
 *         self._handle.data = <void*>self
 * 
 *     cdef inline _start_init(self, Loop loop):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if self._loop is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":110
 *         self._loop = loop
 * 
 *     cdef inline bint _is_alive(self):             # <<<<<<<<<<<<<<
 *         cdef bint res
 *         res = self._closed != 1 and self._inited == 1
 */

static CYTHON_INLINE int __pyx_f_6uvloop_4loop_8UVHandle__is_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  int __pyx_v_res;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_is_alive", 0);

  /* "uvloop/handles/handle.pyx":112
 *     cdef inline bint _is_alive(self):
 *         cdef bint res
 *         res = self._closed != 1 and self._inited == 1             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if res:
 */
  __pyx_t_2 = ((__pyx_v_self->_closed != 1) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = ((__pyx_v_self->_inited == 1) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;
  __pyx_v_res = __pyx_t_1;

  /* "uvloop/handles/handle.pyx":130
 *                         '{} is alive, but _handle.data is not '
 *                         'initialized'.format(name))
 *         return res             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _ensure_alive(self):
 */
  __pyx_r = __pyx_v_res;
  goto __pyx_L0;

  /* "uvloop/handles/handle.pyx":110
 *         self._loop = loop
 * 
 *     cdef inline bint _is_alive(self):             # <<<<<<<<<<<<<<
 *         cdef bint res
 *         res = self._closed != 1 and self._inited == 1
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":132
 *         return res
 * 
 *     cdef inline _ensure_alive(self):             # <<<<<<<<<<<<<<
 *         if not self._is_alive():
 *             raise RuntimeError(
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVHandle__ensure_alive(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_ensure_alive", 0);

  /* "uvloop/handles/handle.pyx":133
 * 
 *     cdef inline _ensure_alive(self):
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'unable to perform operation on {!r}; '
 */
  __pyx_t_1 = ((!(__pyx_f_6uvloop_4loop_8UVHandle__is_alive(__pyx_v_self) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":136
 *             raise RuntimeError(
 *                 'unable to perform operation on {!r}; '
 *                 'the handler is closed'.format(self))             # <<<<<<<<<<<<<<
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_unable_to_perform_operation_on_r, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/handle.pyx":134
 *     cdef inline _ensure_alive(self):
 *         if not self._is_alive():
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'unable to perform operation on {!r}; '
 *                 'the handler is closed'.format(self))
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 134, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":133
 * 
 *     cdef inline _ensure_alive(self):
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'unable to perform operation on {!r}; '
 */
  }

  /* "uvloop/handles/handle.pyx":132
 *         return res
 * 
 *     cdef inline _ensure_alive(self):             # <<<<<<<<<<<<<<
 *         if not self._is_alive():
 *             raise RuntimeError(
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVHandle._ensure_alive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":138
 *                 'the handler is closed'.format(self))
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Fatal error means an error that was returned by the
 *         # underlying libuv handle function.  We usually can't
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__fatal_error(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_fatal_error", 0);
  if (__pyx_optional_args) {
  }

  /* "uvloop/handles/handle.pyx":142
 *         # underlying libuv handle function.  We usually can't
 *         # recover from that, hence we just close the handle.
 *         self._close()             # <<<<<<<<<<<<<<
 * 
 *         if throw or self._loop is None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/handle.pyx":144
 *         self._close()
 * 
 *         if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *             raise exc
 *         else:
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_throw); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 144, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (((PyObject *)__pyx_v_self->_loop) == Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "uvloop/handles/handle.pyx":145
 * 
 *         if throw or self._loop is None:
 *             raise exc             # <<<<<<<<<<<<<<
 *         else:
 *             self._loop._handle_exception(exc)
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(0, 145, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":144
 *         self._close()
 * 
 *         if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *             raise exc
 *         else:
 */
  }

  /* "uvloop/handles/handle.pyx":147
 *             raise exc
 *         else:
 *             self._loop._handle_exception(exc)             # <<<<<<<<<<<<<<
 * 
 *     cdef _error(self, exc, throw):
 */
  /*else*/ {
    ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->_loop->__pyx_vtab)->_handle_exception(__pyx_v_self->_loop, __pyx_v_exc);
  }

  /* "uvloop/handles/handle.pyx":138
 *                 'the handler is closed'.format(self))
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Fatal error means an error that was returned by the
 *         # underlying libuv handle function.  We usually can't
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVHandle._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":149
 *             self._loop._handle_exception(exc)
 * 
 *     cdef _error(self, exc, throw):             # <<<<<<<<<<<<<<
 *         # A non-fatal error is usually an error that was caught
 *         # by the handler, but was originated in the client code
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__error(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_error", 0);

  /* "uvloop/handles/handle.pyx":154
 *         # (not in libuv).  In this case we either want to simply
 *         # raise or log it.
 *         if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *             raise exc
 *         else:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_throw); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 154, __pyx_L1_error)
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (((PyObject *)__pyx_v_self->_loop) == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":155
 *         # raise or log it.
 *         if throw or self._loop is None:
 *             raise exc             # <<<<<<<<<<<<<<
 *         else:
 *             self._loop._handle_exception(exc)
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(0, 155, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":154
 *         # (not in libuv).  In this case we either want to simply
 *         # raise or log it.
 *         if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *             raise exc
 *         else:
 */
  }

  /* "uvloop/handles/handle.pyx":157
 *             raise exc
 *         else:
 *             self._loop._handle_exception(exc)             # <<<<<<<<<<<<<<
 * 
 *     cdef _close(self):
 */
  /*else*/ {
    ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->_loop->__pyx_vtab)->_handle_exception(__pyx_v_self->_loop, __pyx_v_exc);
  }

  /* "uvloop/handles/handle.pyx":149
 *             self._loop._handle_exception(exc)
 * 
 *     cdef _error(self, exc, throw):             # <<<<<<<<<<<<<<
 *         # A non-fatal error is usually an error that was caught
 *         # by the handler, but was originated in the client code
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.UVHandle._error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":159
 *             self._loop._handle_exception(exc)
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         if self._closed == 1:
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVHandle__close(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "uvloop/handles/handle.pyx":160
 * 
 *     cdef _close(self):
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_closed == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":161
 *     cdef _close(self):
 *         if self._closed == 1:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._closed = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":160
 * 
 *     cdef _close(self):
 *         if self._closed == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":163
 *             return
 * 
 *         self._closed = 1             # <<<<<<<<<<<<<<
 * 
 *         if self._handle is NULL:
 */
  __pyx_v_self->_closed = 1;

  /* "uvloop/handles/handle.pyx":165
 *         self._closed = 1
 * 
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":166
 * 
 *         if self._handle is NULL:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":165
 *         self._closed = 1
 * 
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":186
 *         # We want the handle wrapper (UVHandle) to stay alive until
 *         # the closing callback fires.
 *         Py_INCREF(self)             # <<<<<<<<<<<<<<
 *         uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 * 
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/handle.pyx":187
 *         # the closing callback fires.
 *         Py_INCREF(self)
 *         uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  uv_close(__pyx_v_self->_handle, __pyx_f_6uvloop_4loop___uv_close_handle_cb);

  /* "uvloop/handles/handle.pyx":159
 *             self._loop._handle_exception(exc)
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         if self._closed == 1:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":189
 *         uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{} closed={} {:#x}>'.format(
 *             self.__class__.__name__,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVHandle_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVHandle_7__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVHandle_6__repr__(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVHandle_6__repr__(struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/handles/handle.pyx":190
 * 
 *     def __repr__(self):
 *         return '<{} closed={} {:#x}>'.format(             # <<<<<<<<<<<<<<
 *             self.__class__.__name__,
 *             self._closed,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_closed_x, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/handles/handle.pyx":191
 *     def __repr__(self):
 *         return '<{} closed={} {:#x}>'.format(
 *             self.__class__.__name__,             # <<<<<<<<<<<<<<
 *             self._closed,
 *             id(self))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/handle.pyx":192
 *         return '<{} closed={} {:#x}>'.format(
 *             self.__class__.__name__,
 *             self._closed,             # <<<<<<<<<<<<<<
 *             id(self))
 * 
 */
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->_closed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "uvloop/handles/handle.pyx":193
 *             self.__class__.__name__,
 *             self._closed,
 *             id(self))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self));
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_3 = 0;
  __pyx_t_6 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/handle.pyx":189
 *         uv.uv_close(self._handle, __uv_close_handle_cb) # void; no errors
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{} closed={} {:#x}>'.format(
 *             self.__class__.__name__,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVHandle.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":199
 * cdef class UVSocketHandle(UVHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._fileobj = None
 *         self.__cached_socket = None
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_14UVSocketHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_14UVSocketHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_14UVSocketHandle___cinit__(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_14UVSocketHandle___cinit__(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/handle.pyx":200
 * 
 *     def __cinit__(self):
 *         self._fileobj = None             # <<<<<<<<<<<<<<
 *         self.__cached_socket = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_fileobj);
  __Pyx_DECREF(__pyx_v_self->_fileobj);
  __pyx_v_self->_fileobj = Py_None;

  /* "uvloop/handles/handle.pyx":201
 *     def __cinit__(self):
 *         self._fileobj = None
 *         self.__cached_socket = None             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _fileno(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->__pyx___cached_socket);
  __Pyx_DECREF(__pyx_v_self->__pyx___cached_socket);
  __pyx_v_self->__pyx___cached_socket = Py_None;

  /* "uvloop/handles/handle.pyx":199
 * cdef class UVSocketHandle(UVHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._fileobj = None
 *         self.__cached_socket = None
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":203
 *         self.__cached_socket = None
 * 
 *     cdef inline _fileno(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int fd
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__fileno(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self) {
  int __pyx_v_fd;
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_fileno", 0);

  /* "uvloop/handles/handle.pyx":208
 *             int err
 * 
 *         err = uv.uv_fileno(self._handle, <uv.uv_os_fd_t*>&fd)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
  __pyx_v_err = uv_fileno(__pyx_v_self->__pyx_base._handle, ((uv_os_fd_t *)(&__pyx_v_fd)));

  /* "uvloop/handles/handle.pyx":209
 * 
 *         err = uv.uv_fileno(self._handle, <uv.uv_os_fd_t*>&fd)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":210
 *         err = uv.uv_fileno(self._handle, <uv.uv_os_fd_t*>&fd)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         return fd
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 210, __pyx_L1_error)

    /* "uvloop/handles/handle.pyx":209
 * 
 *         err = uv.uv_fileno(self._handle, <uv.uv_os_fd_t*>&fd)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":212
 *             raise convert_error(err)
 * 
 *         return fd             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/handle.pyx":203
 *         self.__cached_socket = None
 * 
 *     cdef inline _fileno(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int fd
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVSocketHandle._fileno", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":214
 *         return fd
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__new_socket(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/handle.pyx":215
 * 
 *     cdef _new_socket(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _get_socket(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(0, 215, __pyx_L1_error)

  /* "uvloop/handles/handle.pyx":214
 *         return fd
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.UVSocketHandle._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":217
 *         raise NotImplementedError
 * 
 *     cdef inline _get_socket(self):             # <<<<<<<<<<<<<<
 *         if self._fileobj:
 *             return self._fileobj
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_get_socket", 0);

  /* "uvloop/handles/handle.pyx":218
 * 
 *     cdef inline _get_socket(self):
 *         if self._fileobj:             # <<<<<<<<<<<<<<
 *             return self._fileobj
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_fileobj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 218, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":219
 *     cdef inline _get_socket(self):
 *         if self._fileobj:
 *             return self._fileobj             # <<<<<<<<<<<<<<
 * 
 *         if self.__cached_socket is not None:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->_fileobj);
    __pyx_r = __pyx_v_self->_fileobj;
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":218
 * 
 *     cdef inline _get_socket(self):
 *         if self._fileobj:             # <<<<<<<<<<<<<<
 *             return self._fileobj
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":221
 *             return self._fileobj
 * 
 *         if self.__cached_socket is not None:             # <<<<<<<<<<<<<<
 *             return self.__cached_socket
 * 
 */
  __pyx_t_1 = (__pyx_v_self->__pyx___cached_socket != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/handle.pyx":222
 * 
 *         if self.__cached_socket is not None:
 *             return self.__cached_socket             # <<<<<<<<<<<<<<
 * 
 *         self.__cached_socket = self._new_socket()
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->__pyx___cached_socket);
    __pyx_r = __pyx_v_self->__pyx___cached_socket;
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":221
 *             return self._fileobj
 * 
 *         if self.__cached_socket is not None:             # <<<<<<<<<<<<<<
 *             return self.__cached_socket
 * 
 */
  }

  /* "uvloop/handles/handle.pyx":224
 *             return self.__cached_socket
 * 
 *         self.__cached_socket = self._new_socket()             # <<<<<<<<<<<<<<
 *         return self.__cached_socket
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle *)__pyx_v_self->__pyx_base.__pyx_vtab)->_new_socket(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->__pyx___cached_socket);
  __Pyx_DECREF(__pyx_v_self->__pyx___cached_socket);
  __pyx_v_self->__pyx___cached_socket = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/handles/handle.pyx":225
 * 
 *         self.__cached_socket = self._new_socket()
 *         return self.__cached_socket             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _attach_fileobj(self, object file):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->__pyx___cached_socket);
  __pyx_r = __pyx_v_self->__pyx___cached_socket;
  goto __pyx_L0;

  /* "uvloop/handles/handle.pyx":217
 *         raise NotImplementedError
 * 
 *     cdef inline _get_socket(self):             # <<<<<<<<<<<<<<
 *         if self._fileobj:
 *             return self._fileobj
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVSocketHandle._get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":227
 *         return self.__cached_socket
 * 
 *     cdef inline _attach_fileobj(self, object file):             # <<<<<<<<<<<<<<
 *         # When we create a TCP/PIPE/etc connection/server based on
 *         # a Python file object, we need to close the file object when
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__attach_fileobj(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self, PyObject *__pyx_v_file) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_attach_fileobj", 0);

  /* "uvloop/handles/handle.pyx":231
 *         # a Python file object, we need to close the file object when
 *         # the uv handle is closed.
 *         self._fileobj = file             # <<<<<<<<<<<<<<
 * 
 *     cdef _close(self):
 */
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_GIVEREF(__pyx_v_file);
  __Pyx_GOTREF(__pyx_v_self->_fileobj);
  __Pyx_DECREF(__pyx_v_self->_fileobj);
  __pyx_v_self->_fileobj = __pyx_v_file;

  /* "uvloop/handles/handle.pyx":227
 *         return self.__cached_socket
 * 
 *     cdef inline _attach_fileobj(self, object file):             # <<<<<<<<<<<<<<
 *         # When we create a TCP/PIPE/etc connection/server based on
 *         # a Python file object, we need to close the file object when
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":233
 *         self._fileobj = file
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         try:
 *             if self.__cached_socket is not None:
 */

static PyObject *__pyx_f_6uvloop_4loop_14UVSocketHandle__close(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_self) {
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_t_17;
  char const *__pyx_t_18;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  char const *__pyx_t_25;
  char const *__pyx_t_26;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "uvloop/handles/handle.pyx":234
 * 
 *     cdef _close(self):
 *         try:             # <<<<<<<<<<<<<<
 *             if self.__cached_socket is not None:
 *                 try:
 */
  /*try:*/ {

    /* "uvloop/handles/handle.pyx":235
 *     cdef _close(self):
 *         try:
 *             if self.__cached_socket is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.__cached_socket.detach()
 */
    __pyx_t_1 = (__pyx_v_self->__pyx___cached_socket != Py_None);
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/handle.pyx":236
 *         try:
 *             if self.__cached_socket is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.__cached_socket.detach()
 *                 except OSError:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_5);
        /*try:*/ {

          /* "uvloop/handles/handle.pyx":237
 *             if self.__cached_socket is not None:
 *                 try:
 *                     self.__cached_socket.detach()             # <<<<<<<<<<<<<<
 *                 except OSError:
 *                     pass
 */
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx___cached_socket, __pyx_n_s_detach); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 237, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (__pyx_t_8) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          } else {
            __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L7_error)
          }
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/handles/handle.pyx":236
 *         try:
 *             if self.__cached_socket is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.__cached_socket.detach()
 *                 except OSError:
 */
        }
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L14_try_end;
        __pyx_L7_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/handles/handle.pyx":238
 *                 try:
 *                     self.__cached_socket.detach()
 *                 except OSError:             # <<<<<<<<<<<<<<
 *                     pass
 *                 self.__cached_socket = None
 */
        __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OSError);
        if (__pyx_t_9) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L8_exception_handled;
        }
        goto __pyx_L9_except_error;
        __pyx_L9_except_error:;

        /* "uvloop/handles/handle.pyx":236
 *         try:
 *             if self.__cached_socket is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.__cached_socket.detach()
 *                 except OSError:
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        goto __pyx_L4_error;
        __pyx_L8_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        __pyx_L14_try_end:;
      }

      /* "uvloop/handles/handle.pyx":240
 *                 except OSError:
 *                     pass
 *                 self.__cached_socket = None             # <<<<<<<<<<<<<<
 * 
 *             if self._fileobj is not None:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->__pyx___cached_socket);
      __Pyx_DECREF(__pyx_v_self->__pyx___cached_socket);
      __pyx_v_self->__pyx___cached_socket = Py_None;

      /* "uvloop/handles/handle.pyx":235
 *     cdef _close(self):
 *         try:
 *             if self.__cached_socket is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.__cached_socket.detach()
 */
    }

    /* "uvloop/handles/handle.pyx":242
 *                 self.__cached_socket = None
 * 
 *             if self._fileobj is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self._fileobj.close()
 */
    __pyx_t_2 = (__pyx_v_self->_fileobj != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/handle.pyx":243
 * 
 *             if self._fileobj is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self._fileobj.close()
 *                 except Exception as exc:
 */
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          /*try:*/ {

            /* "uvloop/handles/handle.pyx":244
 *             if self._fileobj is not None:
 *                 try:
 *                     self._fileobj.close()             # <<<<<<<<<<<<<<
 *                 except Exception as exc:
 *                     self._loop.call_exception_handler({
 */
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_fileobj, __pyx_n_s_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 244, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
              }
            }
            if (__pyx_t_8) {
              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 244, __pyx_L19_error)
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            } else {
              __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 244, __pyx_L19_error)
            }
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

            /* "uvloop/handles/handle.pyx":243
 * 
 *             if self._fileobj is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self._fileobj.close()
 *                 except Exception as exc:
 */
          }
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L26_try_end;
          __pyx_L19_error:;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/handles/handle.pyx":245
 *                 try:
 *                     self._fileobj.close()
 *                 except Exception as exc:             # <<<<<<<<<<<<<<
 *                     self._loop.call_exception_handler({
 *                         'exception': exc,
 */
          __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
          if (__pyx_t_9) {
            __Pyx_AddTraceback("uvloop.loop.UVSocketHandle._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 245, __pyx_L21_except_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_7);
            __pyx_v_exc = __pyx_t_7;
            /*try:*/ {

              /* "uvloop/handles/handle.pyx":246
 *                     self._fileobj.close()
 *                 except Exception as exc:
 *                     self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                         'exception': exc,
 *                         'transport': self,
 */
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 246, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_11);

              /* "uvloop/handles/handle.pyx":247
 *                 except Exception as exc:
 *                     self._loop.call_exception_handler({
 *                         'exception': exc,             # <<<<<<<<<<<<<<
 *                         'transport': self,
 *                         'message': 'could not close attached file object {!r}'.
 */
              __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 247, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_12);
              if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(0, 247, __pyx_L32_error)

              /* "uvloop/handles/handle.pyx":248
 *                     self._loop.call_exception_handler({
 *                         'exception': exc,
 *                         'transport': self,             # <<<<<<<<<<<<<<
 *                         'message': 'could not close attached file object {!r}'.
 *                             format(self._fileobj)
 */
              if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_transport, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(0, 247, __pyx_L32_error)

              /* "uvloop/handles/handle.pyx":249
 *                         'exception': exc,
 *                         'transport': self,
 *                         'message': 'could not close attached file object {!r}'.             # <<<<<<<<<<<<<<
 *                             format(self._fileobj)
 *                     })
 */
              __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_could_not_close_attached_file_ob, __pyx_n_s_format); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 249, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_14);

              /* "uvloop/handles/handle.pyx":250
 *                         'transport': self,
 *                         'message': 'could not close attached file object {!r}'.
 *                             format(self._fileobj)             # <<<<<<<<<<<<<<
 *                     })
 *                 finally:
 */
              __pyx_t_15 = NULL;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
                __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
                if (likely(__pyx_t_15)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
                  __Pyx_INCREF(__pyx_t_15);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_14, function);
                }
              }
              if (!__pyx_t_15) {
                __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_self->_fileobj); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 250, __pyx_L32_error)
                __Pyx_GOTREF(__pyx_t_13);
              } else {
                __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 250, __pyx_L32_error)
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL;
                __Pyx_INCREF(__pyx_v_self->_fileobj);
                __Pyx_GIVEREF(__pyx_v_self->_fileobj);
                PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_v_self->_fileobj);
                __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_16, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 250, __pyx_L32_error)
                __Pyx_GOTREF(__pyx_t_13);
                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              }
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_message, __pyx_t_13) < 0) __PYX_ERR(0, 247, __pyx_L32_error)
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              __pyx_t_13 = NULL;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
                __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
                if (likely(__pyx_t_13)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                  __Pyx_INCREF(__pyx_t_13);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_11, function);
                }
              }
              if (!__pyx_t_13) {
                __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L32_error)
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_GOTREF(__pyx_t_10);
              } else {
                __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 246, __pyx_L32_error)
                __Pyx_GOTREF(__pyx_t_14);
                __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
                __Pyx_GIVEREF(__pyx_t_12);
                PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_12);
                __pyx_t_12 = 0;
                __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L32_error)
                __Pyx_GOTREF(__pyx_t_10);
                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              }
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            }

            /* "uvloop/handles/handle.pyx":245
 *                 try:
 *                     self._fileobj.close()
 *                 except Exception as exc:             # <<<<<<<<<<<<<<
 *                     self._loop.call_exception_handler({
 *                         'exception': exc,
 */
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_DECREF(__pyx_v_exc);
                __pyx_v_exc = NULL;
                goto __pyx_L33;
              }
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __pyx_L32_error:;
                __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
                __Pyx_PyThreadState_assign
                __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
                if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_21);
                __Pyx_XGOTREF(__pyx_t_22);
                __Pyx_XGOTREF(__pyx_t_23);
                __Pyx_XGOTREF(__pyx_t_24);
                __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc);
                  __pyx_v_exc = NULL;
                }
                __Pyx_PyThreadState_assign
                if (PY_MAJOR_VERSION >= 3) {
                  __Pyx_XGIVEREF(__pyx_t_22);
                  __Pyx_XGIVEREF(__pyx_t_23);
                  __Pyx_XGIVEREF(__pyx_t_24);
                  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
                }
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
                __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
                __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
                goto __pyx_L21_except_error;
              }
              __pyx_L33:;
            }
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            goto __pyx_L20_exception_handled;
          }
          goto __pyx_L21_except_error;
          __pyx_L21_except_error:;

          /* "uvloop/handles/handle.pyx":243
 * 
 *             if self._fileobj is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self._fileobj.close()
 *                 except Exception as exc:
 */
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_4);
          __Pyx_XGIVEREF(__pyx_t_3);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
          goto __pyx_L17_error;
          __pyx_L20_exception_handled:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_4);
          __Pyx_XGIVEREF(__pyx_t_3);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
          __pyx_L26_try_end:;
        }
      }

      /* "uvloop/handles/handle.pyx":253
 *                     })
 *                 finally:
 *                     self._fileobj = None             # <<<<<<<<<<<<<<
 *         finally:
 *             UVHandle._close(self)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_INCREF(Py_None);
          __Pyx_GIVEREF(Py_None);
          __Pyx_GOTREF(__pyx_v_self->_fileobj);
          __Pyx_DECREF(__pyx_v_self->_fileobj);
          __pyx_v_self->_fileobj = Py_None;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_24);
          __Pyx_XGOTREF(__pyx_t_23);
          __Pyx_XGOTREF(__pyx_t_22);
          __pyx_t_17 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
          {
            __Pyx_INCREF(Py_None);
            __Pyx_GIVEREF(Py_None);
            __Pyx_GOTREF(__pyx_v_self->_fileobj);
            __Pyx_DECREF(__pyx_v_self->_fileobj);
            __pyx_v_self->_fileobj = Py_None;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
          }
          __Pyx_XGIVEREF(__pyx_t_3);
          __Pyx_XGIVEREF(__pyx_t_4);
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
          __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
          __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_25;
          goto __pyx_L4_error;
        }
        __pyx_L18:;
      }

      /* "uvloop/handles/handle.pyx":242
 *                 self.__cached_socket = None
 * 
 *             if self._fileobj is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self._fileobj.close()
 */
    }
  }

  /* "uvloop/handles/handle.pyx":255
 *                     self._fileobj = None
 *         finally:
 *             UVHandle._close(self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_8 = __pyx_f_6uvloop_4loop_8UVHandle__close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L4_error:;
      __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
      __Pyx_XGOTREF(__pyx_t_22);
      __Pyx_XGOTREF(__pyx_t_23);
      __Pyx_XGOTREF(__pyx_t_24);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_26 = __pyx_filename;
      {
        __pyx_t_8 = __pyx_f_6uvloop_4loop_8UVHandle__close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L41_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      }
      __Pyx_XGIVEREF(__pyx_t_22);
      __Pyx_XGIVEREF(__pyx_t_23);
      __Pyx_XGIVEREF(__pyx_t_24);
      __Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24);
      __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_26;
      goto __pyx_L1_error;
      __pyx_L41_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      }
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "uvloop/handles/handle.pyx":233
 *         self._fileobj = file
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         try:
 *             if self.__cached_socket is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("uvloop.loop.UVSocketHandle._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":258
 * 
 * 
 * cdef inline bint __ensure_handle_data(uv.uv_handle_t* handle,             # <<<<<<<<<<<<<<
 *                                       const char* handle_ctx):
 * 
 */

static CYTHON_INLINE int __pyx_f_6uvloop_4loop___ensure_handle_data(uv_handle_t *__pyx_v_handle, char const *__pyx_v_handle_ctx) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__ensure_handle_data", 0);

  /* "uvloop/handles/handle.pyx":272
 *                 'handle.loop.data is NULL in __ensure_handle_data')
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({
 */
  __pyx_t_1 = ((__pyx_v_handle->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":273
 * 
 *     if handle.data is NULL:
 *         loop = <Loop>handle.loop.data             # <<<<<<<<<<<<<<
 *         loop.call_exception_handler({
 *             'message': '{} called with handle.data == NULL'.format(
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_handle->loop->data);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":274
 *     if handle.data is NULL:
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *             'message': '{} called with handle.data == NULL'.format(
 *                 handle_ctx.decode('latin-1'))
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":275
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({
 *             'message': '{} called with handle.data == NULL'.format(             # <<<<<<<<<<<<<<
 *                 handle_ctx.decode('latin-1'))
 *         })
 */
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_called_with_handle_data_NULL, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);

    /* "uvloop/handles/handle.pyx":276
 *         loop.call_exception_handler({
 *             'message': '{} called with handle.data == NULL'.format(
 *                 handle_ctx.decode('latin-1'))             # <<<<<<<<<<<<<<
 *         })
 *         return 0
 */
    __pyx_t_7 = __Pyx_decode_c_string(__pyx_v_handle_ctx, 0, strlen(__pyx_v_handle_ctx), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 275, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_message, __pyx_t_5) < 0) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":278
 *                 handle_ctx.decode('latin-1'))
 *         })
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     if <object>handle.data is __NOHANDLE__:
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":272
 *                 'handle.loop.data is NULL in __ensure_handle_data')
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({
 */
  }

  /* "uvloop/handles/handle.pyx":280
 *         return 0
 * 
 *     if <object>handle.data is __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         # The underlying UVHandle object was GCed with an open uv_handle_t.
 *         loop = <Loop>handle.loop.data
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_handle->data) == __pyx_v_6uvloop_4loop___NOHANDLE__);
  __pyx_t_10 = (__pyx_t_1 != 0);
  if (__pyx_t_10) {

    /* "uvloop/handles/handle.pyx":282
 *     if <object>handle.data is __NOHANDLE__:
 *         # The underlying UVHandle object was GCed with an open uv_handle_t.
 *         loop = <Loop>handle.loop.data             # <<<<<<<<<<<<<<
 *         loop.call_exception_handler({
 *             'message': '{} called after destroying the UVHandle'.format(
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_handle->loop->data);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":283
 *         # The underlying UVHandle object was GCed with an open uv_handle_t.
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *             'message': '{} called after destroying the UVHandle'.format(
 *                 handle_ctx.decode('latin-1'))
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":284
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({
 *             'message': '{} called after destroying the UVHandle'.format(             # <<<<<<<<<<<<<<
 *                 handle_ctx.decode('latin-1'))
 *         })
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_called_after_destroying_the_UVH, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "uvloop/handles/handle.pyx":285
 *         loop.call_exception_handler({
 *             'message': '{} called after destroying the UVHandle'.format(
 *                 handle_ctx.decode('latin-1'))             # <<<<<<<<<<<<<<
 *         })
 *         return 0
 */
    __pyx_t_9 = __Pyx_decode_c_string(__pyx_v_handle_ctx, 0, strlen(__pyx_v_handle_ctx), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_6, __pyx_n_u_message, __pyx_t_4) < 0) __PYX_ERR(0, 284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":287
 *                 handle_ctx.decode('latin-1'))
 *         })
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     return 1
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":280
 *         return 0
 * 
 *     if <object>handle.data is __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         # The underlying UVHandle object was GCed with an open uv_handle_t.
 *         loop = <Loop>handle.loop.data
 */
  }

  /* "uvloop/handles/handle.pyx":289
 *         return 0
 * 
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 1;
  goto __pyx_L0;

  /* "uvloop/handles/handle.pyx":258
 * 
 * 
 * cdef inline bint __ensure_handle_data(uv.uv_handle_t* handle,             # <<<<<<<<<<<<<<
 *                                       const char* handle_ctx):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__ensure_handle_data", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/handle.pyx":292
 * 
 * 
 * cdef void __uv_close_handle_cb(uv.uv_handle_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         UVHandle h
 */

static void __pyx_f_6uvloop_4loop___uv_close_handle_cb(uv_handle_t *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_h = 0;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_close_handle_cb", 0);

  /* "uvloop/handles/handle.pyx":297
 *         Loop loop
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen.
 *         loop = <Loop>handle.loop.data
 */
  __pyx_t_1 = ((__pyx_v_handle->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/handle.pyx":299
 *     if handle.data is NULL:
 *         # Shouldn't happen.
 *         loop = <Loop>handle.loop.data             # <<<<<<<<<<<<<<
 *         loop.call_exception_handler({
 *             'message': 'uv_handle_t.data is NULL in close callback'
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_handle->loop->data);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":300
 *         # Shouldn't happen.
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *             'message': 'uv_handle_t.data is NULL in close callback'
 *         })
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":301
 *         loop = <Loop>handle.loop.data
 *         loop.call_exception_handler({
 *             'message': 'uv_handle_t.data is NULL in close callback'             # <<<<<<<<<<<<<<
 *         })
 *         PyMem_Free(handle)
 */
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_message, __pyx_kp_u_uv_handle_t_data_is_NULL_in_clos) < 0) __PYX_ERR(0, 301, __pyx_L1_error)
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":303
 *             'message': 'uv_handle_t.data is NULL in close callback'
 *         })
 *         PyMem_Free(handle)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    PyMem_Free(__pyx_v_handle);

    /* "uvloop/handles/handle.pyx":304
 *         })
 *         PyMem_Free(handle)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if <object>handle.data is not __NOHANDLE__:
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":297
 *         Loop loop
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen.
 *         loop = <Loop>handle.loop.data
 */
  }

  /* "uvloop/handles/handle.pyx":306
 *         return
 * 
 *     if <object>handle.data is not __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         h = <UVHandle>handle.data
 *         h._handle = NULL
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_handle->data) != __pyx_v_6uvloop_4loop___NOHANDLE__);
  __pyx_t_7 = (__pyx_t_1 != 0);
  if (__pyx_t_7) {

    /* "uvloop/handles/handle.pyx":307
 * 
 *     if <object>handle.data is not __NOHANDLE__:
 *         h = <UVHandle>handle.data             # <<<<<<<<<<<<<<
 *         h._handle = NULL
 *         IF DEBUG:
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_h = ((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":308
 *     if <object>handle.data is not __NOHANDLE__:
 *         h = <UVHandle>handle.data
 *         h._handle = NULL             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             h._loop._debug_handles_closed.update([
 */
    __pyx_v_h->_handle = NULL;

    /* "uvloop/handles/handle.pyx":312
 *             h._loop._debug_handles_closed.update([
 *                 h.__class__.__name__])
 *         h._free()             # <<<<<<<<<<<<<<
 *         Py_DECREF(h) # Was INCREFed in UVHandle._close
 *         return
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_h->__pyx_vtab)->_free(__pyx_v_h); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/handle.pyx":313
 *                 h.__class__.__name__])
 *         h._free()
 *         Py_DECREF(h) # Was INCREFed in UVHandle._close             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    Py_DECREF(((PyObject *)__pyx_v_h));

    /* "uvloop/handles/handle.pyx":314
 *         h._free()
 *         Py_DECREF(h) # Was INCREFed in UVHandle._close
 *         return             # <<<<<<<<<<<<<<
 * 
 *     PyMem_Free(handle)
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":306
 *         return
 * 
 *     if <object>handle.data is not __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         h = <UVHandle>handle.data
 *         h._handle = NULL
 */
  }

  /* "uvloop/handles/handle.pyx":316
 *         return
 * 
 *     PyMem_Free(handle)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  PyMem_Free(__pyx_v_handle);

  /* "uvloop/handles/handle.pyx":292
 * 
 * 
 * cdef void __uv_close_handle_cb(uv.uv_handle_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         UVHandle h
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_close_handle_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/handle.pyx":319
 * 
 * 
 * cdef void __close_all_handles(Loop loop):             # <<<<<<<<<<<<<<
 *     uv.uv_walk(loop.uvloop, __uv_walk_close_all_handles_cb, <void*>loop) # void
 * 
 */

static void __pyx_f_6uvloop_4loop___close_all_handles(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__close_all_handles", 0);

  /* "uvloop/handles/handle.pyx":320
 * 
 * cdef void __close_all_handles(Loop loop):
 *     uv.uv_walk(loop.uvloop, __uv_walk_close_all_handles_cb, <void*>loop) # void             # <<<<<<<<<<<<<<
 * 
 * cdef void __uv_walk_close_all_handles_cb(uv.uv_handle_t* handle, void* arg) with gil:
 */
  uv_walk(__pyx_v_loop->uvloop, __pyx_f_6uvloop_4loop___uv_walk_close_all_handles_cb, ((void *)__pyx_v_loop));

  /* "uvloop/handles/handle.pyx":319
 * 
 * 
 * cdef void __close_all_handles(Loop loop):             # <<<<<<<<<<<<<<
 *     uv.uv_walk(loop.uvloop, __uv_walk_close_all_handles_cb, <void*>loop) # void
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/handles/handle.pyx":322
 *     uv.uv_walk(loop.uvloop, __uv_walk_close_all_handles_cb, <void*>loop) # void
 * 
 * cdef void __uv_walk_close_all_handles_cb(uv.uv_handle_t* handle, void* arg) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         Loop loop = <Loop>arg
 */

static void __pyx_f_6uvloop_4loop___uv_walk_close_all_handles_cb(uv_handle_t *__pyx_v_handle, void *__pyx_v_arg) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  struct __pyx_obj_6uvloop_4loop_UVHandle *__pyx_v_h = 0;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_walk_close_all_handles_cb", 0);

  /* "uvloop/handles/handle.pyx":324
 * cdef void __uv_walk_close_all_handles_cb(uv.uv_handle_t* handle, void* arg) with gil:
 *     cdef:
 *         Loop loop = <Loop>arg             # <<<<<<<<<<<<<<
 *         UVHandle h
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_arg);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/handle.pyx":327
 *         UVHandle h
 * 
 *     if uv.uv_is_closing(handle):             # <<<<<<<<<<<<<<
 *         # The handle is closed or is closing.
 *         return
 */
  __pyx_t_2 = (uv_is_closing(__pyx_v_handle) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/handle.pyx":329
 *     if uv.uv_is_closing(handle):
 *         # The handle is closed or is closing.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if handle.data is NULL:
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":327
 *         UVHandle h
 * 
 *     if uv.uv_is_closing(handle):             # <<<<<<<<<<<<<<
 *         # The handle is closed or is closing.
 *         return
 */
  }

  /* "uvloop/handles/handle.pyx":331
 *         return
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         # This shouldn't happen. Ever.
 *         loop.call_exception_handler({
 */
  __pyx_t_2 = ((__pyx_v_handle->data == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/handle.pyx":333
 *     if handle.data is NULL:
 *         # This shouldn't happen. Ever.
 *         loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *             'message': 'handle.data is NULL in __close_all_handles_cb'
 *         })
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":334
 *         # This shouldn't happen. Ever.
 *         loop.call_exception_handler({
 *             'message': 'handle.data is NULL in __close_all_handles_cb'             # <<<<<<<<<<<<<<
 *         })
 *         return
 */
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_message, __pyx_kp_u_handle_data_is_NULL_in___close_a) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/handle.pyx":336
 *             'message': 'handle.data is NULL in __close_all_handles_cb'
 *         })
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if <object>handle.data is __NOHANDLE__:
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":331
 *         return
 * 
 *     if handle.data is NULL:             # <<<<<<<<<<<<<<
 *         # This shouldn't happen. Ever.
 *         loop.call_exception_handler({
 */
  }

  /* "uvloop/handles/handle.pyx":338
 *         return
 * 
 *     if <object>handle.data is __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         # And this shouldn't happen too.
 *         loop.call_exception_handler({
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_handle->data) == __pyx_v_6uvloop_4loop___NOHANDLE__);
  __pyx_t_7 = (__pyx_t_2 != 0);
  if (__pyx_t_7) {

    /* "uvloop/handles/handle.pyx":340
 *     if <object>handle.data is __NOHANDLE__:
 *         # And this shouldn't happen too.
 *         loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *             'message': "handle.data is __NOHANDLE__ yet it's not closing"
 *         })
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/handle.pyx":341
 *         # And this shouldn't happen too.
 *         loop.call_exception_handler({
 *             'message': "handle.data is __NOHANDLE__ yet it's not closing"             # <<<<<<<<<<<<<<
 *         })
 *         return
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_6, __pyx_n_u_message, __pyx_kp_u_handle_data_is___NOHANDLE___yet) < 0) __PYX_ERR(0, 341, __pyx_L1_error)
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 340, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/handle.pyx":343
 *             'message': "handle.data is __NOHANDLE__ yet it's not closing"
 *         })
 *         return             # <<<<<<<<<<<<<<
 * 
 *     h = <UVHandle>handle.data
 */
    goto __pyx_L0;

    /* "uvloop/handles/handle.pyx":338
 *         return
 * 
 *     if <object>handle.data is __NOHANDLE__:             # <<<<<<<<<<<<<<
 *         # And this shouldn't happen too.
 *         loop.call_exception_handler({
 */
  }

  /* "uvloop/handles/handle.pyx":345
 *         return
 * 
 *     h = <UVHandle>handle.data             # <<<<<<<<<<<<<<
 * 
 *     if not h._closed:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/handle.pyx":347
 *     h = <UVHandle>handle.data
 * 
 *     if not h._closed:             # <<<<<<<<<<<<<<
 *         warnings_warn("unclosed resource {!r}".format(h), ResourceWarning)
 *         h._close()
 */
  __pyx_t_7 = ((!(__pyx_v_h->_closed != 0)) != 0);
  if (__pyx_t_7) {

    /* "uvloop/handles/handle.pyx":348
 * 
 *     if not h._closed:
 *         warnings_warn("unclosed resource {!r}".format(h), ResourceWarning)             # <<<<<<<<<<<<<<
 *         h._close()
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_unclosed_resource_r, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_h)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_h));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_h));
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_h));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_warnings_warn);
    __pyx_t_5 = __pyx_v_6uvloop_4loop_warnings_warn; __pyx_t_4 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_3);
    __Pyx_INCREF(__pyx_builtin_ResourceWarning);
    __Pyx_GIVEREF(__pyx_builtin_ResourceWarning);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_builtin_ResourceWarning);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/handle.pyx":349
 *     if not h._closed:
 *         warnings_warn("unclosed resource {!r}".format(h), ResourceWarning)
 *         h._close()             # <<<<<<<<<<<<<<
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVHandle *)__pyx_v_h->__pyx_vtab)->_close(__pyx_v_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/handle.pyx":347
 *     h = <UVHandle>handle.data
 * 
 *     if not h._closed:             # <<<<<<<<<<<<<<
 *         warnings_warn("unclosed resource {!r}".format(h), ResourceWarning)
 *         h._close()
 */
  }

  /* "uvloop/handles/handle.pyx":322
 *     uv.uv_walk(loop.uvloop, __uv_walk_close_all_handles_cb, <void*>loop) # void
 * 
 * cdef void __uv_walk_close_all_handles_cb(uv.uv_handle_t* handle, void* arg) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         Loop loop = <Loop>arg
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_walk_close_all_handles_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/async_.pyx":3
 * @cython.no_gc_clear
 * cdef class UVAsync(UVHandle):
 *     cdef _init(self, Loop loop, method_t* callback, object ctx):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_7UVAsync__init(struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/async_.pyx":6
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/async_.pyx":8
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_async_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_async_t))));

  /* "uvloop/handles/async_.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_async_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/async_.pyx":11
 *                             PyMem_Malloc(sizeof(uv.uv_async_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/async_.pyx":12
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_async_init(self._loop.uvloop,
 */
    PyErr_NoMemory(); __PYX_ERR(9, 12, __pyx_L1_error)

    /* "uvloop/handles/async_.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_async_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/async_.pyx":14
 *             raise MemoryError()
 * 
 *         err = uv.uv_async_init(self._loop.uvloop,             # <<<<<<<<<<<<<<
 *                                <uv.uv_async_t*>self._handle,
 *                                __uvasync_callback)
 */
  __pyx_v_err = uv_async_init(__pyx_v_self->__pyx_base._loop->uvloop, ((uv_async_t *)__pyx_v_self->__pyx_base._handle), __pyx_f_6uvloop_4loop___uvasync_callback);

  /* "uvloop/handles/async_.pyx":17
 *                                <uv.uv_async_t*>self._handle,
 *                                __uvasync_callback)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/async_.pyx":18
 *                                __uvasync_callback)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/async_.pyx":19
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 19, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(9, 19, __pyx_L1_error)

    /* "uvloop/handles/async_.pyx":17
 *                                <uv.uv_async_t*>self._handle,
 *                                __uvasync_callback)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/async_.pyx":21
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         self.callback = callback
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/async_.pyx":23
 *         self._finish_init()
 * 
 *         self.callback = callback             # <<<<<<<<<<<<<<
 *         self.ctx = ctx
 * 
 */
  __pyx_v_self->callback = __pyx_v_callback;

  /* "uvloop/handles/async_.pyx":24
 * 
 *         self.callback = callback
 *         self.ctx = ctx             # <<<<<<<<<<<<<<
 * 
 *     cdef send(self):
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_self->ctx);
  __Pyx_DECREF(__pyx_v_self->ctx);
  __pyx_v_self->ctx = __pyx_v_ctx;

  /* "uvloop/handles/async_.pyx":3
 * @cython.no_gc_clear
 * cdef class UVAsync(UVHandle):
 *     cdef _init(self, Loop loop, method_t* callback, object ctx):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVAsync._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/async_.pyx":26
 *         self.ctx = ctx
 * 
 *     cdef send(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_7UVAsync_send(struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("send", 0);

  /* "uvloop/handles/async_.pyx":29
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_async_send(<uv.uv_async_t*>self._handle)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/async_.pyx":31
 *         self._ensure_alive()
 * 
 *         err = uv.uv_async_send(<uv.uv_async_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_async_send(((uv_async_t *)__pyx_v_self->__pyx_base._handle));

  /* "uvloop/handles/async_.pyx":32
 * 
 *         err = uv.uv_async_send(<uv.uv_async_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/async_.pyx":33
 *         err = uv.uv_async_send(<uv.uv_async_t*>self._handle)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/async_.pyx":34
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/async_.pyx":35
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/async_.pyx":32
 * 
 *         err = uv.uv_async_send(<uv.uv_async_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/async_.pyx":26
 *         self.ctx = ctx
 * 
 *     cdef send(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVAsync.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/async_.pyx":38
 * 
 *     @staticmethod
 *     cdef UVAsync new(Loop loop, method_t* callback, object ctx):             # <<<<<<<<<<<<<<
 *         cdef UVAsync handle
 *         handle = UVAsync.__new__(UVAsync)
 */

static struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_f_6uvloop_4loop_7UVAsync_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx) {
  struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/async_.pyx":40
 *     cdef UVAsync new(Loop loop, method_t* callback, object ctx):
 *         cdef UVAsync handle
 *         handle = UVAsync.__new__(UVAsync)             # <<<<<<<<<<<<<<
 *         handle._init(loop, callback, ctx)
 *         return handle
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVAsync(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVAsync), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVAsync)))) __PYX_ERR(9, 40, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/async_.pyx":41
 *         cdef UVAsync handle
 *         handle = UVAsync.__new__(UVAsync)
 *         handle._init(loop, callback, ctx)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_handle->__pyx_base.__pyx_vtab)->_init(__pyx_v_handle, __pyx_v_loop, __pyx_v_callback, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/async_.pyx":42
 *         handle = UVAsync.__new__(UVAsync)
 *         handle._init(loop, callback, ctx)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/async_.pyx":38
 * 
 *     @staticmethod
 *     cdef UVAsync new(Loop loop, method_t* callback, object ctx):             # <<<<<<<<<<<<<<
 *         cdef UVAsync handle
 *         handle = UVAsync.__new__(UVAsync)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVAsync.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/async_.pyx":45
 * 
 * 
 * cdef void __uvasync_callback(uv.uv_async_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVAsync callback") == 0:
 *         return
 */

static void __pyx_f_6uvloop_4loop___uvasync_callback(uv_async_t *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVAsync *__pyx_v_async_ = 0;
  __pyx_t_6uvloop_4loop_method_t __pyx_v_cb;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uvasync_callback", 0);

  /* "uvloop/handles/async_.pyx":46
 * 
 * cdef void __uvasync_callback(uv.uv_async_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVAsync callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVAsync callback")) == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/async_.pyx":47
 * cdef void __uvasync_callback(uv.uv_async_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVAsync callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/async_.pyx":46
 * 
 * cdef void __uvasync_callback(uv.uv_async_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVAsync callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/handles/async_.pyx":50
 * 
 *     cdef:
 *         UVAsync async_ = <UVAsync> handle.data             # <<<<<<<<<<<<<<
 *         method_t cb = async_.callback[0] # deref
 *     try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_async_ = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/async_.pyx":51
 *     cdef:
 *         UVAsync async_ = <UVAsync> handle.data
 *         method_t cb = async_.callback[0] # deref             # <<<<<<<<<<<<<<
 *     try:
 *         cb(async_.ctx)
 */
  __pyx_v_cb = (__pyx_v_async_->callback[0]);

  /* "uvloop/handles/async_.pyx":52
 *         UVAsync async_ = <UVAsync> handle.data
 *         method_t cb = async_.callback[0] # deref
 *     try:             # <<<<<<<<<<<<<<
 *         cb(async_.ctx)
 *     except BaseException as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/async_.pyx":53
 *         method_t cb = async_.callback[0] # deref
 *     try:
 *         cb(async_.ctx)             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         async_._error(ex, False)
 */
      __pyx_t_2 = __pyx_v_async_->ctx;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_6 = __pyx_v_cb(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 53, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/async_.pyx":52
 *         UVAsync async_ = <UVAsync> handle.data
 *         method_t cb = async_.callback[0] # deref
 *     try:             # <<<<<<<<<<<<<<
 *         cb(async_.ctx)
 *     except BaseException as ex:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/handles/async_.pyx":54
 *     try:
 *         cb(async_.ctx)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         async_._error(ex, False)
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.__uvasync_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(9, 54, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_ex = __pyx_t_2;
      /*try:*/ {

        /* "uvloop/handles/async_.pyx":55
 *         cb(async_.ctx)
 *     except BaseException as ex:
 *         async_._error(ex, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVAsync *)__pyx_v_async_->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_async_), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 55, __pyx_L17_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/async_.pyx":54
 *     try:
 *         cb(async_.ctx)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         async_._error(ex, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_7 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L6_except_error;
        }
        __pyx_L18:;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/handles/async_.pyx":52
 *         UVAsync async_ = <UVAsync> handle.data
 *         method_t cb = async_.callback[0] # deref
 *     try:             # <<<<<<<<<<<<<<
 *         cb(async_.ctx)
 *     except BaseException as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/async_.pyx":45
 * 
 * 
 * cdef void __uvasync_callback(uv.uv_async_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVAsync callback") == 0:
 *         return
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__uvasync_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_async_);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/idle.pyx":3
 * @cython.no_gc_clear
 * cdef class UVIdle(UVHandle):
 *     cdef _init(self, Loop loop, Handle h):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVIdle__init(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/idle.pyx":6
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/idle.pyx":8
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_idle_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_idle_t))));

  /* "uvloop/handles/idle.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_idle_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/idle.pyx":11
 *                             PyMem_Malloc(sizeof(uv.uv_idle_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/idle.pyx":12
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_idle_init(self._loop.uvloop, <uv.uv_idle_t*>self._handle)
 */
    PyErr_NoMemory(); __PYX_ERR(10, 12, __pyx_L1_error)

    /* "uvloop/handles/idle.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_idle_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/idle.pyx":14
 *             raise MemoryError()
 * 
 *         err = uv.uv_idle_init(self._loop.uvloop, <uv.uv_idle_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             self._abort_init()
 */
  __pyx_v_err = uv_idle_init(__pyx_v_self->__pyx_base._loop->uvloop, ((uv_idle_t *)__pyx_v_self->__pyx_base._handle));

  /* "uvloop/handles/idle.pyx":15
 * 
 *         err = uv.uv_idle_init(self._loop.uvloop, <uv.uv_idle_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/idle.pyx":16
 *         err = uv.uv_idle_init(self._loop.uvloop, <uv.uv_idle_t*>self._handle)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/idle.pyx":17
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(10, 17, __pyx_L1_error)

    /* "uvloop/handles/idle.pyx":15
 * 
 *         err = uv.uv_idle_init(self._loop.uvloop, <uv.uv_idle_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/idle.pyx":19
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         self.h = h
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/idle.pyx":21
 *         self._finish_init()
 * 
 *         self.h = h             # <<<<<<<<<<<<<<
 *         self.running = 0
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_h));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_h));
  __Pyx_GOTREF(__pyx_v_self->h);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->h));
  __pyx_v_self->h = __pyx_v_h;

  /* "uvloop/handles/idle.pyx":22
 * 
 *         self.h = h
 *         self.running = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef inline stop(self):
 */
  __pyx_v_self->running = 0;

  /* "uvloop/handles/idle.pyx":3
 * @cython.no_gc_clear
 * cdef class UVIdle(UVHandle):
 *     cdef _init(self, Loop loop, Handle h):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVIdle._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/idle.pyx":24
 *         self.running = 0
 * 
 *     cdef inline stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_stop(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "uvloop/handles/idle.pyx":27
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._is_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/idle.pyx":28
 * 
 *         if not self._is_alive():
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/idle.pyx":29
 *         if not self._is_alive():
 *             self.running = 0
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 1:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/idle.pyx":27
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  }

  /* "uvloop/handles/idle.pyx":31
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)
 *             self.running = 0
 */
  __pyx_t_1 = ((__pyx_v_self->running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/idle.pyx":32
 * 
 *         if self.running == 1:
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             if err < 0:
 */
    __pyx_v_err = uv_idle_stop(((uv_idle_t *)__pyx_v_self->__pyx_base._handle));

    /* "uvloop/handles/idle.pyx":33
 *         if self.running == 1:
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             if err < 0:
 *                 exc = convert_error(err)
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/idle.pyx":34
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_1 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/idle.pyx":35
 *             self.running = 0
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/handles/idle.pyx":36
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 * 
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 36, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/idle.pyx":37
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 * 
 *     cdef inline start(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/idle.pyx":34
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/idle.pyx":31
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_idle_stop(<uv.uv_idle_t*>self._handle)
 *             self.running = 0
 */
  }

  /* "uvloop/handles/idle.pyx":24
 *         self.running = 0
 * 
 *     cdef inline stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVIdle.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/idle.pyx":39
 *                 return
 * 
 *     cdef inline start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVIdle_start(struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("start", 0);

  /* "uvloop/handles/idle.pyx":42
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/idle.pyx":44
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_idle_start(<uv.uv_idle_t*>self._handle,
 *                                    cb_idle_callback)
 */
  __pyx_t_2 = ((__pyx_v_self->running == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/idle.pyx":45
 * 
 *         if self.running == 0:
 *             err = uv.uv_idle_start(<uv.uv_idle_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                    cb_idle_callback)
 *             if err < 0:
 */
    __pyx_v_err = uv_idle_start(((uv_idle_t *)__pyx_v_self->__pyx_base._handle), __pyx_f_6uvloop_4loop_cb_idle_callback);

    /* "uvloop/handles/idle.pyx":47
 *             err = uv.uv_idle_start(<uv.uv_idle_t*>self._handle,
 *                                    cb_idle_callback)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_2 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/idle.pyx":48
 *                                    cb_idle_callback)
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/handles/idle.pyx":49
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 *             self.running = 1
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/idle.pyx":50
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 *             self.running = 1
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/idle.pyx":47
 *             err = uv.uv_idle_start(<uv.uv_idle_t*>self._handle,
 *                                    cb_idle_callback)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/idle.pyx":51
 *                 self._fatal_error(exc, True)
 *                 return
 *             self.running = 1             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    __pyx_v_self->running = 1;

    /* "uvloop/handles/idle.pyx":44
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_idle_start(<uv.uv_idle_t*>self._handle,
 *                                    cb_idle_callback)
 */
  }

  /* "uvloop/handles/idle.pyx":39
 *                 return
 * 
 *     cdef inline start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVIdle.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/idle.pyx":54
 * 
 *     @staticmethod
 *     cdef UVIdle new(Loop loop, Handle h):             # <<<<<<<<<<<<<<
 *         cdef UVIdle handle
 *         handle = UVIdle.__new__(UVIdle)
 */

static struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_f_6uvloop_4loop_6UVIdle_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h) {
  struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/idle.pyx":56
 *     cdef UVIdle new(Loop loop, Handle h):
 *         cdef UVIdle handle
 *         handle = UVIdle.__new__(UVIdle)             # <<<<<<<<<<<<<<
 *         handle._init(loop, h)
 *         return handle
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVIdle(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVIdle), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVIdle)))) __PYX_ERR(10, 56, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/idle.pyx":57
 *         cdef UVIdle handle
 *         handle = UVIdle.__new__(UVIdle)
 *         handle._init(loop, h)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_handle->__pyx_base.__pyx_vtab)->_init(__pyx_v_handle, __pyx_v_loop, __pyx_v_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/idle.pyx":58
 *         handle = UVIdle.__new__(UVIdle)
 *         handle._init(loop, h)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/idle.pyx":54
 * 
 *     @staticmethod
 *     cdef UVIdle new(Loop loop, Handle h):             # <<<<<<<<<<<<<<
 *         cdef UVIdle handle
 *         handle = UVIdle.__new__(UVIdle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVIdle.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/idle.pyx":61
 * 
 * 
 * cdef void cb_idle_callback(uv.uv_idle_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVIdle callback") == 0:
 *         return
 */

static void __pyx_f_6uvloop_4loop_cb_idle_callback(uv_idle_t *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVIdle *__pyx_v_idle = 0;
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h = 0;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("cb_idle_callback", 0);

  /* "uvloop/handles/idle.pyx":62
 * 
 * cdef void cb_idle_callback(uv.uv_idle_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVIdle callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVIdle callback")) == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/idle.pyx":63
 * cdef void cb_idle_callback(uv.uv_idle_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVIdle callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/idle.pyx":62
 * 
 * cdef void cb_idle_callback(uv.uv_idle_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVIdle callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/handles/idle.pyx":66
 * 
 *     cdef:
 *         UVIdle idle = <UVIdle> handle.data             # <<<<<<<<<<<<<<
 *         Handle h = idle.h
 *     try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_idle = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/idle.pyx":67
 *     cdef:
 *         UVIdle idle = <UVIdle> handle.data
 *         Handle h = idle.h             # <<<<<<<<<<<<<<
 *     try:
 *         h._run()
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_idle->h);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_h = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/idle.pyx":68
 *         UVIdle idle = <UVIdle> handle.data
 *         Handle h = idle.h
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/idle.pyx":69
 *         Handle h = idle.h
 *     try:
 *         h._run()             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         idle._error(ex, False)
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_h); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 69, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/idle.pyx":68
 *         UVIdle idle = <UVIdle> handle.data
 *         Handle h = idle.h
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/idle.pyx":70
 *     try:
 *         h._run()
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         idle._error(ex, False)
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.cb_idle_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(10, 70, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_ex = __pyx_t_7;
      /*try:*/ {

        /* "uvloop/handles/idle.pyx":71
 *         h._run()
 *     except BaseException as ex:
 *         idle._error(ex, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVIdle *)__pyx_v_idle->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_idle), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 71, __pyx_L17_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/idle.pyx":70
 *     try:
 *         h._run()
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         idle._error(ex, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L6_except_error;
        }
        __pyx_L18:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/handles/idle.pyx":68
 *         UVIdle idle = <UVIdle> handle.data
 *         Handle h = idle.h
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/idle.pyx":61
 * 
 * 
 * cdef void cb_idle_callback(uv.uv_idle_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVIdle callback") == 0:
 *         return
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.cb_idle_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_idle);
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/timer.pyx":3
 * @cython.no_gc_clear
 * cdef class UVTimer(UVHandle):
 *     cdef _init(self, Loop loop, method_t* callback, object ctx,             # <<<<<<<<<<<<<<
 *                uint64_t timeout):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_7UVTimer__init(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx, uint64_t __pyx_v_timeout) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/timer.pyx":8
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> PyMem_Malloc(sizeof(uv.uv_timer_t))
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/timer.pyx":10
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> PyMem_Malloc(sizeof(uv.uv_timer_t))             # <<<<<<<<<<<<<<
 *         if self._handle is NULL:
 *             self._abort_init()
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_timer_t))));

  /* "uvloop/handles/timer.pyx":11
 * 
 *         self._handle = <uv.uv_handle_t*> PyMem_Malloc(sizeof(uv.uv_timer_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/timer.pyx":12
 *         self._handle = <uv.uv_handle_t*> PyMem_Malloc(sizeof(uv.uv_timer_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/timer.pyx":13
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_timer_init(self._loop.uvloop, <uv.uv_timer_t*>self._handle)
 */
    PyErr_NoMemory(); __PYX_ERR(11, 13, __pyx_L1_error)

    /* "uvloop/handles/timer.pyx":11
 * 
 *         self._handle = <uv.uv_handle_t*> PyMem_Malloc(sizeof(uv.uv_timer_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/timer.pyx":15
 *             raise MemoryError()
 * 
 *         err = uv.uv_timer_init(self._loop.uvloop, <uv.uv_timer_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             self._abort_init()
 */
  __pyx_v_err = uv_timer_init(__pyx_v_self->__pyx_base._loop->uvloop, ((uv_timer_t *)__pyx_v_self->__pyx_base._handle));

  /* "uvloop/handles/timer.pyx":16
 * 
 *         err = uv.uv_timer_init(self._loop.uvloop, <uv.uv_timer_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/timer.pyx":17
 *         err = uv.uv_timer_init(self._loop.uvloop, <uv.uv_timer_t*>self._handle)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/timer.pyx":18
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(11, 18, __pyx_L1_error)

    /* "uvloop/handles/timer.pyx":16
 * 
 *         err = uv.uv_timer_init(self._loop.uvloop, <uv.uv_timer_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/timer.pyx":20
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         self.callback = callback
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/timer.pyx":22
 *         self._finish_init()
 * 
 *         self.callback = callback             # <<<<<<<<<<<<<<
 *         self.ctx = ctx
 *         self.running = 0
 */
  __pyx_v_self->callback = __pyx_v_callback;

  /* "uvloop/handles/timer.pyx":23
 * 
 *         self.callback = callback
 *         self.ctx = ctx             # <<<<<<<<<<<<<<
 *         self.running = 0
 *         self.timeout = timeout
 */
  __Pyx_INCREF(__pyx_v_ctx);
  __Pyx_GIVEREF(__pyx_v_ctx);
  __Pyx_GOTREF(__pyx_v_self->ctx);
  __Pyx_DECREF(__pyx_v_self->ctx);
  __pyx_v_self->ctx = __pyx_v_ctx;

  /* "uvloop/handles/timer.pyx":24
 *         self.callback = callback
 *         self.ctx = ctx
 *         self.running = 0             # <<<<<<<<<<<<<<
 *         self.timeout = timeout
 * 
 */
  __pyx_v_self->running = 0;

  /* "uvloop/handles/timer.pyx":25
 *         self.ctx = ctx
 *         self.running = 0
 *         self.timeout = timeout             # <<<<<<<<<<<<<<
 * 
 *     cdef stop(self):
 */
  __pyx_v_self->timeout = __pyx_v_timeout;

  /* "uvloop/handles/timer.pyx":3
 * @cython.no_gc_clear
 * cdef class UVTimer(UVHandle):
 *     cdef _init(self, Loop loop, method_t* callback, object ctx,             # <<<<<<<<<<<<<<
 *                uint64_t timeout):
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVTimer._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/timer.pyx":27
 *         self.timeout = timeout
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_7UVTimer_stop(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "uvloop/handles/timer.pyx":30
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._is_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/timer.pyx":31
 * 
 *         if not self._is_alive():
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/timer.pyx":32
 *         if not self._is_alive():
 *             self.running = 0
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 1:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/timer.pyx":30
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  }

  /* "uvloop/handles/timer.pyx":34
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)
 *             self.running = 0
 */
  __pyx_t_1 = ((__pyx_v_self->running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/timer.pyx":35
 * 
 *         if self.running == 1:
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             if err < 0:
 */
    __pyx_v_err = uv_timer_stop(((uv_timer_t *)__pyx_v_self->__pyx_base._handle));

    /* "uvloop/handles/timer.pyx":36
 *         if self.running == 1:
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             if err < 0:
 *                 exc = convert_error(err)
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/timer.pyx":37
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_1 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/timer.pyx":38
 *             self.running = 0
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 38, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/handles/timer.pyx":39
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 * 
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/timer.pyx":40
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 * 
 *     cdef start(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/timer.pyx":37
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/timer.pyx":34
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_timer_stop(<uv.uv_timer_t*>self._handle)
 *             self.running = 0
 */
  }

  /* "uvloop/handles/timer.pyx":27
 *         self.timeout = timeout
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVTimer.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/timer.pyx":42
 *                 return
 * 
 *     cdef start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_7UVTimer_start(struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("start", 0);

  /* "uvloop/handles/timer.pyx":45
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/timer.pyx":47
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_timer_start(<uv.uv_timer_t*>self._handle,
 *                                     __uvtimer_callback,
 */
  __pyx_t_2 = ((__pyx_v_self->running == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/timer.pyx":48
 * 
 *         if self.running == 0:
 *             err = uv.uv_timer_start(<uv.uv_timer_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                     __uvtimer_callback,
 *                                     self.timeout, 0)
 */
    __pyx_v_err = uv_timer_start(((uv_timer_t *)__pyx_v_self->__pyx_base._handle), __pyx_f_6uvloop_4loop___uvtimer_callback, __pyx_v_self->timeout, 0);

    /* "uvloop/handles/timer.pyx":51
 *                                     __uvtimer_callback,
 *                                     self.timeout, 0)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_2 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/timer.pyx":52
 *                                     self.timeout, 0)
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 52, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/handles/timer.pyx":53
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 *             self.running = 1
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 53, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/timer.pyx":54
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 *             self.running = 1
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/timer.pyx":51
 *                                     __uvtimer_callback,
 *                                     self.timeout, 0)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/timer.pyx":55
 *                 self._fatal_error(exc, True)
 *                 return
 *             self.running = 1             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    __pyx_v_self->running = 1;

    /* "uvloop/handles/timer.pyx":47
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_timer_start(<uv.uv_timer_t*>self._handle,
 *                                     __uvtimer_callback,
 */
  }

  /* "uvloop/handles/timer.pyx":42
 *                 return
 * 
 *     cdef start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVTimer.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/timer.pyx":58
 * 
 *     @staticmethod
 *     cdef UVTimer new(Loop loop, method_t* callback, object ctx,             # <<<<<<<<<<<<<<
 *                      uint64_t timeout):
 * 
 */

static struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_f_6uvloop_4loop_7UVTimer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, __pyx_t_6uvloop_4loop_method_t *__pyx_v_callback, PyObject *__pyx_v_ctx, uint64_t __pyx_v_timeout) {
  struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/timer.pyx":62
 * 
 *         cdef UVTimer handle
 *         handle = UVTimer.__new__(UVTimer)             # <<<<<<<<<<<<<<
 *         handle._init(loop, callback, ctx, timeout)
 *         return handle
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVTimer(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVTimer), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVTimer)))) __PYX_ERR(11, 62, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/timer.pyx":63
 *         cdef UVTimer handle
 *         handle = UVTimer.__new__(UVTimer)
 *         handle._init(loop, callback, ctx, timeout)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_handle->__pyx_base.__pyx_vtab)->_init(__pyx_v_handle, __pyx_v_loop, __pyx_v_callback, __pyx_v_ctx, __pyx_v_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/timer.pyx":64
 *         handle = UVTimer.__new__(UVTimer)
 *         handle._init(loop, callback, ctx, timeout)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/timer.pyx":58
 * 
 *     @staticmethod
 *     cdef UVTimer new(Loop loop, method_t* callback, object ctx,             # <<<<<<<<<<<<<<
 *                      uint64_t timeout):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVTimer.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/timer.pyx":67
 * 
 * 
 * cdef void __uvtimer_callback(uv.uv_timer_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVTimer callback") == 0:
 *         return
 */

static void __pyx_f_6uvloop_4loop___uvtimer_callback(uv_timer_t *__pyx_v_handle) {
  struct __pyx_obj_6uvloop_4loop_UVTimer *__pyx_v_timer = 0;
  __pyx_t_6uvloop_4loop_method_t __pyx_v_cb;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uvtimer_callback", 0);

  /* "uvloop/handles/timer.pyx":68
 * 
 * cdef void __uvtimer_callback(uv.uv_timer_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVTimer callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVTimer callback")) == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/timer.pyx":69
 * cdef void __uvtimer_callback(uv.uv_timer_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVTimer callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/timer.pyx":68
 * 
 * cdef void __uvtimer_callback(uv.uv_timer_t* handle) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVTimer callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/handles/timer.pyx":72
 * 
 *     cdef:
 *         UVTimer timer = <UVTimer> handle.data             # <<<<<<<<<<<<<<
 *         method_t cb = timer.callback[0] # deref
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_timer = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/timer.pyx":73
 *     cdef:
 *         UVTimer timer = <UVTimer> handle.data
 *         method_t cb = timer.callback[0] # deref             # <<<<<<<<<<<<<<
 * 
 *     timer.running = 0
 */
  __pyx_v_cb = (__pyx_v_timer->callback[0]);

  /* "uvloop/handles/timer.pyx":75
 *         method_t cb = timer.callback[0] # deref
 * 
 *     timer.running = 0             # <<<<<<<<<<<<<<
 *     try:
 *         cb(timer.ctx)
 */
  __pyx_v_timer->running = 0;

  /* "uvloop/handles/timer.pyx":76
 * 
 *     timer.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         cb(timer.ctx)
 *     except BaseException as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/timer.pyx":77
 *     timer.running = 0
 *     try:
 *         cb(timer.ctx)             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         timer._error(ex, False)
 */
      __pyx_t_2 = __pyx_v_timer->ctx;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_6 = __pyx_v_cb(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 77, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/timer.pyx":76
 * 
 *     timer.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         cb(timer.ctx)
 *     except BaseException as ex:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/handles/timer.pyx":78
 *     try:
 *         cb(timer.ctx)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         timer._error(ex, False)
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.__uvtimer_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(11, 78, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_ex = __pyx_t_2;
      /*try:*/ {

        /* "uvloop/handles/timer.pyx":79
 *         cb(timer.ctx)
 *     except BaseException as ex:
 *         timer._error(ex, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVTimer *)__pyx_v_timer->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_timer), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 79, __pyx_L17_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/timer.pyx":78
 *     try:
 *         cb(timer.ctx)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         timer._error(ex, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_7 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L6_except_error;
        }
        __pyx_L18:;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/handles/timer.pyx":76
 * 
 *     timer.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         cb(timer.ctx)
 *     except BaseException as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/timer.pyx":67
 * 
 * 
 * cdef void __uvtimer_callback(uv.uv_timer_t* handle) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVTimer callback") == 0:
 *         return
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__uvtimer_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_timer);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/signal.pyx":3
 * @cython.no_gc_clear
 * cdef class UVSignal(UVHandle):
 *     cdef _init(self, Loop loop, Handle h, int signum):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVSignal__init(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h, int __pyx_v_signum) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/signal.pyx":6
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/signal.pyx":8
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_signal_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_signal_t))));

  /* "uvloop/handles/signal.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_signal_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/signal.pyx":11
 *                             PyMem_Malloc(sizeof(uv.uv_signal_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/signal.pyx":12
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_signal_init(self._loop.uvloop,
 */
    PyErr_NoMemory(); __PYX_ERR(12, 12, __pyx_L1_error)

    /* "uvloop/handles/signal.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_signal_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/signal.pyx":14
 *             raise MemoryError()
 * 
 *         err = uv.uv_signal_init(self._loop.uvloop,             # <<<<<<<<<<<<<<
 *                                 <uv.uv_signal_t *>self._handle)
 *         if err < 0:
 */
  __pyx_v_err = uv_signal_init(__pyx_v_self->__pyx_base._loop->uvloop, ((uv_signal_t *)__pyx_v_self->__pyx_base._handle));

  /* "uvloop/handles/signal.pyx":16
 *         err = uv.uv_signal_init(self._loop.uvloop,
 *                                 <uv.uv_signal_t *>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/signal.pyx":17
 *                                 <uv.uv_signal_t *>self._handle)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/signal.pyx":18
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(12, 18, __pyx_L1_error)

    /* "uvloop/handles/signal.pyx":16
 *         err = uv.uv_signal_init(self._loop.uvloop,
 *                                 <uv.uv_signal_t *>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/signal.pyx":20
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         self.h = h
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/signal.pyx":22
 *         self._finish_init()
 * 
 *         self.h = h             # <<<<<<<<<<<<<<
 *         self.running = 0
 *         self.signum = signum
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_h));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_h));
  __Pyx_GOTREF(__pyx_v_self->h);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->h));
  __pyx_v_self->h = __pyx_v_h;

  /* "uvloop/handles/signal.pyx":23
 * 
 *         self.h = h
 *         self.running = 0             # <<<<<<<<<<<<<<
 *         self.signum = signum
 * 
 */
  __pyx_v_self->running = 0;

  /* "uvloop/handles/signal.pyx":24
 *         self.h = h
 *         self.running = 0
 *         self.signum = signum             # <<<<<<<<<<<<<<
 * 
 *     cdef stop(self):
 */
  __pyx_v_self->signum = __pyx_v_signum;

  /* "uvloop/handles/signal.pyx":3
 * @cython.no_gc_clear
 * cdef class UVSignal(UVHandle):
 *     cdef _init(self, Loop loop, Handle h, int signum):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVSignal._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/signal.pyx":26
 *         self.signum = signum
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVSignal_stop(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "uvloop/handles/signal.pyx":29
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._is_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/signal.pyx":30
 * 
 *         if not self._is_alive():
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/signal.pyx":31
 *         if not self._is_alive():
 *             self.running = 0
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 1:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/signal.pyx":29
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             return
 */
  }

  /* "uvloop/handles/signal.pyx":33
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)
 *             self.running = 0
 */
  __pyx_t_1 = ((__pyx_v_self->running == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/signal.pyx":34
 * 
 *         if self.running == 1:
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)             # <<<<<<<<<<<<<<
 *             self.running = 0
 *             if err < 0:
 */
    __pyx_v_err = uv_signal_stop(((uv_signal_t *)__pyx_v_self->__pyx_base._handle));

    /* "uvloop/handles/signal.pyx":35
 *         if self.running == 1:
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)
 *             self.running = 0             # <<<<<<<<<<<<<<
 *             if err < 0:
 *                 exc = convert_error(err)
 */
    __pyx_v_self->running = 0;

    /* "uvloop/handles/signal.pyx":36
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_1 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/signal.pyx":37
 *             self.running = 0
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/handles/signal.pyx":38
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 * 
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 38, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/signal.pyx":39
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 * 
 *     cdef start(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/signal.pyx":36
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)
 *             self.running = 0
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/signal.pyx":33
 *             return
 * 
 *         if self.running == 1:             # <<<<<<<<<<<<<<
 *             err = uv.uv_signal_stop(<uv.uv_signal_t *>self._handle)
 *             self.running = 0
 */
  }

  /* "uvloop/handles/signal.pyx":26
 *         self.signum = signum
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVSignal.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/signal.pyx":41
 *                 return
 * 
 *     cdef start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVSignal_start(struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("start", 0);

  /* "uvloop/handles/signal.pyx":44
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self.running == 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/signal.pyx":46
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_signal_start(<uv.uv_signal_t *>self._handle,
 *                                      __uvsignal_callback,
 */
  __pyx_t_2 = ((__pyx_v_self->running == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/signal.pyx":47
 * 
 *         if self.running == 0:
 *             err = uv.uv_signal_start(<uv.uv_signal_t *>self._handle,             # <<<<<<<<<<<<<<
 *                                      __uvsignal_callback,
 *                                      self.signum)
 */
    __pyx_v_err = uv_signal_start(((uv_signal_t *)__pyx_v_self->__pyx_base._handle), __pyx_f_6uvloop_4loop___uvsignal_callback, __pyx_v_self->signum);

    /* "uvloop/handles/signal.pyx":50
 *                                      __uvsignal_callback,
 *                                      self.signum)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    __pyx_t_2 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/signal.pyx":51
 *                                      self.signum)
 *             if err < 0:
 *                 exc = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 *                 return
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/handles/signal.pyx":52
 *             if err < 0:
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *                 return
 *             self.running = 1
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 52, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/signal.pyx":53
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 *                 return             # <<<<<<<<<<<<<<
 *             self.running = 1
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/handles/signal.pyx":50
 *                                      __uvsignal_callback,
 *                                      self.signum)
 *             if err < 0:             # <<<<<<<<<<<<<<
 *                 exc = convert_error(err)
 *                 self._fatal_error(exc, True)
 */
    }

    /* "uvloop/handles/signal.pyx":54
 *                 self._fatal_error(exc, True)
 *                 return
 *             self.running = 1             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    __pyx_v_self->running = 1;

    /* "uvloop/handles/signal.pyx":46
 *         self._ensure_alive()
 * 
 *         if self.running == 0:             # <<<<<<<<<<<<<<
 *             err = uv.uv_signal_start(<uv.uv_signal_t *>self._handle,
 *                                      __uvsignal_callback,
 */
  }

  /* "uvloop/handles/signal.pyx":41
 *                 return
 * 
 *     cdef start(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVSignal.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/signal.pyx":57
 * 
 *     @staticmethod
 *     cdef UVSignal new(Loop loop, Handle h, int signum):             # <<<<<<<<<<<<<<
 * 
 *         cdef UVSignal handle
 */

static struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_f_6uvloop_4loop_8UVSignal_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h, int __pyx_v_signum) {
  struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/signal.pyx":60
 * 
 *         cdef UVSignal handle
 *         handle = UVSignal.__new__(UVSignal)             # <<<<<<<<<<<<<<
 *         handle._init(loop, h, signum)
 *         return handle
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVSignal(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVSignal), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVSignal)))) __PYX_ERR(12, 60, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/signal.pyx":61
 *         cdef UVSignal handle
 *         handle = UVSignal.__new__(UVSignal)
 *         handle._init(loop, h, signum)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_handle->__pyx_base.__pyx_vtab)->_init(__pyx_v_handle, __pyx_v_loop, __pyx_v_h, __pyx_v_signum); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/signal.pyx":62
 *         handle = UVSignal.__new__(UVSignal)
 *         handle._init(loop, h, signum)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/signal.pyx":57
 * 
 *     @staticmethod
 *     cdef UVSignal new(Loop loop, Handle h, int signum):             # <<<<<<<<<<<<<<
 * 
 *         cdef UVSignal handle
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVSignal.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/signal.pyx":65
 * 
 * 
 * cdef void __uvsignal_callback(uv.uv_signal_t* handle, int signum) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVSignal callback") == 0:
 *         return
 */

static void __pyx_f_6uvloop_4loop___uvsignal_callback(uv_signal_t *__pyx_v_handle, CYTHON_UNUSED int __pyx_v_signum) {
  struct __pyx_obj_6uvloop_4loop_UVSignal *__pyx_v_sig = 0;
  struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_h = 0;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uvsignal_callback", 0);

  /* "uvloop/handles/signal.pyx":66
 * 
 * cdef void __uvsignal_callback(uv.uv_signal_t* handle, int signum) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVSignal callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVSignal callback")) == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/signal.pyx":67
 * cdef void __uvsignal_callback(uv.uv_signal_t* handle, int signum) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVSignal callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/signal.pyx":66
 * 
 * cdef void __uvsignal_callback(uv.uv_signal_t* handle, int signum) with gil:
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVSignal callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/handles/signal.pyx":70
 * 
 *     cdef:
 *         UVSignal sig = <UVSignal> handle.data             # <<<<<<<<<<<<<<
 *         Handle h = sig.h
 *     sig.running = 0
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_sig = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/signal.pyx":71
 *     cdef:
 *         UVSignal sig = <UVSignal> handle.data
 *         Handle h = sig.h             # <<<<<<<<<<<<<<
 *     sig.running = 0
 *     try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_sig->h);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_h = ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/signal.pyx":72
 *         UVSignal sig = <UVSignal> handle.data
 *         Handle h = sig.h
 *     sig.running = 0             # <<<<<<<<<<<<<<
 *     try:
 *         h._run()
 */
  __pyx_v_sig->running = 0;

  /* "uvloop/handles/signal.pyx":73
 *         Handle h = sig.h
 *     sig.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/signal.pyx":74
 *     sig.running = 0
 *     try:
 *         h._run()             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         sig._error(ex, False)
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_h); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 74, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/signal.pyx":73
 *         Handle h = sig.h
 *     sig.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/signal.pyx":75
 *     try:
 *         h._run()
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         sig._error(ex, False)
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.__uvsignal_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(12, 75, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_ex = __pyx_t_7;
      /*try:*/ {

        /* "uvloop/handles/signal.pyx":76
 *         h._run()
 *     except BaseException as ex:
 *         sig._error(ex, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVSignal *)__pyx_v_sig->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_sig), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 76, __pyx_L17_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/signal.pyx":75
 *     try:
 *         h._run()
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         sig._error(ex, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L6_except_error;
        }
        __pyx_L18:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/handles/signal.pyx":73
 *         Handle h = sig.h
 *     sig.running = 0
 *     try:             # <<<<<<<<<<<<<<
 *         h._run()
 *     except BaseException as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/signal.pyx":65
 * 
 * 
 * cdef void __uvsignal_callback(uv.uv_signal_t* handle, int signum) with gil:             # <<<<<<<<<<<<<<
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVSignal callback") == 0:
 *         return
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__uvsignal_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sig);
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/poll.pyx":3
 * @cython.no_gc_clear
 * cdef class UVPoll(UVHandle):
 *     cdef _init(self, Loop loop, int fd):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__init(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, int __pyx_v_fd) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/poll.pyx":6
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/poll.pyx":8
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_poll_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_poll_t))));

  /* "uvloop/handles/poll.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_poll_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":11
 *                             PyMem_Malloc(sizeof(uv.uv_poll_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/poll.pyx":12
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_poll_init(self._loop.uvloop,
 */
    PyErr_NoMemory(); __PYX_ERR(13, 12, __pyx_L1_error)

    /* "uvloop/handles/poll.pyx":10
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_poll_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/poll.pyx":14
 *             raise MemoryError()
 * 
 *         err = uv.uv_poll_init(self._loop.uvloop,             # <<<<<<<<<<<<<<
 *                               <uv.uv_poll_t *>self._handle, fd)
 *         if err < 0:
 */
  __pyx_v_err = uv_poll_init(__pyx_v_self->__pyx_base._loop->uvloop, ((uv_poll_t *)__pyx_v_self->__pyx_base._handle), __pyx_v_fd);

  /* "uvloop/handles/poll.pyx":16
 *         err = uv.uv_poll_init(self._loop.uvloop,
 *                               <uv.uv_poll_t *>self._handle, fd)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":17
 *                               <uv.uv_poll_t *>self._handle, fd)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/poll.pyx":18
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(13, 18, __pyx_L1_error)

    /* "uvloop/handles/poll.pyx":16
 *         err = uv.uv_poll_init(self._loop.uvloop,
 *                               <uv.uv_poll_t *>self._handle, fd)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/poll.pyx":20
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         self.fd = fd
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/poll.pyx":22
 *         self._finish_init()
 * 
 *         self.fd = fd             # <<<<<<<<<<<<<<
 *         self.reading_handle = None
 *         self.writing_handle = None
 */
  __pyx_v_self->fd = __pyx_v_fd;

  /* "uvloop/handles/poll.pyx":23
 * 
 *         self.fd = fd
 *         self.reading_handle = None             # <<<<<<<<<<<<<<
 *         self.writing_handle = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->reading_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->reading_handle));
  __pyx_v_self->reading_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

  /* "uvloop/handles/poll.pyx":24
 *         self.fd = fd
 *         self.reading_handle = None
 *         self.writing_handle = None             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->writing_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->writing_handle));
  __pyx_v_self->writing_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

  /* "uvloop/handles/poll.pyx":3
 * @cython.no_gc_clear
 * cdef class UVPoll(UVHandle):
 *     cdef _init(self, Loop loop, int fd):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVPoll._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":27
 * 
 *     @staticmethod
 *     cdef UVPoll new(Loop loop, int fd):             # <<<<<<<<<<<<<<
 *         cdef UVPoll handle
 *         handle = UVPoll.__new__(UVPoll)
 */

static struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_f_6uvloop_4loop_6UVPoll_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, int __pyx_v_fd) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/poll.pyx":29
 *     cdef UVPoll new(Loop loop, int fd):
 *         cdef UVPoll handle
 *         handle = UVPoll.__new__(UVPoll)             # <<<<<<<<<<<<<<
 *         handle._init(loop, fd)
 *         return handle
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVPoll(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVPoll), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVPoll)))) __PYX_ERR(13, 29, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/poll.pyx":30
 *         cdef UVPoll handle
 *         handle = UVPoll.__new__(UVPoll)
 *         handle._init(loop, fd)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_handle->__pyx_base.__pyx_vtab)->_init(__pyx_v_handle, __pyx_v_loop, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/poll.pyx":31
 *         handle = UVPoll.__new__(UVPoll)
 *         handle._init(loop, fd)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef int is_active(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/poll.pyx":27
 * 
 *     @staticmethod
 *     cdef UVPoll new(Loop loop, int fd):             # <<<<<<<<<<<<<<
 *         cdef UVPoll handle
 *         handle = UVPoll.__new__(UVPoll)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":33
 *         return handle
 * 
 *     cdef int is_active(self):             # <<<<<<<<<<<<<<
 *         return (self.reading_handle is not None or
 *                 self.writing_handle is not None)
 */

static int __pyx_f_6uvloop_4loop_6UVPoll_is_active(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("is_active", 0);

  /* "uvloop/handles/poll.pyx":34
 * 
 *     cdef int is_active(self):
 *         return (self.reading_handle is not None or             # <<<<<<<<<<<<<<
 *                 self.writing_handle is not None)
 * 
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->reading_handle) != Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }

  /* "uvloop/handles/poll.pyx":35
 *     cdef int is_active(self):
 *         return (self.reading_handle is not None or
 *                 self.writing_handle is not None)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _poll_start(self, int flags):
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->writing_handle) != Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "uvloop/handles/poll.pyx":33
 *         return handle
 * 
 *     cdef int is_active(self):             # <<<<<<<<<<<<<<
 *         return (self.reading_handle is not None or
 *                 self.writing_handle is not None)
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":37
 *                 self.writing_handle is not None)
 * 
 *     cdef inline _poll_start(self, int flags):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_start(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, int __pyx_v_flags) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_poll_start", 0);

  /* "uvloop/handles/poll.pyx":40
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_poll_start(
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/poll.pyx":42
 *         self._ensure_alive()
 * 
 *         err = uv.uv_poll_start(             # <<<<<<<<<<<<<<
 *             <uv.uv_poll_t*>self._handle,
 *             flags,
 */
  __pyx_v_err = uv_poll_start(((uv_poll_t *)__pyx_v_self->__pyx_base._handle), __pyx_v_flags, __pyx_f_6uvloop_4loop___on_uvpoll_event);

  /* "uvloop/handles/poll.pyx":47
 *             __on_uvpoll_event)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":48
 * 
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/poll.pyx":49
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/poll.pyx":50
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _poll_stop(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":47
 *             __on_uvpoll_event)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/poll.pyx":37
 *                 self.writing_handle is not None)
 * 
 *     cdef inline _poll_start(self, int flags):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVPoll._poll_start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":52
 *             return
 * 
 *     cdef inline _poll_stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_6UVPoll__poll_stop(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_poll_stop", 0);

  /* "uvloop/handles/poll.pyx":55
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._is_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":56
 * 
 *         if not self._is_alive():
 *             return             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_poll_stop(<uv.uv_poll_t*>self._handle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":55
 *         cdef int err
 * 
 *         if not self._is_alive():             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":58
 *             return
 * 
 *         err = uv.uv_poll_stop(<uv.uv_poll_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_poll_stop(((uv_poll_t *)__pyx_v_self->__pyx_base._handle));

  /* "uvloop/handles/poll.pyx":59
 * 
 *         err = uv.uv_poll_stop(<uv.uv_poll_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":60
 *         err = uv.uv_poll_stop(<uv.uv_poll_t*>self._handle)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/poll.pyx":61
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/poll.pyx":62
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     cdef start_reading(self, Handle callback):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":59
 * 
 *         err = uv.uv_poll_stop(<uv.uv_poll_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/poll.pyx":52
 *             return
 * 
 *     cdef inline _poll_stop(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVPoll._poll_stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":64
 *             return
 * 
 *     cdef start_reading(self, Handle callback):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int mask = 0
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_start_reading(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_callback) {
  int __pyx_v_mask;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("start_reading", 0);

  /* "uvloop/handles/poll.pyx":66
 *     cdef start_reading(self, Handle callback):
 *         cdef:
 *             int mask = 0             # <<<<<<<<<<<<<<
 * 
 *         if self.reading_handle is None:
 */
  __pyx_v_mask = 0;

  /* "uvloop/handles/poll.pyx":68
 *             int mask = 0
 * 
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             # not reading right now, setup the handle
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->reading_handle) == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":71
 *             # not reading right now, setup the handle
 * 
 *             mask = uv.UV_READABLE             # <<<<<<<<<<<<<<
 *             if self.writing_handle is not None:
 *                 # are we writing right now?
 */
    __pyx_v_mask = UV_READABLE;

    /* "uvloop/handles/poll.pyx":72
 * 
 *             mask = uv.UV_READABLE
 *             if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *                 # are we writing right now?
 *                 mask |= uv.UV_WRITABLE
 */
    __pyx_t_2 = (((PyObject *)__pyx_v_self->writing_handle) != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/poll.pyx":74
 *             if self.writing_handle is not None:
 *                 # are we writing right now?
 *                 mask |= uv.UV_WRITABLE             # <<<<<<<<<<<<<<
 * 
 *             self._poll_start(mask)
 */
      __pyx_v_mask = (__pyx_v_mask | UV_WRITABLE);

      /* "uvloop/handles/poll.pyx":72
 * 
 *             mask = uv.UV_READABLE
 *             if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *                 # are we writing right now?
 *                 mask |= uv.UV_WRITABLE
 */
    }

    /* "uvloop/handles/poll.pyx":76
 *                 mask |= uv.UV_WRITABLE
 * 
 *             self._poll_start(mask)             # <<<<<<<<<<<<<<
 *         else:
 *             self.reading_handle._cancel()
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVPoll__poll_start(__pyx_v_self, __pyx_v_mask); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":68
 *             int mask = 0
 * 
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             # not reading right now, setup the handle
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/poll.pyx":78
 *             self._poll_start(mask)
 *         else:
 *             self.reading_handle._cancel()             # <<<<<<<<<<<<<<
 * 
 *         self.reading_handle = callback
 */
  /*else*/ {
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->reading_handle->__pyx_vtab)->_cancel(__pyx_v_self->reading_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/poll.pyx":80
 *             self.reading_handle._cancel()
 * 
 *         self.reading_handle = callback             # <<<<<<<<<<<<<<
 * 
 *     cdef start_writing(self, Handle callback):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_callback));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_callback));
  __Pyx_GOTREF(__pyx_v_self->reading_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->reading_handle));
  __pyx_v_self->reading_handle = __pyx_v_callback;

  /* "uvloop/handles/poll.pyx":64
 *             return
 * 
 *     cdef start_reading(self, Handle callback):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int mask = 0
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.start_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":82
 *         self.reading_handle = callback
 * 
 *     cdef start_writing(self, Handle callback):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int mask = 0
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_start_writing(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Handle *__pyx_v_callback) {
  int __pyx_v_mask;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("start_writing", 0);

  /* "uvloop/handles/poll.pyx":84
 *     cdef start_writing(self, Handle callback):
 *         cdef:
 *             int mask = 0             # <<<<<<<<<<<<<<
 * 
 *         if self.writing_handle is None:
 */
  __pyx_v_mask = 0;

  /* "uvloop/handles/poll.pyx":86
 *             int mask = 0
 * 
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             # not writing right now, setup the handle
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->writing_handle) == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":89
 *             # not writing right now, setup the handle
 * 
 *             mask = uv.UV_WRITABLE             # <<<<<<<<<<<<<<
 *             if self.reading_handle is not None:
 *                 # are we reading right now?
 */
    __pyx_v_mask = UV_WRITABLE;

    /* "uvloop/handles/poll.pyx":90
 * 
 *             mask = uv.UV_WRITABLE
 *             if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *                 # are we reading right now?
 *                 mask |= uv.UV_READABLE
 */
    __pyx_t_2 = (((PyObject *)__pyx_v_self->reading_handle) != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/poll.pyx":92
 *             if self.reading_handle is not None:
 *                 # are we reading right now?
 *                 mask |= uv.UV_READABLE             # <<<<<<<<<<<<<<
 * 
 *             self._poll_start(mask)
 */
      __pyx_v_mask = (__pyx_v_mask | UV_READABLE);

      /* "uvloop/handles/poll.pyx":90
 * 
 *             mask = uv.UV_WRITABLE
 *             if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *                 # are we reading right now?
 *                 mask |= uv.UV_READABLE
 */
    }

    /* "uvloop/handles/poll.pyx":94
 *                 mask |= uv.UV_READABLE
 * 
 *             self._poll_start(mask)             # <<<<<<<<<<<<<<
 *         else:
 *             self.writing_handle._cancel()
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVPoll__poll_start(__pyx_v_self, __pyx_v_mask); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":86
 *             int mask = 0
 * 
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             # not writing right now, setup the handle
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/poll.pyx":96
 *             self._poll_start(mask)
 *         else:
 *             self.writing_handle._cancel()             # <<<<<<<<<<<<<<
 * 
 *         self.writing_handle = callback
 */
  /*else*/ {
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->writing_handle->__pyx_vtab)->_cancel(__pyx_v_self->writing_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/poll.pyx":98
 *             self.writing_handle._cancel()
 * 
 *         self.writing_handle = callback             # <<<<<<<<<<<<<<
 * 
 *     cdef stop_reading(self):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_callback));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_callback));
  __Pyx_GOTREF(__pyx_v_self->writing_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->writing_handle));
  __pyx_v_self->writing_handle = __pyx_v_callback;

  /* "uvloop/handles/poll.pyx":82
 *         self.reading_handle = callback
 * 
 *     cdef start_writing(self, Handle callback):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int mask = 0
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.start_writing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":100
 *         self.writing_handle = callback
 * 
 *     cdef stop_reading(self):             # <<<<<<<<<<<<<<
 *         if self.reading_handle is None:
 *             return False
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop_reading(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("stop_reading", 0);

  /* "uvloop/handles/poll.pyx":101
 * 
 *     cdef stop_reading(self):
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->reading_handle) == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":102
 *     cdef stop_reading(self):
 *         if self.reading_handle is None:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         self.reading_handle._cancel()
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":101
 * 
 *     cdef stop_reading(self):
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":104
 *             return False
 * 
 *         self.reading_handle._cancel()             # <<<<<<<<<<<<<<
 *         self.reading_handle = None
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->reading_handle->__pyx_vtab)->_cancel(__pyx_v_self->reading_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/poll.pyx":105
 * 
 *         self.reading_handle._cancel()
 *         self.reading_handle = None             # <<<<<<<<<<<<<<
 * 
 *         if self.writing_handle is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->reading_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->reading_handle));
  __pyx_v_self->reading_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

  /* "uvloop/handles/poll.pyx":107
 *         self.reading_handle = None
 * 
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             self.stop()
 *         else:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->writing_handle) == Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":108
 * 
 *         if self.writing_handle is None:
 *             self.stop()             # <<<<<<<<<<<<<<
 *         else:
 *             self._poll_start(uv.UV_WRITABLE)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->stop(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":107
 *         self.reading_handle = None
 * 
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             self.stop()
 *         else:
 */
    goto __pyx_L4;
  }

  /* "uvloop/handles/poll.pyx":110
 *             self.stop()
 *         else:
 *             self._poll_start(uv.UV_WRITABLE)             # <<<<<<<<<<<<<<
 * 
 *         return True
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVPoll__poll_start(__pyx_v_self, UV_WRITABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "uvloop/handles/poll.pyx":112
 *             self._poll_start(uv.UV_WRITABLE)
 * 
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     cdef stop_writing(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "uvloop/handles/poll.pyx":100
 *         self.writing_handle = callback
 * 
 *     cdef stop_reading(self):             # <<<<<<<<<<<<<<
 *         if self.reading_handle is None:
 *             return False
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.stop_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":114
 *         return True
 * 
 *     cdef stop_writing(self):             # <<<<<<<<<<<<<<
 *         if self.writing_handle is None:
 *             return False
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop_writing(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("stop_writing", 0);

  /* "uvloop/handles/poll.pyx":115
 * 
 *     cdef stop_writing(self):
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->writing_handle) == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":116
 *     cdef stop_writing(self):
 *         if self.writing_handle is None:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         self.writing_handle._cancel()
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":115
 * 
 *     cdef stop_writing(self):
 *         if self.writing_handle is None:             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":118
 *             return False
 * 
 *         self.writing_handle._cancel()             # <<<<<<<<<<<<<<
 *         self.writing_handle = None
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->writing_handle->__pyx_vtab)->_cancel(__pyx_v_self->writing_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/poll.pyx":119
 * 
 *         self.writing_handle._cancel()
 *         self.writing_handle = None             # <<<<<<<<<<<<<<
 * 
 *         if self.reading_handle is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->writing_handle);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->writing_handle));
  __pyx_v_self->writing_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

  /* "uvloop/handles/poll.pyx":121
 *         self.writing_handle = None
 * 
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             self.stop()
 *         else:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->reading_handle) == Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":122
 * 
 *         if self.reading_handle is None:
 *             self.stop()             # <<<<<<<<<<<<<<
 *         else:
 *             self._poll_start(uv.UV_READABLE)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->stop(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":121
 *         self.writing_handle = None
 * 
 *         if self.reading_handle is None:             # <<<<<<<<<<<<<<
 *             self.stop()
 *         else:
 */
    goto __pyx_L4;
  }

  /* "uvloop/handles/poll.pyx":124
 *             self.stop()
 *         else:
 *             self._poll_start(uv.UV_READABLE)             # <<<<<<<<<<<<<<
 * 
 *         return True
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVPoll__poll_start(__pyx_v_self, UV_READABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "uvloop/handles/poll.pyx":126
 *             self._poll_start(uv.UV_READABLE)
 * 
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     cdef stop(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "uvloop/handles/poll.pyx":114
 *         return True
 * 
 *     cdef stop_writing(self):             # <<<<<<<<<<<<<<
 *         if self.writing_handle is None:
 *             return False
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.stop_writing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":128
 *         return True
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         if self.reading_handle is not None:
 *             self.reading_handle._cancel()
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll_stop(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "uvloop/handles/poll.pyx":129
 * 
 *     cdef stop(self):
 *         if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *             self.reading_handle._cancel()
 *             self.reading_handle = None
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->reading_handle) != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/poll.pyx":130
 *     cdef stop(self):
 *         if self.reading_handle is not None:
 *             self.reading_handle._cancel()             # <<<<<<<<<<<<<<
 *             self.reading_handle = None
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->reading_handle->__pyx_vtab)->_cancel(__pyx_v_self->reading_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":131
 *         if self.reading_handle is not None:
 *             self.reading_handle._cancel()
 *             self.reading_handle = None             # <<<<<<<<<<<<<<
 * 
 *         if self.writing_handle is not None:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->reading_handle);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->reading_handle));
    __pyx_v_self->reading_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

    /* "uvloop/handles/poll.pyx":129
 * 
 *     cdef stop(self):
 *         if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *             self.reading_handle._cancel()
 *             self.reading_handle = None
 */
  }

  /* "uvloop/handles/poll.pyx":133
 *             self.reading_handle = None
 * 
 *         if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *             self.writing_handle._cancel()
 *             self.writing_handle = None
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->writing_handle) != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":134
 * 
 *         if self.writing_handle is not None:
 *             self.writing_handle._cancel()             # <<<<<<<<<<<<<<
 *             self.writing_handle = None
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Handle *)__pyx_v_self->writing_handle->__pyx_vtab)->_cancel(__pyx_v_self->writing_handle); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/poll.pyx":135
 *         if self.writing_handle is not None:
 *             self.writing_handle._cancel()
 *             self.writing_handle = None             # <<<<<<<<<<<<<<
 * 
 *         self._poll_stop()
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->writing_handle);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->writing_handle));
    __pyx_v_self->writing_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

    /* "uvloop/handles/poll.pyx":133
 *             self.reading_handle = None
 * 
 *         if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *             self.writing_handle._cancel()
 *             self.writing_handle = None
 */
  }

  /* "uvloop/handles/poll.pyx":137
 *             self.writing_handle = None
 * 
 *         self._poll_stop()             # <<<<<<<<<<<<<<
 * 
 *     cdef _close(self):
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_6UVPoll__poll_stop(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/poll.pyx":128
 *         return True
 * 
 *     cdef stop(self):             # <<<<<<<<<<<<<<
 *         if self.reading_handle is not None:
 *             self.reading_handle._cancel()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVPoll.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":139
 *         self._poll_stop()
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         if self.is_active():
 *             self.stop()
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__close(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "uvloop/handles/poll.pyx":140
 * 
 *     cdef _close(self):
 *         if self.is_active():             # <<<<<<<<<<<<<<
 *             self.stop()
 * 
 */
  __pyx_t_1 = (((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->is_active(__pyx_v_self) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":141
 *     cdef _close(self):
 *         if self.is_active():
 *             self.stop()             # <<<<<<<<<<<<<<
 * 
 *         UVHandle._close(<UVHandle>self)
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->stop(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/poll.pyx":140
 * 
 *     cdef _close(self):
 *         if self.is_active():             # <<<<<<<<<<<<<<
 *             self.stop()
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":143
 *             self.stop()
 * 
 *         UVHandle._close(<UVHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVHandle__close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/poll.pyx":139
 *         self._poll_stop()
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         if self.is_active():
 *             self.stop()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVPoll._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":145
 *         UVHandle._close(<UVHandle>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         try:
 *             if self.reading_handle is not None:
 */

static PyObject *__pyx_f_6uvloop_4loop_6UVPoll__fatal_error(struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc, CYTHON_UNUSED PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_6UVPoll__fatal_error *__pyx_optional_args) {
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  __Pyx_RefNannySetupContext("_fatal_error", 0);
  if (__pyx_optional_args) {
  }

  /* "uvloop/handles/poll.pyx":146
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):
 *         try:             # <<<<<<<<<<<<<<
 *             if self.reading_handle is not None:
 *                 try:
 */
  /*try:*/ {

    /* "uvloop/handles/poll.pyx":147
 *     cdef _fatal_error(self, exc, throw, reason=None):
 *         try:
 *             if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.reading_handle._run()
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_self->reading_handle) != Py_None);
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/poll.pyx":148
 *         try:
 *             if self.reading_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.reading_handle._run()
 *                 except BaseException as ex:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_5);
        /*try:*/ {

          /* "uvloop/handles/poll.pyx":149
 *             if self.reading_handle is not None:
 *                 try:
 *                     self.reading_handle._run()             # <<<<<<<<<<<<<<
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)
 */
          __pyx_t_6 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_self->reading_handle); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 149, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/handles/poll.pyx":148
 *         try:
 *             if self.reading_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.reading_handle._run()
 *                 except BaseException as ex:
 */
        }
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L14_try_end;
        __pyx_L7_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/handles/poll.pyx":150
 *                 try:
 *                     self.reading_handle._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._loop._handle_exception(ex)
 *                 self.reading_handle = None
 */
        __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_7) {
          __Pyx_AddTraceback("uvloop.loop.UVPoll._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(13, 150, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_8);
          __pyx_v_ex = __pyx_t_8;
          /*try:*/ {

            /* "uvloop/handles/poll.pyx":151
 *                     self.reading_handle._run()
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)             # <<<<<<<<<<<<<<
 *                 self.reading_handle = None
 * 
 */
            ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_base._loop->__pyx_vtab)->_handle_exception(__pyx_v_self->__pyx_base._loop, __pyx_v_ex);
          }

          /* "uvloop/handles/poll.pyx":150
 *                 try:
 *                     self.reading_handle._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._loop._handle_exception(ex)
 *                 self.reading_handle = None
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
              goto __pyx_L21;
            }
            __pyx_L21:;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L8_exception_handled;
        }
        goto __pyx_L9_except_error;
        __pyx_L9_except_error:;

        /* "uvloop/handles/poll.pyx":148
 *         try:
 *             if self.reading_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.reading_handle._run()
 *                 except BaseException as ex:
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        goto __pyx_L4_error;
        __pyx_L8_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        __pyx_L14_try_end:;
      }

      /* "uvloop/handles/poll.pyx":152
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)
 *                 self.reading_handle = None             # <<<<<<<<<<<<<<
 * 
 *             if self.writing_handle is not None:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->reading_handle);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->reading_handle));
      __pyx_v_self->reading_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

      /* "uvloop/handles/poll.pyx":147
 *     cdef _fatal_error(self, exc, throw, reason=None):
 *         try:
 *             if self.reading_handle is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.reading_handle._run()
 */
    }

    /* "uvloop/handles/poll.pyx":154
 *                 self.reading_handle = None
 * 
 *             if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.writing_handle._run()
 */
    __pyx_t_2 = (((PyObject *)__pyx_v_self->writing_handle) != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/poll.pyx":155
 * 
 *             if self.writing_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.writing_handle._run()
 *                 except BaseException as ex:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_3);
        /*try:*/ {

          /* "uvloop/handles/poll.pyx":156
 *             if self.writing_handle is not None:
 *                 try:
 *                     self.writing_handle._run()             # <<<<<<<<<<<<<<
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)
 */
          __pyx_t_9 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_self->writing_handle); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 156, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

          /* "uvloop/handles/poll.pyx":155
 * 
 *             if self.writing_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.writing_handle._run()
 *                 except BaseException as ex:
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L30_try_end;
        __pyx_L23_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "uvloop/handles/poll.pyx":157
 *                 try:
 *                     self.writing_handle._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._loop._handle_exception(ex)
 *                 self.writing_handle = None
 */
        __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_7) {
          __Pyx_AddTraceback("uvloop.loop.UVPoll._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(13, 157, __pyx_L25_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_8);
          __pyx_v_ex = __pyx_t_8;
          /*try:*/ {

            /* "uvloop/handles/poll.pyx":158
 *                     self.writing_handle._run()
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)             # <<<<<<<<<<<<<<
 *                 self.writing_handle = None
 * 
 */
            ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->__pyx_base._loop->__pyx_vtab)->_handle_exception(__pyx_v_self->__pyx_base._loop, __pyx_v_ex);
          }

          /* "uvloop/handles/poll.pyx":157
 *                 try:
 *                     self.writing_handle._run()
 *                 except BaseException as ex:             # <<<<<<<<<<<<<<
 *                     self._loop._handle_exception(ex)
 *                 self.writing_handle = None
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
              goto __pyx_L37;
            }
            __pyx_L37:;
          }
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L24_exception_handled;
        }
        goto __pyx_L25_except_error;
        __pyx_L25_except_error:;

        /* "uvloop/handles/poll.pyx":155
 * 
 *             if self.writing_handle is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     self.writing_handle._run()
 *                 except BaseException as ex:
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
        goto __pyx_L4_error;
        __pyx_L24_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
        __pyx_L30_try_end:;
      }

      /* "uvloop/handles/poll.pyx":159
 *                 except BaseException as ex:
 *                     self._loop._handle_exception(ex)
 *                 self.writing_handle = None             # <<<<<<<<<<<<<<
 * 
 *         finally:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->writing_handle);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->writing_handle));
      __pyx_v_self->writing_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None);

      /* "uvloop/handles/poll.pyx":154
 *                 self.reading_handle = None
 * 
 *             if self.writing_handle is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     self.writing_handle._run()
 */
    }
  }

  /* "uvloop/handles/poll.pyx":162
 * 
 *         finally:
 *             self._close()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L4_error:;
      __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_7 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
      {
        __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 162, __pyx_L39_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
      goto __pyx_L1_error;
      __pyx_L39_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "uvloop/handles/poll.pyx":145
 *         UVHandle._close(<UVHandle>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         try:
 *             if self.reading_handle is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("uvloop.loop.UVPoll._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/poll.pyx":165
 * 
 * 
 * cdef void __on_uvpoll_event(uv.uv_poll_t* handle,             # <<<<<<<<<<<<<<
 *                             int status, int events) with gil:
 * 
 */

static void __pyx_f_6uvloop_4loop___on_uvpoll_event(uv_poll_t *__pyx_v_handle, int __pyx_v_status, int __pyx_v_events) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *__pyx_v_poll = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  char const *__pyx_t_20;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__on_uvpoll_event", 0);

  /* "uvloop/handles/poll.pyx":168
 *                             int status, int events) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVPoll callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVPoll callback")) == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":169
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVPoll callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":168
 *                             int status, int events) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle, "UVPoll callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":172
 * 
 *     cdef:
 *         UVPoll poll = <UVPoll> handle.data             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_poll = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/poll.pyx":174
 *         UVPoll poll = <UVPoll> handle.data
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *         poll._fatal_error(exc, False)
 */
  __pyx_t_1 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":175
 * 
 *     if status < 0:
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *         poll._fatal_error(exc, False)
 *         return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/poll.pyx":176
 *     if status < 0:
 *         exc = convert_error(status)
 *         poll._fatal_error(exc, False)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll), __pyx_v_exc, Py_False, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/poll.pyx":177
 *         exc = convert_error(status)
 *         poll._fatal_error(exc, False)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if ((events & (uv.UV_READABLE | uv.UV_DISCONNECT)) and
 */
    goto __pyx_L0;

    /* "uvloop/handles/poll.pyx":174
 *         UVPoll poll = <UVPoll> handle.data
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *         poll._fatal_error(exc, False)
 */
  }

  /* "uvloop/handles/poll.pyx":179
 *         return
 * 
 *     if ((events & (uv.UV_READABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.reading_handle is not None):
 * 
 */
  __pyx_t_3 = ((__pyx_v_events & (UV_READABLE | UV_DISCONNECT)) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }

  /* "uvloop/handles/poll.pyx":180
 * 
 *     if ((events & (uv.UV_READABLE | uv.UV_DISCONNECT)) and
 *             poll.reading_handle is not None):             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_poll->reading_handle) != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_4;
  __pyx_L6_bool_binop_done:;

  /* "uvloop/handles/poll.pyx":179
 *         return
 * 
 *     if ((events & (uv.UV_READABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.reading_handle is not None):
 * 
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":182
 *             poll.reading_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_read_events_total += 1
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "uvloop/handles/poll.pyx":185
 *             IF DEBUG:
 *                 poll._loop._poll_read_events_total += 1
 *             poll.reading_handle._run()             # <<<<<<<<<<<<<<
 *         except BaseException as ex:
 *             IF DEBUG:
 */
        __pyx_t_2 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_poll->reading_handle); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 185, __pyx_L8_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/handles/poll.pyx":182
 *             poll.reading_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_read_events_total += 1
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L15_try_end;
      __pyx_L8_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/poll.pyx":186
 *                 poll._loop._poll_read_events_total += 1
 *             poll.reading_handle._run()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_read_cb_errors_total += 1
 */
      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_8) {
        __Pyx_AddTraceback("uvloop.loop.__on_uvpoll_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(13, 186, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_9);
        __pyx_v_ex = __pyx_t_9;
        /*try:*/ {

          /* "uvloop/handles/poll.pyx":189
 *             IF DEBUG:
 *                 poll._loop._poll_read_cb_errors_total += 1
 *             poll._error(ex, False)             # <<<<<<<<<<<<<<
 *             # continue code execution
 * 
 */
          __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 189, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }

        /* "uvloop/handles/poll.pyx":186
 *                 poll._loop._poll_read_events_total += 1
 *             poll.reading_handle._run()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_read_cb_errors_total += 1
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L22;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L21_error:;
            __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __pyx_t_8 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
            __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
            __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
            goto __pyx_L10_except_error;
          }
          __pyx_L22:;
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L9_exception_handled;
      }
      goto __pyx_L10_except_error;
      __pyx_L10_except_error:;

      /* "uvloop/handles/poll.pyx":182
 *             poll.reading_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_read_events_total += 1
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L9_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_L15_try_end:;
    }

    /* "uvloop/handles/poll.pyx":179
 *         return
 * 
 *     if ((events & (uv.UV_READABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.reading_handle is not None):
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":192
 *             # continue code execution
 * 
 *     if ((events & (uv.UV_WRITABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.writing_handle is not None):
 * 
 */
  __pyx_t_4 = ((__pyx_v_events & (UV_WRITABLE | UV_DISCONNECT)) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_1 = __pyx_t_4;
    goto __pyx_L28_bool_binop_done;
  }

  /* "uvloop/handles/poll.pyx":193
 * 
 *     if ((events & (uv.UV_WRITABLE | uv.UV_DISCONNECT)) and
 *             poll.writing_handle is not None):             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_poll->writing_handle) != Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L28_bool_binop_done:;

  /* "uvloop/handles/poll.pyx":192
 *             # continue code execution
 * 
 *     if ((events & (uv.UV_WRITABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.writing_handle is not None):
 * 
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/poll.pyx":195
 *             poll.writing_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_write_events_total += 1
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/handles/poll.pyx":198
 *             IF DEBUG:
 *                 poll._loop._poll_write_events_total += 1
 *             poll.writing_handle._run()             # <<<<<<<<<<<<<<
 *         except BaseException as ex:
 *             IF DEBUG:
 */
        __pyx_t_10 = __pyx_f_6uvloop_4loop_6Handle__run(__pyx_v_poll->writing_handle); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 198, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "uvloop/handles/poll.pyx":195
 *             poll.writing_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_write_events_total += 1
 */
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L37_try_end;
      __pyx_L30_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "uvloop/handles/poll.pyx":199
 *                 poll._loop._poll_write_events_total += 1
 *             poll.writing_handle._run()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_write_cb_errors_total += 1
 */
      __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_12) {
        __Pyx_AddTraceback("uvloop.loop.__on_uvpoll_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_2) < 0) __PYX_ERR(13, 199, __pyx_L32_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_9);
        __pyx_v_ex = __pyx_t_9;
        /*try:*/ {

          /* "uvloop/handles/poll.pyx":202
 *             IF DEBUG:
 *                 poll._loop._poll_write_cb_errors_total += 1
 *             poll._error(ex, False)             # <<<<<<<<<<<<<<
 */
          __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVPoll *)__pyx_v_poll->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_poll), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 202, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }

        /* "uvloop/handles/poll.pyx":199
 *                 poll._loop._poll_write_events_total += 1
 *             poll.writing_handle._run()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_write_cb_errors_total += 1
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L44;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L43_error:;
            __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_14);
            __pyx_t_12 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_16);
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_XGIVEREF(__pyx_t_14);
              __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
            }
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ErrRestore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0;
            __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_20;
            goto __pyx_L32_except_error;
          }
          __pyx_L44:;
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L31_exception_handled;
      }
      goto __pyx_L32_except_error;
      __pyx_L32_except_error:;

      /* "uvloop/handles/poll.pyx":195
 *             poll.writing_handle is not None):
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 poll._loop._poll_write_events_total += 1
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L31_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      __pyx_L37_try_end:;
    }

    /* "uvloop/handles/poll.pyx":192
 *             # continue code execution
 * 
 *     if ((events & (uv.UV_WRITABLE | uv.UV_DISCONNECT)) and             # <<<<<<<<<<<<<<
 *             poll.writing_handle is not None):
 * 
 */
  }

  /* "uvloop/handles/poll.pyx":165
 * 
 * 
 * cdef void __on_uvpoll_event(uv.uv_poll_t* handle,             # <<<<<<<<<<<<<<
 *                             int status, int events) with gil:
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_WriteUnraisable("uvloop.loop.__on_uvpoll_event", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_poll);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/basetransport.pyx":4
 * cdef class UVBaseTransport(UVSocketHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         # Flow control
 *         self._high_water = FLOW_CONTROL_HIGH_WATER
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_15UVBaseTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_15UVBaseTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport___cinit__(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_15UVBaseTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/basetransport.pyx":6
 *     def __cinit__(self):
 *         # Flow control
 *         self._high_water = FLOW_CONTROL_HIGH_WATER             # <<<<<<<<<<<<<<
 *         self._low_water = FLOW_CONTROL_LOW_WATER
 * 
 */
  __pyx_v_self->_high_water = 0x10000;

  /* "uvloop/handles/basetransport.pyx":7
 *         # Flow control
 *         self._high_water = FLOW_CONTROL_HIGH_WATER
 *         self._low_water = FLOW_CONTROL_LOW_WATER             # <<<<<<<<<<<<<<
 * 
 *         self._protocol = None
 */
  __pyx_v_self->_low_water = 0x4000;

  /* "uvloop/handles/basetransport.pyx":9
 *         self._low_water = FLOW_CONTROL_LOW_WATER
 * 
 *         self._protocol = None             # <<<<<<<<<<<<<<
 *         self._protocol_connected = 0
 *         self._protocol_paused = 0
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_protocol);
  __Pyx_DECREF(__pyx_v_self->_protocol);
  __pyx_v_self->_protocol = Py_None;

  /* "uvloop/handles/basetransport.pyx":10
 * 
 *         self._protocol = None
 *         self._protocol_connected = 0             # <<<<<<<<<<<<<<
 *         self._protocol_paused = 0
 *         self._protocol_data_received = None
 */
  __pyx_v_self->_protocol_connected = 0;

  /* "uvloop/handles/basetransport.pyx":11
 *         self._protocol = None
 *         self._protocol_connected = 0
 *         self._protocol_paused = 0             # <<<<<<<<<<<<<<
 *         self._protocol_data_received = None
 * 
 */
  __pyx_v_self->_protocol_paused = 0;

  /* "uvloop/handles/basetransport.pyx":12
 *         self._protocol_connected = 0
 *         self._protocol_paused = 0
 *         self._protocol_data_received = None             # <<<<<<<<<<<<<<
 * 
 *         self._server = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_protocol_data_received);
  __Pyx_DECREF(__pyx_v_self->_protocol_data_received);
  __pyx_v_self->_protocol_data_received = Py_None;

  /* "uvloop/handles/basetransport.pyx":14
 *         self._protocol_data_received = None
 * 
 *         self._server = None             # <<<<<<<<<<<<<<
 *         self._waiter = None
 *         self._extra_info = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
  __pyx_v_self->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None);

  /* "uvloop/handles/basetransport.pyx":15
 * 
 *         self._server = None
 *         self._waiter = None             # <<<<<<<<<<<<<<
 *         self._extra_info = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_waiter);
  __Pyx_DECREF(__pyx_v_self->_waiter);
  __pyx_v_self->_waiter = Py_None;

  /* "uvloop/handles/basetransport.pyx":16
 *         self._server = None
 *         self._waiter = None
 *         self._extra_info = None             # <<<<<<<<<<<<<<
 * 
 *         self._conn_lost = 0
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_extra_info);
  __Pyx_DECREF(__pyx_v_self->_extra_info);
  __pyx_v_self->_extra_info = ((PyObject*)Py_None);

  /* "uvloop/handles/basetransport.pyx":18
 *         self._extra_info = None
 * 
 *         self._conn_lost = 0             # <<<<<<<<<<<<<<
 * 
 *         self._closing = 0
 */
  __pyx_v_self->_conn_lost = 0;

  /* "uvloop/handles/basetransport.pyx":20
 *         self._conn_lost = 0
 * 
 *         self._closing = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef size_t _get_write_buffer_size(self):
 */
  __pyx_v_self->_closing = 0;

  /* "uvloop/handles/basetransport.pyx":4
 * cdef class UVBaseTransport(UVSocketHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         # Flow control
 *         self._high_water = FLOW_CONTROL_HIGH_WATER
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":22
 *         self._closing = 0
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */

static size_t __pyx_f_6uvloop_4loop_15UVBaseTransport__get_write_buffer_size(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_get_write_buffer_size", 0);

  /* "uvloop/handles/basetransport.pyx":23
 * 
 *     cdef size_t _get_write_buffer_size(self):
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _schedule_call_connection_made(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":22
 *         self._closing = 0
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":25
 *         return 0
 * 
 *     cdef inline _schedule_call_connection_made(self):             # <<<<<<<<<<<<<<
 *         self._loop._call_soon_handle(
 *             new_MethodHandle(self._loop,
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_made(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_schedule_call_connection_made", 0);

  /* "uvloop/handles/basetransport.pyx":27
 *     cdef inline _schedule_call_connection_made(self):
 *         self._loop._call_soon_handle(
 *             new_MethodHandle(self._loop,             # <<<<<<<<<<<<<<
 *                              "UVTransport._call_connection_made",
 *                              <method_t*>&self._call_connection_made,
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_1);

  /* "uvloop/handles/basetransport.pyx":30
 *                              "UVTransport._call_connection_made",
 *                              <method_t*>&self._call_connection_made,
 *                              self))             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _schedule_call_connection_lost(self, exc):
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_new_MethodHandle(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_kp_u_UVTransport__call_connection_mad, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_call_connection_made)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":27
 *     cdef inline _schedule_call_connection_made(self):
 *         self._loop._call_soon_handle(
 *             new_MethodHandle(self._loop,             # <<<<<<<<<<<<<<
 *                              "UVTransport._call_connection_made",
 *                              <method_t*>&self._call_connection_made,
 */
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(4, 27, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":26
 * 
 *     cdef inline _schedule_call_connection_made(self):
 *         self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *             new_MethodHandle(self._loop,
 *                              "UVTransport._call_connection_made",
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self->__pyx_base.__pyx_base._loop, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":25
 *         return 0
 * 
 *     cdef inline _schedule_call_connection_made(self):             # <<<<<<<<<<<<<<
 *         self._loop._call_soon_handle(
 *             new_MethodHandle(self._loop,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._schedule_call_connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":32
 *                              self))
 * 
 *     cdef inline _schedule_call_connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self._loop._call_soon_handle(
 *             new_MethodHandle1(self._loop,
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_schedule_call_connection_lost", 0);

  /* "uvloop/handles/basetransport.pyx":34
 *     cdef inline _schedule_call_connection_lost(self, exc):
 *         self._loop._call_soon_handle(
 *             new_MethodHandle1(self._loop,             # <<<<<<<<<<<<<<
 *                               "UVTransport._call_connection_lost",
 *                               <method1_t*>&self._call_connection_lost,
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_1);

  /* "uvloop/handles/basetransport.pyx":37
 *                               "UVTransport._call_connection_lost",
 *                               <method1_t*>&self._call_connection_lost,
 *                               self, exc))             # <<<<<<<<<<<<<<
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_new_MethodHandle1(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_kp_u_UVTransport__call_connection_los, ((__pyx_t_6uvloop_4loop_method1_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_call_connection_lost)), ((PyObject *)__pyx_v_self), __pyx_v_exc); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":34
 *     cdef inline _schedule_call_connection_lost(self, exc):
 *         self._loop._call_soon_handle(
 *             new_MethodHandle1(self._loop,             # <<<<<<<<<<<<<<
 *                               "UVTransport._call_connection_lost",
 *                               <method1_t*>&self._call_connection_lost,
 */
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(4, 34, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":33
 * 
 *     cdef inline _schedule_call_connection_lost(self, exc):
 *         self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *             new_MethodHandle1(self._loop,
 *                               "UVTransport._call_connection_lost",
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self->__pyx_base.__pyx_base._loop, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":32
 *                              self))
 * 
 *     cdef inline _schedule_call_connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self._loop._call_soon_handle(
 *             new_MethodHandle1(self._loop,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._schedule_call_connection_lost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":39
 *                               self, exc))
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Overload UVHandle._fatal_error
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__fatal_error(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__fatal_error *__pyx_optional_args) {
  PyObject *__pyx_v_reason = ((PyObject *)Py_None);
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  __Pyx_RefNannySetupContext("_fatal_error", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_reason = __pyx_optional_args->reason;
    }
  }

  /* "uvloop/handles/basetransport.pyx":42
 *         # Overload UVHandle._fatal_error
 * 
 *         self._force_close(exc)             # <<<<<<<<<<<<<<
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_force_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_exc);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":44
 *         self._force_close(exc)
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __Pyx_INCREF(__pyx_builtin_BrokenPipeError);
  __pyx_t_1 = __pyx_builtin_BrokenPipeError;

  /* "uvloop/handles/basetransport.pyx":45
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,             # <<<<<<<<<<<<<<
 *                                 ConnectionAbortedError)):
 * 
 */
  __Pyx_INCREF(__pyx_builtin_ConnectionResetError);
  __pyx_t_2 = __pyx_builtin_ConnectionResetError;

  /* "uvloop/handles/basetransport.pyx":46
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):             # <<<<<<<<<<<<<<
 * 
 *             if throw or self._loop is None:
 */
  __Pyx_INCREF(__pyx_builtin_ConnectionAbortedError);
  __pyx_t_4 = __pyx_builtin_ConnectionAbortedError;

  /* "uvloop/handles/basetransport.pyx":44
 *         self._force_close(exc)
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_1); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }

  /* "uvloop/handles/basetransport.pyx":45
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,             # <<<<<<<<<<<<<<
 *                                 ConnectionAbortedError)):
 * 
 */
  __pyx_t_7 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_2); 
  __pyx_t_6 = (__pyx_t_7 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }

  /* "uvloop/handles/basetransport.pyx":46
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):             # <<<<<<<<<<<<<<
 * 
 *             if throw or self._loop is None:
 */
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_4); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":44
 *         self._force_close(exc)
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __pyx_t_7 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_7) {

    /* "uvloop/handles/basetransport.pyx":48
 *                                 ConnectionAbortedError)):
 * 
 *             if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_throw); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(4, 48, __pyx_L1_error)
    if (!__pyx_t_5) {
    } else {
      __pyx_t_7 = __pyx_t_5;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop) == Py_None);
    __pyx_t_6 = (__pyx_t_5 != 0);
    __pyx_t_7 = __pyx_t_6;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_7) {

      /* "uvloop/handles/basetransport.pyx":49
 * 
 *             if throw or self._loop is None:
 *                 raise exc             # <<<<<<<<<<<<<<
 * 
 *             msg = 'Fatal error on transport {}'.format(
 */
      __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
      __PYX_ERR(4, 49, __pyx_L1_error)

      /* "uvloop/handles/basetransport.pyx":48
 *                                 ConnectionAbortedError)):
 * 
 *             if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 * 
 */
    }

    /* "uvloop/handles/basetransport.pyx":51
 *                 raise exc
 * 
 *             msg = 'Fatal error on transport {}'.format(             # <<<<<<<<<<<<<<
 *                     self.__class__.__name__)
 *             if reason is not None:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Fatal_error_on_transport, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/handles/basetransport.pyx":52
 * 
 *             msg = 'Fatal error on transport {}'.format(
 *                     self.__class__.__name__)             # <<<<<<<<<<<<<<
 *             if reason is not None:
 *                 msg = '{} ({})'.format(msg, reason)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 51, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_msg = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/basetransport.pyx":53
 *             msg = 'Fatal error on transport {}'.format(
 *                     self.__class__.__name__)
 *             if reason is not None:             # <<<<<<<<<<<<<<
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 */
    __pyx_t_7 = (__pyx_v_reason != Py_None);
    __pyx_t_6 = (__pyx_t_7 != 0);
    if (__pyx_t_6) {

      /* "uvloop/handles/basetransport.pyx":54
 *                     self.__class__.__name__)
 *             if reason is not None:
 *                 msg = '{} ({})'.format(msg, reason)             # <<<<<<<<<<<<<<
 * 
 *             self._loop.call_exception_handler({
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__85, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_3 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(__pyx_v_msg);
      __Pyx_GIVEREF(__pyx_v_msg);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_v_msg);
      __Pyx_INCREF(__pyx_v_reason);
      __Pyx_GIVEREF(__pyx_v_reason);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_v_reason);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/basetransport.pyx":53
 *             msg = 'Fatal error on transport {}'.format(
 *                     self.__class__.__name__)
 *             if reason is not None:             # <<<<<<<<<<<<<<
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 */
    }

    /* "uvloop/handles/basetransport.pyx":56
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 *             self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                 'message': msg,
 *                 'exception': exc,
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/handles/basetransport.pyx":57
 * 
 *             self._loop.call_exception_handler({
 *                 'message': msg,             # <<<<<<<<<<<<<<
 *                 'exception': exc,
 *                 'transport': self,
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_message, __pyx_v_msg) < 0) __PYX_ERR(4, 57, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":58
 *             self._loop.call_exception_handler({
 *                 'message': msg,
 *                 'exception': exc,             # <<<<<<<<<<<<<<
 *                 'transport': self,
 *                 'protocol': self._protocol,
 */
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(4, 57, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":59
 *                 'message': msg,
 *                 'exception': exc,
 *                 'transport': self,             # <<<<<<<<<<<<<<
 *                 'protocol': self._protocol,
 *             })
 */
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_transport, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(4, 57, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":60
 *                 'exception': exc,
 *                 'transport': self,
 *                 'protocol': self._protocol,             # <<<<<<<<<<<<<<
 *             })
 * 
 */
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_protocol, __pyx_v_self->_protocol) < 0) __PYX_ERR(4, 57, __pyx_L1_error)
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 56, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 56, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 56, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/basetransport.pyx":44
 *         self._force_close(exc)
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  }

  /* "uvloop/handles/basetransport.pyx":39
 *                               self, exc))
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Overload UVHandle._fatal_error
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":63
 *             })
 * 
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):             # <<<<<<<<<<<<<<
 *         if high == -1:
 *             if low == -1:
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits *__pyx_optional_args) {
  int __pyx_v_high = ((int)-1);
  int __pyx_v_low = ((int)-1);
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_set_write_buffer_limits", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_high = __pyx_optional_args->high;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_low = __pyx_optional_args->low;
      }
    }
  }

  /* "uvloop/handles/basetransport.pyx":64
 * 
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):
 *         if high == -1:             # <<<<<<<<<<<<<<
 *             if low == -1:
 *                 high = FLOW_CONTROL_HIGH_WATER
 */
  __pyx_t_1 = ((__pyx_v_high == -1L) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":65
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):
 *         if high == -1:
 *             if low == -1:             # <<<<<<<<<<<<<<
 *                 high = FLOW_CONTROL_HIGH_WATER
 *             else:
 */
    __pyx_t_1 = ((__pyx_v_low == -1L) != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/basetransport.pyx":66
 *         if high == -1:
 *             if low == -1:
 *                 high = FLOW_CONTROL_HIGH_WATER             # <<<<<<<<<<<<<<
 *             else:
 *                 high = FLOW_CONTROL_LOW_WATER
 */
      __pyx_v_high = 0x10000;

      /* "uvloop/handles/basetransport.pyx":65
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):
 *         if high == -1:
 *             if low == -1:             # <<<<<<<<<<<<<<
 *                 high = FLOW_CONTROL_HIGH_WATER
 *             else:
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/basetransport.pyx":68
 *                 high = FLOW_CONTROL_HIGH_WATER
 *             else:
 *                 high = FLOW_CONTROL_LOW_WATER             # <<<<<<<<<<<<<<
 * 
 *         if low == -1:
 */
    /*else*/ {
      __pyx_v_high = 0x4000;
    }
    __pyx_L4:;

    /* "uvloop/handles/basetransport.pyx":64
 * 
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):
 *         if high == -1:             # <<<<<<<<<<<<<<
 *             if low == -1:
 *                 high = FLOW_CONTROL_HIGH_WATER
 */
  }

  /* "uvloop/handles/basetransport.pyx":70
 *                 high = FLOW_CONTROL_LOW_WATER
 * 
 *         if low == -1:             # <<<<<<<<<<<<<<
 *             low = high // 4
 * 
 */
  __pyx_t_1 = ((__pyx_v_low == -1L) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":71
 * 
 *         if low == -1:
 *             low = high // 4             # <<<<<<<<<<<<<<
 * 
 *         if not high >= low >= 0:
 */
    __pyx_v_low = __Pyx_div_long(__pyx_v_high, 4);

    /* "uvloop/handles/basetransport.pyx":70
 *                 high = FLOW_CONTROL_LOW_WATER
 * 
 *         if low == -1:             # <<<<<<<<<<<<<<
 *             low = high // 4
 * 
 */
  }

  /* "uvloop/handles/basetransport.pyx":73
 *             low = high // 4
 * 
 *         if not high >= low >= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('high (%r) must be >= low (%r) must be >= 0' %
 *                              (high, low))
 */
  __pyx_t_1 = (__pyx_v_high >= __pyx_v_low);
  if (__pyx_t_1) {
    __pyx_t_1 = (__pyx_v_low >= 0);
  }
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":75
 *         if not high >= low >= 0:
 *             raise ValueError('high (%r) must be >= low (%r) must be >= 0' %
 *                              (high, low))             # <<<<<<<<<<<<<<
 * 
 *         self._high_water = high
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_high); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_low); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;

    /* "uvloop/handles/basetransport.pyx":74
 * 
 *         if not high >= low >= 0:
 *             raise ValueError('high (%r) must be >= low (%r) must be >= 0' %             # <<<<<<<<<<<<<<
 *                              (high, low))
 * 
 */
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_high_r_must_be_low_r_must_be_0, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(4, 74, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":73
 *             low = high // 4
 * 
 *         if not high >= low >= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('high (%r) must be >= low (%r) must be >= 0' %
 *                              (high, low))
 */
  }

  /* "uvloop/handles/basetransport.pyx":77
 *                              (high, low))
 * 
 *         self._high_water = high             # <<<<<<<<<<<<<<
 *         self._low_water = low
 * 
 */
  __pyx_v_self->_high_water = __pyx_v_high;

  /* "uvloop/handles/basetransport.pyx":78
 * 
 *         self._high_water = high
 *         self._low_water = low             # <<<<<<<<<<<<<<
 * 
 *         self._maybe_pause_protocol()
 */
  __pyx_v_self->_low_water = __pyx_v_low;

  /* "uvloop/handles/basetransport.pyx":80
 *         self._low_water = low
 * 
 *         self._maybe_pause_protocol()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _maybe_pause_protocol(self):
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_pause_protocol(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/handles/basetransport.pyx":63
 *             })
 * 
 *     cdef inline _set_write_buffer_limits(self, int high=-1, int low=-1):             # <<<<<<<<<<<<<<
 *         if high == -1:
 *             if low == -1:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._set_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":82
 *         self._maybe_pause_protocol()
 * 
 *     cdef inline _maybe_pause_protocol(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             size_t size = self._get_write_buffer_size()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_pause_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  size_t __pyx_v_size;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  __Pyx_RefNannySetupContext("_maybe_pause_protocol", 0);

  /* "uvloop/handles/basetransport.pyx":84
 *     cdef inline _maybe_pause_protocol(self):
 *         cdef:
 *             size_t size = self._get_write_buffer_size()             # <<<<<<<<<<<<<<
 * 
 *         if size <= self._high_water:
 */
  __pyx_v_size = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_get_write_buffer_size(__pyx_v_self);

  /* "uvloop/handles/basetransport.pyx":86
 *             size_t size = self._get_write_buffer_size()
 * 
 *         if size <= self._high_water:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_size <= __pyx_v_self->_high_water) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":87
 * 
 *         if size <= self._high_water:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if not self._protocol_paused:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":86
 *             size_t size = self._get_write_buffer_size()
 * 
 *         if size <= self._high_water:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/basetransport.pyx":89
 *             return
 * 
 *         if not self._protocol_paused:             # <<<<<<<<<<<<<<
 *             self._protocol_paused = 1
 *             try:
 */
  __pyx_t_1 = ((!(__pyx_v_self->_protocol_paused != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":90
 * 
 *         if not self._protocol_paused:
 *             self._protocol_paused = 1             # <<<<<<<<<<<<<<
 *             try:
 *                 self._protocol.pause_writing()
 */
    __pyx_v_self->_protocol_paused = 1;

    /* "uvloop/handles/basetransport.pyx":91
 *         if not self._protocol_paused:
 *             self._protocol_paused = 1
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.pause_writing()
 *             except Exception as exc:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "uvloop/handles/basetransport.pyx":92
 *             self._protocol_paused = 1
 *             try:
 *                 self._protocol.pause_writing()             # <<<<<<<<<<<<<<
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({
 */
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_pause_writing); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 92, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 92, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 92, __pyx_L5_error)
        }
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "uvloop/handles/basetransport.pyx":91
 *         if not self._protocol_paused:
 *             self._protocol_paused = 1
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.pause_writing()
 *             except Exception as exc:
 */
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/handles/basetransport.pyx":93
 *             try:
 *                 self._protocol.pause_writing()
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.pause_writing() failed',
 */
      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_8) {
        __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._maybe_pause_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(4, 93, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_exc = __pyx_t_6;
        /*try:*/ {

          /* "uvloop/handles/basetransport.pyx":94
 *                 self._protocol.pause_writing()
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                     'message': 'protocol.pause_writing() failed',
 *                     'exception': exc,
 */
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 94, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_10);

          /* "uvloop/handles/basetransport.pyx":95
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.pause_writing() failed',             # <<<<<<<<<<<<<<
 *                     'exception': exc,
 *                     'transport': self,
 */
          __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 95, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_11);
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_message, __pyx_kp_u_protocol_pause_writing_failed) < 0) __PYX_ERR(4, 95, __pyx_L18_error)

          /* "uvloop/handles/basetransport.pyx":96
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.pause_writing() failed',
 *                     'exception': exc,             # <<<<<<<<<<<<<<
 *                     'transport': self,
 *                     'protocol': self._protocol,
 */
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(4, 95, __pyx_L18_error)

          /* "uvloop/handles/basetransport.pyx":97
 *                     'message': 'protocol.pause_writing() failed',
 *                     'exception': exc,
 *                     'transport': self,             # <<<<<<<<<<<<<<
 *                     'protocol': self._protocol,
 *                 })
 */
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_transport, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(4, 95, __pyx_L18_error)

          /* "uvloop/handles/basetransport.pyx":98
 *                     'exception': exc,
 *                     'transport': self,
 *                     'protocol': self._protocol,             # <<<<<<<<<<<<<<
 *                 })
 * 
 */
          if (PyDict_SetItem(__pyx_t_11, __pyx_n_u_protocol, __pyx_v_self->_protocol) < 0) __PYX_ERR(4, 95, __pyx_L18_error)
          __pyx_t_12 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
            __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10);
            if (likely(__pyx_t_12)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_12);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_10, function);
            }
          }
          if (!__pyx_t_12) {
            __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 94, __pyx_L18_error)
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_GOTREF(__pyx_t_9);
          } else {
            __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 94, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
            __Pyx_GIVEREF(__pyx_t_11);
            PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_11);
            __pyx_t_11 = 0;
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 94, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }

        /* "uvloop/handles/basetransport.pyx":93
 *             try:
 *                 self._protocol.pause_writing()
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.pause_writing() failed',
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
            goto __pyx_L19;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L18_error:;
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_8 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_exc);
              __pyx_v_exc = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L7_except_error;
          }
          __pyx_L19:;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L6_exception_handled;
      }
      goto __pyx_L7_except_error;
      __pyx_L7_except_error:;

      /* "uvloop/handles/basetransport.pyx":91
 *         if not self._protocol_paused:
 *             self._protocol_paused = 1
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.pause_writing()
 *             except Exception as exc:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L12_try_end:;
    }

    /* "uvloop/handles/basetransport.pyx":89
 *             return
 * 
 *         if not self._protocol_paused:             # <<<<<<<<<<<<<<
 *             self._protocol_paused = 1
 *             try:
 */
  }

  /* "uvloop/handles/basetransport.pyx":82
 *         self._maybe_pause_protocol()
 * 
 *     cdef inline _maybe_pause_protocol(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             size_t size = self._get_write_buffer_size()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._maybe_pause_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":101
 *                 })
 * 
 *     cdef inline _maybe_resume_protocol(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             size_t size = self._get_write_buffer_size()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_resume_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  size_t __pyx_v_size;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  __Pyx_RefNannySetupContext("_maybe_resume_protocol", 0);

  /* "uvloop/handles/basetransport.pyx":103
 *     cdef inline _maybe_resume_protocol(self):
 *         cdef:
 *             size_t size = self._get_write_buffer_size()             # <<<<<<<<<<<<<<
 * 
 *         if self._protocol_paused and size <= self._low_water:
 */
  __pyx_v_size = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_get_write_buffer_size(__pyx_v_self);

  /* "uvloop/handles/basetransport.pyx":105
 *             size_t size = self._get_write_buffer_size()
 * 
 *         if self._protocol_paused and size <= self._low_water:             # <<<<<<<<<<<<<<
 *             self._protocol_paused = 0
 *             try:
 */
  __pyx_t_2 = (__pyx_v_self->_protocol_paused != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = ((__pyx_v_size <= __pyx_v_self->_low_water) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":106
 * 
 *         if self._protocol_paused and size <= self._low_water:
 *             self._protocol_paused = 0             # <<<<<<<<<<<<<<
 *             try:
 *                 self._protocol.resume_writing()
 */
    __pyx_v_self->_protocol_paused = 0;

    /* "uvloop/handles/basetransport.pyx":107
 *         if self._protocol_paused and size <= self._low_water:
 *             self._protocol_paused = 0
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.resume_writing()
 *             except Exception as exc:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/handles/basetransport.pyx":108
 *             self._protocol_paused = 0
 *             try:
 *                 self._protocol.resume_writing()             # <<<<<<<<<<<<<<
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_resume_writing); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 108, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 108, __pyx_L6_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        } else {
          __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 108, __pyx_L6_error)
        }
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "uvloop/handles/basetransport.pyx":107
 *         if self._protocol_paused and size <= self._low_water:
 *             self._protocol_paused = 0
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.resume_writing()
 *             except Exception as exc:
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/basetransport.pyx":109
 *             try:
 *                 self._protocol.resume_writing()
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.resume_writing() failed',
 */
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_9) {
        __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._maybe_resume_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(4, 109, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_exc = __pyx_t_7;
        /*try:*/ {

          /* "uvloop/handles/basetransport.pyx":110
 *                 self._protocol.resume_writing()
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                     'message': 'protocol.resume_writing() failed',
 *                     'exception': exc,
 */
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 110, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_11);

          /* "uvloop/handles/basetransport.pyx":111
 *             except Exception as exc:
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.resume_writing() failed',             # <<<<<<<<<<<<<<
 *                     'exception': exc,
 *                     'transport': self,
 */
          __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 111, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_12);
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_message, __pyx_kp_u_protocol_resume_writing_failed) < 0) __PYX_ERR(4, 111, __pyx_L19_error)

          /* "uvloop/handles/basetransport.pyx":112
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.resume_writing() failed',
 *                     'exception': exc,             # <<<<<<<<<<<<<<
 *                     'transport': self,
 *                     'protocol': self._protocol,
 */
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(4, 111, __pyx_L19_error)

          /* "uvloop/handles/basetransport.pyx":113
 *                     'message': 'protocol.resume_writing() failed',
 *                     'exception': exc,
 *                     'transport': self,             # <<<<<<<<<<<<<<
 *                     'protocol': self._protocol,
 *                 })
 */
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_transport, ((PyObject *)__pyx_v_self)) < 0) __PYX_ERR(4, 111, __pyx_L19_error)

          /* "uvloop/handles/basetransport.pyx":114
 *                     'exception': exc,
 *                     'transport': self,
 *                     'protocol': self._protocol,             # <<<<<<<<<<<<<<
 *                 })
 * 
 */
          if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_protocol, __pyx_v_self->_protocol) < 0) __PYX_ERR(4, 111, __pyx_L19_error)
          __pyx_t_13 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          if (!__pyx_t_13) {
            __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 110, __pyx_L19_error)
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else {
            __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 110, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_GIVEREF(__pyx_t_12);
            PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_12);
            __pyx_t_12 = 0;
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 110, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }

        /* "uvloop/handles/basetransport.pyx":109
 *             try:
 *                 self._protocol.resume_writing()
 *             except Exception as exc:             # <<<<<<<<<<<<<<
 *                 self._loop.call_exception_handler({
 *                     'message': 'protocol.resume_writing() failed',
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
            goto __pyx_L20;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L19_error:;
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_9 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_exc);
              __pyx_v_exc = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "uvloop/handles/basetransport.pyx":107
 *         if self._protocol_paused and size <= self._low_water:
 *             self._protocol_paused = 0
 *             try:             # <<<<<<<<<<<<<<
 *                 self._protocol.resume_writing()
 *             except Exception as exc:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L13_try_end:;
    }

    /* "uvloop/handles/basetransport.pyx":105
 *             size_t size = self._get_write_buffer_size()
 * 
 *         if self._protocol_paused and size <= self._low_water:             # <<<<<<<<<<<<<<
 *             self._protocol_paused = 0
 *             try:
 */
  }

  /* "uvloop/handles/basetransport.pyx":101
 *                 })
 * 
 *     cdef inline _maybe_resume_protocol(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             size_t size = self._get_write_buffer_size()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._maybe_resume_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":117
 *                 })
 * 
 *     cdef _call_connection_made(self):             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:
 */

static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  Py_ssize_t __pyx_v__loop_ready_len;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_call_connection_made", 0);

  /* "uvloop/handles/basetransport.pyx":119
 *     cdef _call_connection_made(self):
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'protocol is not set, cannot call connection_made()')
 */
  __pyx_t_1 = (__pyx_v_self->_protocol == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":120
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'protocol is not set, cannot call connection_made()')
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 120, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":119
 *     cdef _call_connection_made(self):
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'protocol is not set, cannot call connection_made()')
 */
  }

  /* "uvloop/handles/basetransport.pyx":123
 *                 'protocol is not set, cannot call connection_made()')
 * 
 *         _loop_ready_len = self._loop._ready_len             # <<<<<<<<<<<<<<
 *         self._protocol.connection_made(self)
 *         self._protocol_connected = 1
 */
  __pyx_t_4 = __pyx_v_self->__pyx_base.__pyx_base._loop->_ready_len;
  __pyx_v__loop_ready_len = __pyx_t_4;

  /* "uvloop/handles/basetransport.pyx":124
 * 
 *         _loop_ready_len = self._loop._ready_len
 *         self._protocol.connection_made(self)             # <<<<<<<<<<<<<<
 *         self._protocol_connected = 1
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_connection_made); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/basetransport.pyx":125
 *         _loop_ready_len = self._loop._ready_len
 *         self._protocol.connection_made(self)
 *         self._protocol_connected = 1             # <<<<<<<<<<<<<<
 * 
 *         if _loop_ready_len == self._loop._ready_len:
 */
  __pyx_v_self->_protocol_connected = 1;

  /* "uvloop/handles/basetransport.pyx":127
 *         self._protocol_connected = 1
 * 
 *         if _loop_ready_len == self._loop._ready_len:             # <<<<<<<<<<<<<<
 *             # No new calls were scheduled by 'protocol.connection_made',
 *             # so it's safe to start reading right now.
 */
  __pyx_t_2 = ((__pyx_v__loop_ready_len == __pyx_v_self->__pyx_base.__pyx_base._loop->_ready_len) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":130
 *             # No new calls were scheduled by 'protocol.connection_made',
 *             # so it's safe to start reading right now.
 *             self._start_reading()             # <<<<<<<<<<<<<<
 *         else:
 *             # In asyncio we'd just call start_reading() right after we
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_start_reading(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":127
 *         self._protocol_connected = 1
 * 
 *         if _loop_ready_len == self._loop._ready_len:             # <<<<<<<<<<<<<<
 *             # No new calls were scheduled by 'protocol.connection_made',
 *             # so it's safe to start reading right now.
 */
    goto __pyx_L4;
  }

  /* "uvloop/handles/basetransport.pyx":139
 *             # calls the handlers that connection_made set up.
 *             # That's why we're using another call_soon here.
 *             self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *                 new_MethodHandle(self._loop,
 *                                  "UVTransport._start_reading",
 */
  /*else*/ {

    /* "uvloop/handles/basetransport.pyx":140
 *             # That's why we're using another call_soon here.
 *             self._loop._call_soon_handle(
 *                 new_MethodHandle(self._loop,             # <<<<<<<<<<<<<<
 *                                  "UVTransport._start_reading",
 *                                  <method_t*>&self._start_reading,
 */
    __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
    __Pyx_INCREF(__pyx_t_3);

    /* "uvloop/handles/basetransport.pyx":143
 *                                  "UVTransport._start_reading",
 *                                  <method_t*>&self._start_reading,
 *                                  self))             # <<<<<<<<<<<<<<
 * 
 *         if self._waiter is not None:
 */
    __pyx_t_5 = __pyx_f_6uvloop_4loop_new_MethodHandle(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_3), __pyx_kp_u_UVTransport__start_reading, ((__pyx_t_6uvloop_4loop_method_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_start_reading)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":140
 *             # That's why we're using another call_soon here.
 *             self._loop._call_soon_handle(
 *                 new_MethodHandle(self._loop,             # <<<<<<<<<<<<<<
 *                                  "UVTransport._start_reading",
 *                                  <method_t*>&self._start_reading,
 */
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(4, 140, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":139
 *             # calls the handlers that connection_made set up.
 *             # That's why we're using another call_soon here.
 *             self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *                 new_MethodHandle(self._loop,
 *                                  "UVTransport._start_reading",
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self->__pyx_base.__pyx_base._loop, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "uvloop/handles/basetransport.pyx":145
 *                                  self))
 * 
 *         if self._waiter is not None:             # <<<<<<<<<<<<<<
 *             if not self._waiter.cancelled():
 *                 self._waiter.set_result(True)
 */
  __pyx_t_2 = (__pyx_v_self->_waiter != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":146
 * 
 *         if self._waiter is not None:
 *             if not self._waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 self._waiter.set_result(True)
 *             self._waiter = None
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 146, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 146, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 146, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = ((!__pyx_t_1) != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/basetransport.pyx":147
 *         if self._waiter is not None:
 *             if not self._waiter.cancelled():
 *                 self._waiter.set_result(True)             # <<<<<<<<<<<<<<
 *             self._waiter = None
 * 
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 147, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 147, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/handles/basetransport.pyx":146
 * 
 *         if self._waiter is not None:
 *             if not self._waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 self._waiter.set_result(True)
 *             self._waiter = None
 */
    }

    /* "uvloop/handles/basetransport.pyx":148
 *             if not self._waiter.cancelled():
 *                 self._waiter.set_result(True)
 *             self._waiter = None             # <<<<<<<<<<<<<<
 * 
 *     cdef _call_connection_lost(self, exc):
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_waiter);
    __Pyx_DECREF(__pyx_v_self->_waiter);
    __pyx_v_self->_waiter = Py_None;

    /* "uvloop/handles/basetransport.pyx":145
 *                                  self))
 * 
 *         if self._waiter is not None:             # <<<<<<<<<<<<<<
 *             if not self._waiter.cancelled():
 *                 self._waiter.set_result(True)
 */
  }

  /* "uvloop/handles/basetransport.pyx":117
 *                 })
 * 
 *     cdef _call_connection_made(self):             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._call_connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":150
 *             self._waiter = None
 * 
 *     cdef _call_connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         if self._waiter is not None:
 *             # This shouldn't ever happen!
 */

static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_lost(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc) {
  struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  __Pyx_RefNannySetupContext("_call_connection_lost", 0);

  /* "uvloop/handles/basetransport.pyx":151
 * 
 *     cdef _call_connection_lost(self, exc):
 *         if self._waiter is not None:             # <<<<<<<<<<<<<<
 *             # This shouldn't ever happen!
 *             self._loop.call_exception_handler({
 */
  __pyx_t_1 = (__pyx_v_self->_waiter != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":153
 *         if self._waiter is not None:
 *             # This shouldn't ever happen!
 *             self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                 'message': 'waiter is not None in {}._call_connection_lost'.
 *                     format(self.__class__.__name__)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "uvloop/handles/basetransport.pyx":154
 *             # This shouldn't ever happen!
 *             self._loop.call_exception_handler({
 *                 'message': 'waiter is not None in {}._call_connection_lost'.             # <<<<<<<<<<<<<<
 *                     format(self.__class__.__name__)
 *             })
 */
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "uvloop/handles/basetransport.pyx":155
 *             self._loop.call_exception_handler({
 *                 'message': 'waiter is not None in {}._call_connection_lost'.
 *                     format(self.__class__.__name__)             # <<<<<<<<<<<<<<
 *             })
 *             if not self._waiter.done():
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_waiter_is_not_None_in__call_conn, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 155, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 155, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 155, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_message, __pyx_t_6) < 0) __PYX_ERR(4, 154, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 153, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":157
 *                     format(self.__class__.__name__)
 *             })
 *             if not self._waiter.done():             # <<<<<<<<<<<<<<
 *                 self._waiter.set_exception(exc)
 *             self._waiter = None
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 157, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 157, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(4, 157, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = ((!__pyx_t_2) != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/basetransport.pyx":158
 *             })
 *             if not self._waiter.done():
 *                 self._waiter.set_exception(exc)             # <<<<<<<<<<<<<<
 *             self._waiter = None
 * 
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_waiter, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_v_exc);
        __Pyx_GIVEREF(__pyx_v_exc);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_exc);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/basetransport.pyx":157
 *                     format(self.__class__.__name__)
 *             })
 *             if not self._waiter.done():             # <<<<<<<<<<<<<<
 *                 self._waiter.set_exception(exc)
 *             self._waiter = None
 */
    }

    /* "uvloop/handles/basetransport.pyx":159
 *             if not self._waiter.done():
 *                 self._waiter.set_exception(exc)
 *             self._waiter = None             # <<<<<<<<<<<<<<
 * 
 *         if self._closed:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_waiter);
    __Pyx_DECREF(__pyx_v_self->_waiter);
    __pyx_v_self->_waiter = Py_None;

    /* "uvloop/handles/basetransport.pyx":151
 * 
 *     cdef _call_connection_lost(self, exc):
 *         if self._waiter is not None:             # <<<<<<<<<<<<<<
 *             # This shouldn't ever happen!
 *             self._loop.call_exception_handler({
 */
  }

  /* "uvloop/handles/basetransport.pyx":161
 *             self._waiter = None
 * 
 *         if self._closed:             # <<<<<<<<<<<<<<
 *             # The handle is closed -- likely, _call_connection_lost
 *             # was already called before.
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base._closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":164
 *             # The handle is closed -- likely, _call_connection_lost
 *             # was already called before.
 *             return             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":161
 *             self._waiter = None
 * 
 *         if self._closed:             # <<<<<<<<<<<<<<
 *             # The handle is closed -- likely, _call_connection_lost
 *             # was already called before.
 */
  }

  /* "uvloop/handles/basetransport.pyx":166
 *             return
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             if self._protocol_connected:
 *                 self._protocol.connection_lost(exc)
 */
  /*try:*/ {

    /* "uvloop/handles/basetransport.pyx":167
 * 
 *         try:
 *             if self._protocol_connected:             # <<<<<<<<<<<<<<
 *                 self._protocol.connection_lost(exc)
 *         finally:
 */
    __pyx_t_1 = (__pyx_v_self->_protocol_connected != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/basetransport.pyx":168
 *         try:
 *             if self._protocol_connected:
 *                 self._protocol.connection_lost(exc)             # <<<<<<<<<<<<<<
 *         finally:
 *             self._protocol = None
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_connection_lost); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 168, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 168, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 168, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_exc);
        __Pyx_GIVEREF(__pyx_v_exc);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_exc);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 168, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/basetransport.pyx":167
 * 
 *         try:
 *             if self._protocol_connected:             # <<<<<<<<<<<<<<
 *                 self._protocol.connection_lost(exc)
 *         finally:
 */
    }
  }

  /* "uvloop/handles/basetransport.pyx":170
 *                 self._protocol.connection_lost(exc)
 *         finally:
 *             self._protocol = None             # <<<<<<<<<<<<<<
 *             self._protocol_data_received = None
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_protocol);
      __Pyx_DECREF(__pyx_v_self->_protocol);
      __pyx_v_self->_protocol = Py_None;

      /* "uvloop/handles/basetransport.pyx":171
 *         finally:
 *             self._protocol = None
 *             self._protocol_data_received = None             # <<<<<<<<<<<<<<
 * 
 *             self._close()
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_protocol_data_received);
      __Pyx_DECREF(__pyx_v_self->_protocol_data_received);
      __pyx_v_self->_protocol_data_received = Py_None;

      /* "uvloop/handles/basetransport.pyx":173
 *             self._protocol_data_received = None
 * 
 *             self._close()             # <<<<<<<<<<<<<<
 * 
 *             server = self._server
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 173, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/basetransport.pyx":175
 *             self._close()
 * 
 *             server = self._server             # <<<<<<<<<<<<<<
 *             if server is not None:
 *                 (<Server>server)._detach()
 */
      __pyx_t_3 = ((PyObject *)__pyx_v_self->_server);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "uvloop/handles/basetransport.pyx":176
 * 
 *             server = self._server
 *             if server is not None:             # <<<<<<<<<<<<<<
 *                 (<Server>server)._detach()
 *                 self._server = None
 */
      __pyx_t_1 = (((PyObject *)__pyx_v_server) != Py_None);
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {

        /* "uvloop/handles/basetransport.pyx":177
 *             server = self._server
 *             if server is not None:
 *                 (<Server>server)._detach()             # <<<<<<<<<<<<<<
 *                 self._server = None
 * 
 */
        __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)->__pyx_vtab)->_detach(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "uvloop/handles/basetransport.pyx":178
 *             if server is not None:
 *                 (<Server>server)._detach()
 *                 self._server = None             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _set_server(self, Server server):
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_self->_server);
        __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
        __pyx_v_self->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None);

        /* "uvloop/handles/basetransport.pyx":176
 * 
 *             server = self._server
 *             if server is not None:             # <<<<<<<<<<<<<<
 *                 (<Server>server)._detach()
 *                 self._server = None
 */
      }
      goto __pyx_L8;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L7_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {

        /* "uvloop/handles/basetransport.pyx":170
 *                 self._protocol.connection_lost(exc)
 *         finally:
 *             self._protocol = None             # <<<<<<<<<<<<<<
 *             self._protocol_data_received = None
 * 
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_self->_protocol);
        __Pyx_DECREF(__pyx_v_self->_protocol);
        __pyx_v_self->_protocol = Py_None;

        /* "uvloop/handles/basetransport.pyx":171
 *         finally:
 *             self._protocol = None
 *             self._protocol_data_received = None             # <<<<<<<<<<<<<<
 * 
 *             self._close()
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_self->_protocol_data_received);
        __Pyx_DECREF(__pyx_v_self->_protocol_data_received);
        __pyx_v_self->_protocol_data_received = Py_None;

        /* "uvloop/handles/basetransport.pyx":173
 *             self._protocol_data_received = None
 * 
 *             self._close()             # <<<<<<<<<<<<<<
 * 
 *             server = self._server
 */
        __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 173, __pyx_L12_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "uvloop/handles/basetransport.pyx":175
 *             self._close()
 * 
 *             server = self._server             # <<<<<<<<<<<<<<
 *             if server is not None:
 *                 (<Server>server)._detach()
 */
        __pyx_t_3 = ((PyObject *)__pyx_v_self->_server);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_3);
        __pyx_t_3 = 0;

        /* "uvloop/handles/basetransport.pyx":176
 * 
 *             server = self._server
 *             if server is not None:             # <<<<<<<<<<<<<<
 *                 (<Server>server)._detach()
 *                 self._server = None
 */
        __pyx_t_2 = (((PyObject *)__pyx_v_server) != Py_None);
        __pyx_t_1 = (__pyx_t_2 != 0);
        if (__pyx_t_1) {

          /* "uvloop/handles/basetransport.pyx":177
 *             server = self._server
 *             if server is not None:
 *                 (<Server>server)._detach()             # <<<<<<<<<<<<<<
 *                 self._server = None
 * 
 */
          __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)->__pyx_vtab)->_detach(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 177, __pyx_L12_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "uvloop/handles/basetransport.pyx":178
 *             if server is not None:
 *                 (<Server>server)._detach()
 *                 self._server = None             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _set_server(self, Server server):
 */
          __Pyx_INCREF(Py_None);
          __Pyx_GIVEREF(Py_None);
          __Pyx_GOTREF(__pyx_v_self->_server);
          __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
          __pyx_v_self->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None);

          /* "uvloop/handles/basetransport.pyx":176
 * 
 *             server = self._server
 *             if server is not None:             # <<<<<<<<<<<<<<
 *                 (<Server>server)._detach()
 *                 self._server = None
 */
        }
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
      __pyx_L12_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L8:;
  }

  /* "uvloop/handles/basetransport.pyx":150
 *             self._waiter = None
 * 
 *     cdef _call_connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         if self._waiter is not None:
 *             # This shouldn't ever happen!
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._call_connection_lost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_server);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":180
 *                 self._server = None
 * 
 *     cdef inline _set_server(self, Server server):             # <<<<<<<<<<<<<<
 *         self._server = server
 *         (<Server>server)._attach()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_server(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set_server", 0);

  /* "uvloop/handles/basetransport.pyx":181
 * 
 *     cdef inline _set_server(self, Server server):
 *         self._server = server             # <<<<<<<<<<<<<<
 *         (<Server>server)._attach()
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_server));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_server));
  __Pyx_GOTREF(__pyx_v_self->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
  __pyx_v_self->_server = __pyx_v_server;

  /* "uvloop/handles/basetransport.pyx":182
 *     cdef inline _set_server(self, Server server):
 *         self._server = server
 *         (<Server>server)._attach()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _set_waiter(self, object waiter):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)->__pyx_vtab)->_attach(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_server)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":180
 *                 self._server = None
 * 
 *     cdef inline _set_server(self, Server server):             # <<<<<<<<<<<<<<
 *         self._server = server
 *         (<Server>server)._attach()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._set_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":184
 *         (<Server>server)._attach()
 * 
 *     cdef inline _set_waiter(self, object waiter):             # <<<<<<<<<<<<<<
 *         if waiter is not None and not isinstance(waiter, aio_Future):
 *             raise TypeError(
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_waiter(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_waiter) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_set_waiter", 0);

  /* "uvloop/handles/basetransport.pyx":185
 * 
 *     cdef inline _set_waiter(self, object waiter):
 *         if waiter is not None and not isinstance(waiter, aio_Future):             # <<<<<<<<<<<<<<
 *             raise TypeError(
 *                 'invalid waiter object {!r}, expected asyncio.Future'.
 */
  __pyx_t_2 = (__pyx_v_waiter != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __pyx_v_6uvloop_4loop_aio_Future;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_waiter, __pyx_t_4); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(4, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":187
 *         if waiter is not None and not isinstance(waiter, aio_Future):
 *             raise TypeError(
 *                 'invalid waiter object {!r}, expected asyncio.Future'.             # <<<<<<<<<<<<<<
 *                     format(waiter))
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid_waiter_object_r_expected, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "uvloop/handles/basetransport.pyx":188
 *             raise TypeError(
 *                 'invalid waiter object {!r}, expected asyncio.Future'.
 *                     format(waiter))             # <<<<<<<<<<<<<<
 * 
 *         self._waiter = waiter
 */
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_waiter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_waiter);
      __Pyx_GIVEREF(__pyx_v_waiter);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_waiter);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/basetransport.pyx":186
 *     cdef inline _set_waiter(self, object waiter):
 *         if waiter is not None and not isinstance(waiter, aio_Future):
 *             raise TypeError(             # <<<<<<<<<<<<<<
 *                 'invalid waiter object {!r}, expected asyncio.Future'.
 *                     format(waiter))
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(4, 186, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":185
 * 
 *     cdef inline _set_waiter(self, object waiter):
 *         if waiter is not None and not isinstance(waiter, aio_Future):             # <<<<<<<<<<<<<<
 *             raise TypeError(
 *                 'invalid waiter object {!r}, expected asyncio.Future'.
 */
  }

  /* "uvloop/handles/basetransport.pyx":190
 *                     format(waiter))
 * 
 *         self._waiter = waiter             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _set_protocol(self, object protocol):
 */
  __Pyx_INCREF(__pyx_v_waiter);
  __Pyx_GIVEREF(__pyx_v_waiter);
  __Pyx_GOTREF(__pyx_v_self->_waiter);
  __Pyx_DECREF(__pyx_v_self->_waiter);
  __pyx_v_self->_waiter = __pyx_v_waiter;

  /* "uvloop/handles/basetransport.pyx":184
 *         (<Server>server)._attach()
 * 
 *     cdef inline _set_waiter(self, object waiter):             # <<<<<<<<<<<<<<
 *         if waiter is not None and not isinstance(waiter, aio_Future):
 *             raise TypeError(
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._set_waiter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":192
 *         self._waiter = waiter
 * 
 *     cdef inline _set_protocol(self, object protocol):             # <<<<<<<<<<<<<<
 *         self._protocol = protocol
 *         # Store a reference to the bound method directly
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__set_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_protocol) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_set_protocol", 0);

  /* "uvloop/handles/basetransport.pyx":193
 * 
 *     cdef inline _set_protocol(self, object protocol):
 *         self._protocol = protocol             # <<<<<<<<<<<<<<
 *         # Store a reference to the bound method directly
 *         try:
 */
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_v_protocol);
  __Pyx_GOTREF(__pyx_v_self->_protocol);
  __Pyx_DECREF(__pyx_v_self->_protocol);
  __pyx_v_self->_protocol = __pyx_v_protocol;

  /* "uvloop/handles/basetransport.pyx":195
 *         self._protocol = protocol
 *         # Store a reference to the bound method directly
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol_data_received = protocol.data_received
 *         except AttributeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "uvloop/handles/basetransport.pyx":196
 *         # Store a reference to the bound method directly
 *         try:
 *             self._protocol_data_received = protocol.data_received             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_n_s_data_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 196, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_self->_protocol_data_received);
      __Pyx_DECREF(__pyx_v_self->_protocol_data_received);
      __pyx_v_self->_protocol_data_received = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "uvloop/handles/basetransport.pyx":195
 *         self._protocol = protocol
 *         # Store a reference to the bound method directly
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol_data_received = protocol.data_received
 *         except AttributeError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/basetransport.pyx":197
 *         try:
 *             self._protocol_data_received = protocol.data_received
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_5) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/handles/basetransport.pyx":195
 *         self._protocol = protocol
 *         # Store a reference to the bound method directly
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol_data_received = protocol.data_received
 *         except AttributeError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "uvloop/handles/basetransport.pyx":192
 *         self._waiter = waiter
 * 
 *     cdef inline _set_protocol(self, object protocol):             # <<<<<<<<<<<<<<
 *         self._protocol = protocol
 *         # Store a reference to the bound method directly
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._set_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":200
 *             pass
 * 
 *     cdef inline _init_protocol(self):             # <<<<<<<<<<<<<<
 *         if self._protocol is None:
 *             raise RuntimeError('invalid _init_protocol call')
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__init_protocol(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_init_protocol", 0);

  /* "uvloop/handles/basetransport.pyx":201
 * 
 *     cdef inline _init_protocol(self):
 *         if self._protocol is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('invalid _init_protocol call')
 *         self._schedule_call_connection_made()
 */
  __pyx_t_1 = (__pyx_v_self->_protocol == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":202
 *     cdef inline _init_protocol(self):
 *         if self._protocol is None:
 *             raise RuntimeError('invalid _init_protocol call')             # <<<<<<<<<<<<<<
 *         self._schedule_call_connection_made()
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 202, __pyx_L1_error)

    /* "uvloop/handles/basetransport.pyx":201
 * 
 *     cdef inline _init_protocol(self):
 *         if self._protocol is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('invalid _init_protocol call')
 *         self._schedule_call_connection_made()
 */
  }

  /* "uvloop/handles/basetransport.pyx":203
 *         if self._protocol is None:
 *             raise RuntimeError('invalid _init_protocol call')
 *         self._schedule_call_connection_made()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _add_extra_info(self, str name, object obj):
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_made(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/basetransport.pyx":200
 *             pass
 * 
 *     cdef inline _init_protocol(self):             # <<<<<<<<<<<<<<
 *         if self._protocol is None:
 *             raise RuntimeError('invalid _init_protocol call')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._init_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":205
 *         self._schedule_call_connection_made()
 * 
 *     cdef inline _add_extra_info(self, str name, object obj):             # <<<<<<<<<<<<<<
 *         if self._extra_info is None:
 *             self._extra_info = {}
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__add_extra_info(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_add_extra_info", 0);

  /* "uvloop/handles/basetransport.pyx":206
 * 
 *     cdef inline _add_extra_info(self, str name, object obj):
 *         if self._extra_info is None:             # <<<<<<<<<<<<<<
 *             self._extra_info = {}
 *         self._extra_info[name] = obj
 */
  __pyx_t_1 = (__pyx_v_self->_extra_info == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":207
 *     cdef inline _add_extra_info(self, str name, object obj):
 *         if self._extra_info is None:
 *             self._extra_info = {}             # <<<<<<<<<<<<<<
 *         self._extra_info[name] = obj
 * 
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_extra_info);
    __Pyx_DECREF(__pyx_v_self->_extra_info);
    __pyx_v_self->_extra_info = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":206
 * 
 *     cdef inline _add_extra_info(self, str name, object obj):
 *         if self._extra_info is None:             # <<<<<<<<<<<<<<
 *             self._extra_info = {}
 *         self._extra_info[name] = obj
 */
  }

  /* "uvloop/handles/basetransport.pyx":208
 *         if self._extra_info is None:
 *             self._extra_info = {}
 *         self._extra_info[name] = obj             # <<<<<<<<<<<<<<
 * 
 *     cdef bint _is_reading(self):
 */
  if (unlikely(__pyx_v_self->_extra_info == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(4, 208, __pyx_L1_error)
  }
  if (unlikely(PyDict_SetItem(__pyx_v_self->_extra_info, __pyx_v_name, __pyx_v_obj) < 0)) __PYX_ERR(4, 208, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":205
 *         self._schedule_call_connection_made()
 * 
 *     cdef inline _add_extra_info(self, str name, object obj):             # <<<<<<<<<<<<<<
 *         if self._extra_info is None:
 *             self._extra_info = {}
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._add_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":210
 *         self._extra_info[name] = obj
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

static int __pyx_f_6uvloop_4loop_15UVBaseTransport__is_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_is_reading", 0);

  /* "uvloop/handles/basetransport.pyx":211
 * 
 *     cdef bint _is_reading(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     cdef _start_reading(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(4, 211, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":210
 *         self._extra_info[name] = obj
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("uvloop.loop.UVBaseTransport._is_reading", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":213
 *         raise NotImplementedError
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__start_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_start_reading", 0);

  /* "uvloop/handles/basetransport.pyx":214
 * 
 *     cdef _start_reading(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     cdef _stop_reading(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(4, 214, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":213
 *         raise NotImplementedError
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._start_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":216
 *         raise NotImplementedError
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_15UVBaseTransport__stop_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_stop_reading", 0);

  /* "uvloop/handles/basetransport.pyx":217
 * 
 *     cdef _stop_reading(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     # === Public API ===
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(4, 217, __pyx_L1_error)

  /* "uvloop/handles/basetransport.pyx":216
 *         raise NotImplementedError
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._stop_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":223
 *     property _paused:
 *         # Used by SSLProto.  Might be removed in the future.
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bool(not self._is_reading())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_7_paused_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_7_paused_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_7_paused___get__(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_7_paused___get__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "uvloop/handles/basetransport.pyx":224
 *         # Used by SSLProto.  Might be removed in the future.
 *         def __get__(self):
 *             return bool(not self._is_reading())             # <<<<<<<<<<<<<<
 * 
 *     def _force_close(self, exc):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = (!(((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_is_reading(__pyx_v_self) != 0));
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":223
 *     property _paused:
 *         # Used by SSLProto.  Might be removed in the future.
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bool(not self._is_reading())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._paused.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":226
 *             return bool(not self._is_reading())
 * 
 *     def _force_close(self, exc):             # <<<<<<<<<<<<<<
 *         # Used by SSLProto.  Might be removed in the future.
 *         if self._conn_lost or self._closed:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_3_force_close(PyObject *__pyx_v_self, PyObject *__pyx_v_exc); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_3_force_close(PyObject *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_force_close (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_2_force_close(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), ((PyObject *)__pyx_v_exc));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_2_force_close(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_force_close", 0);

  /* "uvloop/handles/basetransport.pyx":228
 *     def _force_close(self, exc):
 *         # Used by SSLProto.  Might be removed in the future.
 *         if self._conn_lost or self._closed:             # <<<<<<<<<<<<<<
 *             return
 *         if not self._closing:
 */
  __pyx_t_2 = (__pyx_v_self->_conn_lost != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->__pyx_base.__pyx_base._closed != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":229
 *         # Used by SSLProto.  Might be removed in the future.
 *         if self._conn_lost or self._closed:
 *             return             # <<<<<<<<<<<<<<
 *         if not self._closing:
 *             self._closing = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":228
 *     def _force_close(self, exc):
 *         # Used by SSLProto.  Might be removed in the future.
 *         if self._conn_lost or self._closed:             # <<<<<<<<<<<<<<
 *             return
 *         if not self._closing:
 */
  }

  /* "uvloop/handles/basetransport.pyx":230
 *         if self._conn_lost or self._closed:
 *             return
 *         if not self._closing:             # <<<<<<<<<<<<<<
 *             self._closing = 1
 *             self._stop_reading()
 */
  __pyx_t_1 = ((!(__pyx_v_self->_closing != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":231
 *             return
 *         if not self._closing:
 *             self._closing = 1             # <<<<<<<<<<<<<<
 *             self._stop_reading()
 *         self._conn_lost += 1
 */
    __pyx_v_self->_closing = 1;

    /* "uvloop/handles/basetransport.pyx":232
 *         if not self._closing:
 *             self._closing = 1
 *             self._stop_reading()             # <<<<<<<<<<<<<<
 *         self._conn_lost += 1
 *         self._schedule_call_connection_lost(exc)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_stop_reading(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":230
 *         if self._conn_lost or self._closed:
 *             return
 *         if not self._closing:             # <<<<<<<<<<<<<<
 *             self._closing = 1
 *             self._stop_reading()
 */
  }

  /* "uvloop/handles/basetransport.pyx":233
 *             self._closing = 1
 *             self._stop_reading()
 *         self._conn_lost += 1             # <<<<<<<<<<<<<<
 *         self._schedule_call_connection_lost(exc)
 * 
 */
  __pyx_v_self->_conn_lost = (__pyx_v_self->_conn_lost + 1);

  /* "uvloop/handles/basetransport.pyx":234
 *             self._stop_reading()
 *         self._conn_lost += 1
 *         self._schedule_call_connection_lost(exc)             # <<<<<<<<<<<<<<
 * 
 *     def abort(self):
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost(__pyx_v_self, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/basetransport.pyx":226
 *             return bool(not self._is_reading())
 * 
 *     def _force_close(self, exc):             # <<<<<<<<<<<<<<
 *         # Used by SSLProto.  Might be removed in the future.
 *         if self._conn_lost or self._closed:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._force_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":236
 *         self._schedule_call_connection_lost(exc)
 * 
 *     def abort(self):             # <<<<<<<<<<<<<<
 *         self._force_close(None)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_5abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_5abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_4abort(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_4abort(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("abort", 0);

  /* "uvloop/handles/basetransport.pyx":237
 * 
 *     def abort(self):
 *         self._force_close(None)             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_force_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/basetransport.pyx":236
 *         self._schedule_call_connection_lost(exc)
 * 
 *     def abort(self):             # <<<<<<<<<<<<<<
 *         self._force_close(None)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":239
 *         self._force_close(None)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._closing or self._closed:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_7close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_7close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_6close(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_6close(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/handles/basetransport.pyx":240
 * 
 *     def close(self):
 *         if self._closing or self._closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_closing != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->__pyx_base.__pyx_base._closed != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":241
 *     def close(self):
 *         if self._closing or self._closed:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._closing = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":240
 * 
 *     def close(self):
 *         if self._closing or self._closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/basetransport.pyx":243
 *             return
 * 
 *         self._closing = 1             # <<<<<<<<<<<<<<
 *         self._stop_reading()
 * 
 */
  __pyx_v_self->_closing = 1;

  /* "uvloop/handles/basetransport.pyx":244
 * 
 *         self._closing = 1
 *         self._stop_reading()             # <<<<<<<<<<<<<<
 * 
 *         if not self._get_write_buffer_size():
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_stop_reading(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/basetransport.pyx":246
 *         self._stop_reading()
 * 
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             # The write buffer is empty
 *             self._conn_lost += 1
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_get_write_buffer_size(__pyx_v_self) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":248
 *         if not self._get_write_buffer_size():
 *             # The write buffer is empty
 *             self._conn_lost += 1             # <<<<<<<<<<<<<<
 *             self._schedule_call_connection_lost(None)
 * 
 */
    __pyx_v_self->_conn_lost = (__pyx_v_self->_conn_lost + 1);

    /* "uvloop/handles/basetransport.pyx":249
 *             # The write buffer is empty
 *             self._conn_lost += 1
 *             self._schedule_call_connection_lost(None)             # <<<<<<<<<<<<<<
 * 
 *     def is_closing(self):
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost(__pyx_v_self, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/basetransport.pyx":246
 *         self._stop_reading()
 * 
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             # The write buffer is empty
 *             self._conn_lost += 1
 */
  }

  /* "uvloop/handles/basetransport.pyx":239
 *         self._force_close(None)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._closing or self._closed:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":251
 *             self._schedule_call_connection_lost(None)
 * 
 *     def is_closing(self):             # <<<<<<<<<<<<<<
 *         return self._closing
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_9is_closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_9is_closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_closing (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_8is_closing(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_8is_closing(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("is_closing", 0);

  /* "uvloop/handles/basetransport.pyx":252
 * 
 *     def is_closing(self):
 *         return self._closing             # <<<<<<<<<<<<<<
 * 
 *     def get_write_buffer_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_closing); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":251
 *             self._schedule_call_connection_lost(None)
 * 
 *     def is_closing(self):             # <<<<<<<<<<<<<<
 *         return self._closing
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.is_closing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":254
 *         return self._closing
 * 
 *     def get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return self._get_write_buffer_size()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_11get_write_buffer_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_11get_write_buffer_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_size (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_10get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_10get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_write_buffer_size", 0);

  /* "uvloop/handles/basetransport.pyx":255
 * 
 *     def get_write_buffer_size(self):
 *         return self._get_write_buffer_size()             # <<<<<<<<<<<<<<
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_get_write_buffer_size(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":254
 *         return self._closing
 * 
 *     def get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return self._get_write_buffer_size()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.get_write_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":257
 *         return self._get_write_buffer_size()
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_13set_write_buffer_limits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_13set_write_buffer_limits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_high = 0;
  PyObject *__pyx_v_low = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_write_buffer_limits (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_high,&__pyx_n_s_low,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_high);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_low);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_write_buffer_limits") < 0)) __PYX_ERR(4, 257, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_high = values[0];
    __pyx_v_low = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_write_buffer_limits", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 257, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.set_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_12set_write_buffer_limits(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), __pyx_v_high, __pyx_v_low);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_12set_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_high, PyObject *__pyx_v_low) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits __pyx_t_6;
  __Pyx_RefNannySetupContext("set_write_buffer_limits", 0);
  __Pyx_INCREF(__pyx_v_high);
  __Pyx_INCREF(__pyx_v_low);

  /* "uvloop/handles/basetransport.pyx":258
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if high is None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":260
 *         self._ensure_alive()
 * 
 *         if high is None:             # <<<<<<<<<<<<<<
 *             high = -1
 *         if low is None:
 */
  __pyx_t_2 = (__pyx_v_high == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/basetransport.pyx":261
 * 
 *         if high is None:
 *             high = -1             # <<<<<<<<<<<<<<
 *         if low is None:
 *             low = -1
 */
    __Pyx_INCREF(__pyx_int_neg_1);
    __Pyx_DECREF_SET(__pyx_v_high, __pyx_int_neg_1);

    /* "uvloop/handles/basetransport.pyx":260
 *         self._ensure_alive()
 * 
 *         if high is None:             # <<<<<<<<<<<<<<
 *             high = -1
 *         if low is None:
 */
  }

  /* "uvloop/handles/basetransport.pyx":262
 *         if high is None:
 *             high = -1
 *         if low is None:             # <<<<<<<<<<<<<<
 *             low = -1
 * 
 */
  __pyx_t_3 = (__pyx_v_low == Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/basetransport.pyx":263
 *             high = -1
 *         if low is None:
 *             low = -1             # <<<<<<<<<<<<<<
 * 
 *         self._set_write_buffer_limits(high, low)
 */
    __Pyx_INCREF(__pyx_int_neg_1);
    __Pyx_DECREF_SET(__pyx_v_low, __pyx_int_neg_1);

    /* "uvloop/handles/basetransport.pyx":262
 *         if high is None:
 *             high = -1
 *         if low is None:             # <<<<<<<<<<<<<<
 *             low = -1
 * 
 */
  }

  /* "uvloop/handles/basetransport.pyx":265
 *             low = -1
 * 
 *         self._set_write_buffer_limits(high, low)             # <<<<<<<<<<<<<<
 * 
 *     def get_write_buffer_limits(self):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_high); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 265, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_low); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 265, __pyx_L1_error)
  __pyx_t_6.__pyx_n = 2;
  __pyx_t_6.high = __pyx_t_4;
  __pyx_t_6.low = __pyx_t_5;
  __pyx_t_1 = __pyx_f_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits(__pyx_v_self, &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/basetransport.pyx":257
 *         return self._get_write_buffer_size()
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.set_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_high);
  __Pyx_XDECREF(__pyx_v_low);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":267
 *         self._set_write_buffer_limits(high, low)
 * 
 *     def get_write_buffer_limits(self):             # <<<<<<<<<<<<<<
 *         return (self._low_water, self._high_water)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_15get_write_buffer_limits(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_15get_write_buffer_limits(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_limits (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_14get_write_buffer_limits(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_14get_write_buffer_limits(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("get_write_buffer_limits", 0);

  /* "uvloop/handles/basetransport.pyx":268
 * 
 *     def get_write_buffer_limits(self):
 *         return (self._low_water, self._high_water)             # <<<<<<<<<<<<<<
 * 
 *     def get_extra_info(self, name, default=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_low_water); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_high_water); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":267
 *         self._set_write_buffer_limits(high, low)
 * 
 *     def get_write_buffer_limits(self):             # <<<<<<<<<<<<<<
 *         return (self._low_water, self._high_water)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.get_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pyx":270
 *         return (self._low_water, self._high_water)
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         if self._extra_info is not None and name in self._extra_info:
 *             return self._extra_info[name]
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_17get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_17get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_extra_info (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_default,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_default);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_extra_info") < 0)) __PYX_ERR(4, 270, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_extra_info", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 270, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_16get_extra_info(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), __pyx_v_name, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_16get_extra_info(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("get_extra_info", 0);

  /* "uvloop/handles/basetransport.pyx":271
 * 
 *     def get_extra_info(self, name, default=None):
 *         if self._extra_info is not None and name in self._extra_info:             # <<<<<<<<<<<<<<
 *             return self._extra_info[name]
 *         if name == 'socket':
 */
  __pyx_t_2 = (__pyx_v_self->_extra_info != ((PyObject*)Py_None));
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  if (unlikely(__pyx_v_self->_extra_info == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(4, 271, __pyx_L1_error)
  }
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_extra_info, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(4, 271, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":272
 *     def get_extra_info(self, name, default=None):
 *         if self._extra_info is not None and name in self._extra_info:
 *             return self._extra_info[name]             # <<<<<<<<<<<<<<
 *         if name == 'socket':
 *             return self._get_socket()
 */
    __Pyx_XDECREF(__pyx_r);
    if (unlikely(__pyx_v_self->_extra_info == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(4, 272, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_extra_info, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":271
 * 
 *     def get_extra_info(self, name, default=None):
 *         if self._extra_info is not None and name in self._extra_info:             # <<<<<<<<<<<<<<
 *             return self._extra_info[name]
 *         if name == 'socket':
 */
  }

  /* "uvloop/handles/basetransport.pyx":273
 *         if self._extra_info is not None and name in self._extra_info:
 *             return self._extra_info[name]
 *         if name == 'socket':             # <<<<<<<<<<<<<<
 *             return self._get_socket()
 *         if name == 'sockname':
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_socket, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 273, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":274
 *             return self._extra_info[name]
 *         if name == 'socket':
 *             return self._get_socket()             # <<<<<<<<<<<<<<
 *         if name == 'sockname':
 *             return self._get_socket().getsockname()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":273
 *         if self._extra_info is not None and name in self._extra_info:
 *             return self._extra_info[name]
 *         if name == 'socket':             # <<<<<<<<<<<<<<
 *             return self._get_socket()
 *         if name == 'sockname':
 */
  }

  /* "uvloop/handles/basetransport.pyx":275
 *         if name == 'socket':
 *             return self._get_socket()
 *         if name == 'sockname':             # <<<<<<<<<<<<<<
 *             return self._get_socket().getsockname()
 *         if name == 'peername':
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_sockname, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 275, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":276
 *             return self._get_socket()
 *         if name == 'sockname':
 *             return self._get_socket().getsockname()             # <<<<<<<<<<<<<<
 *         if name == 'peername':
 *             try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_getsockname); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 276, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 276, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "uvloop/handles/basetransport.pyx":275
 *         if name == 'socket':
 *             return self._get_socket()
 *         if name == 'sockname':             # <<<<<<<<<<<<<<
 *             return self._get_socket().getsockname()
 *         if name == 'peername':
 */
  }

  /* "uvloop/handles/basetransport.pyx":277
 *         if name == 'sockname':
 *             return self._get_socket().getsockname()
 *         if name == 'peername':             # <<<<<<<<<<<<<<
 *             try:
 *                 return self._get_socket().getpeername()
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_peername, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 277, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/basetransport.pyx":278
 *             return self._get_socket().getsockname()
 *         if name == 'peername':
 *             try:             # <<<<<<<<<<<<<<
 *                 return self._get_socket().getpeername()
 *             except socket_error:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      /*try:*/ {

        /* "uvloop/handles/basetransport.pyx":279
 *         if name == 'peername':
 *             try:
 *                 return self._get_socket().getpeername()             # <<<<<<<<<<<<<<
 *             except socket_error:
 *                 return default
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 279, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_getpeername); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 279, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (__pyx_t_6) {
          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 279, __pyx_L9_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 279, __pyx_L9_error)
        }
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_r = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L13_try_return;

        /* "uvloop/handles/basetransport.pyx":278
 *             return self._get_socket().getsockname()
 *         if name == 'peername':
 *             try:             # <<<<<<<<<<<<<<
 *                 return self._get_socket().getpeername()
 *             except socket_error:
 */
      }
      __pyx_L9_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/handles/basetransport.pyx":280
 *             try:
 *                 return self._get_socket().getpeername()
 *             except socket_error:             # <<<<<<<<<<<<<<
 *                 return default
 *         return default
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_v_6uvloop_4loop_socket_error);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(4, 280, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_6);

        /* "uvloop/handles/basetransport.pyx":281
 *                 return self._get_socket().getpeername()
 *             except socket_error:
 *                 return default             # <<<<<<<<<<<<<<
 *         return default
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_default);
        __pyx_r = __pyx_v_default;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L12_except_return;
      }
      goto __pyx_L11_except_error;
      __pyx_L11_except_error:;

      /* "uvloop/handles/basetransport.pyx":278
 *             return self._get_socket().getsockname()
 *         if name == 'peername':
 *             try:             # <<<<<<<<<<<<<<
 *                 return self._get_socket().getpeername()
 *             except socket_error:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L1_error;
      __pyx_L13_try_return:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
      __pyx_L12_except_return:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
    }

    /* "uvloop/handles/basetransport.pyx":277
 *         if name == 'sockname':
 *             return self._get_socket().getsockname()
 *         if name == 'peername':             # <<<<<<<<<<<<<<
 *             try:
 *                 return self._get_socket().getpeername()
 */
  }

  /* "uvloop/handles/basetransport.pyx":282
 *             except socket_error:
 *                 return default
 *         return default             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_r = __pyx_v_default;
  goto __pyx_L0;

  /* "uvloop/handles/basetransport.pyx":270
 *         return (self._low_water, self._high_water)
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         if self._extra_info is not None and name in self._extra_info:
 *             return self._extra_info[name]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/basetransport.pxd":4
 * 
 *     cdef:
 *         readonly bint _closing             # <<<<<<<<<<<<<<
 * 
 *         bint _protocol_connected
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_8_closing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_15UVBaseTransport_8_closing_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_15UVBaseTransport_8_closing___get__(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_15UVBaseTransport_8_closing___get__(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_closing); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVBaseTransport._closing.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":19
 *         bint            closed
 * 
 *     cdef close(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_19_StreamWriteContext_close(struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/handles/stream.pyx":20
 * 
 *     cdef close(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = (__pyx_v_self->closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":21
 *     cdef close(self):
 *         if self.closed:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self.closed = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":20
 * 
 *     cdef close(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":23
 *             return
 * 
 *         self.closed = 1             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self.py_buf)  # void
 *         self.req.data = NULL
 */
  __pyx_v_self->closed = 1;

  /* "uvloop/handles/stream.pyx":24
 * 
 *         self.closed = 1
 *         PyBuffer_Release(&self.py_buf)  # void             # <<<<<<<<<<<<<<
 *         self.req.data = NULL
 *         IF not DEBUG:
 */
  PyBuffer_Release((&__pyx_v_self->py_buf));

  /* "uvloop/handles/stream.pyx":25
 *         self.closed = 1
 *         PyBuffer_Release(&self.py_buf)  # void
 *         self.req.data = NULL             # <<<<<<<<<<<<<<
 *         IF not DEBUG:
 *             self.stream = None
 */
  __pyx_v_self->req.data = NULL;

  /* "uvloop/handles/stream.pyx":27
 *         self.req.data = NULL
 *         IF not DEBUG:
 *             self.stream = None             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stream);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->stream));
  __pyx_v_self->stream = ((struct __pyx_obj_6uvloop_4loop_UVStream *)Py_None);

  /* "uvloop/handles/stream.pyx":28
 *         IF not DEBUG:
 *             self.stream = None
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/stream.pyx":19
 *         bint            closed
 * 
 *     cdef close(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":31
 * 
 *     @staticmethod
 *     cdef _StreamWriteContext new(UVStream stream, object data):             # <<<<<<<<<<<<<<
 *         cdef _StreamWriteContext ctx
 *         ctx = _StreamWriteContext.__new__(_StreamWriteContext)
 */

static struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_f_6uvloop_4loop_19_StreamWriteContext_new(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_stream, PyObject *__pyx_v_data) {
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_v_ctx = 0;
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/stream.pyx":33
 *     cdef _StreamWriteContext new(UVStream stream, object data):
 *         cdef _StreamWriteContext ctx
 *         ctx = _StreamWriteContext.__new__(_StreamWriteContext)             # <<<<<<<<<<<<<<
 *         ctx.stream = None
 *         ctx.closed = 1
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop__StreamWriteContext(((PyTypeObject *)__pyx_ptype_6uvloop_4loop__StreamWriteContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop__StreamWriteContext)))) __PYX_ERR(15, 33, __pyx_L1_error)
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":34
 *         cdef _StreamWriteContext ctx
 *         ctx = _StreamWriteContext.__new__(_StreamWriteContext)
 *         ctx.stream = None             # <<<<<<<<<<<<<<
 *         ctx.closed = 1
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_ctx->stream);
  __Pyx_DECREF(((PyObject *)__pyx_v_ctx->stream));
  __pyx_v_ctx->stream = ((struct __pyx_obj_6uvloop_4loop_UVStream *)Py_None);

  /* "uvloop/handles/stream.pyx":35
 *         ctx = _StreamWriteContext.__new__(_StreamWriteContext)
 *         ctx.stream = None
 *         ctx.closed = 1             # <<<<<<<<<<<<<<
 * 
 *         ctx.req.data = <void*> ctx
 */
  __pyx_v_ctx->closed = 1;

  /* "uvloop/handles/stream.pyx":37
 *         ctx.closed = 1
 * 
 *         ctx.req.data = <void*> ctx             # <<<<<<<<<<<<<<
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 */
  __pyx_v_ctx->req.data = ((void *)__pyx_v_ctx);

  /* "uvloop/handles/stream.pyx":39
 *         ctx.req.data = <void*> ctx
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)
 *         ctx.stream = stream
 */
  __pyx_t_2 = PyObject_GetBuffer(__pyx_v_data, (&__pyx_v_ctx->py_buf), PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 39, __pyx_L1_error)

  /* "uvloop/handles/stream.pyx":40
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)             # <<<<<<<<<<<<<<
 *         ctx.stream = stream
 * 
 */
  __pyx_v_ctx->uv_buf = uv_buf_init(((char *)__pyx_v_ctx->py_buf.buf), __pyx_v_ctx->py_buf.len);

  /* "uvloop/handles/stream.pyx":41
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)
 *         ctx.stream = stream             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_stream));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_stream));
  __Pyx_GOTREF(__pyx_v_ctx->stream);
  __Pyx_DECREF(((PyObject *)__pyx_v_ctx->stream));
  __pyx_v_ctx->stream = __pyx_v_stream;

  /* "uvloop/handles/stream.pyx":49
 *         # Do incref after everything else is done
 *         # (PyObject_GetBuffer for instance may fail with exception)
 *         Py_INCREF(ctx)             # <<<<<<<<<<<<<<
 *         ctx.closed = 0
 *         return ctx
 */
  Py_INCREF(((PyObject *)__pyx_v_ctx));

  /* "uvloop/handles/stream.pyx":50
 *         # (PyObject_GetBuffer for instance may fail with exception)
 *         Py_INCREF(ctx)
 *         ctx.closed = 0             # <<<<<<<<<<<<<<
 *         return ctx
 * 
 */
  __pyx_v_ctx->closed = 0;

  /* "uvloop/handles/stream.pyx":51
 *         Py_INCREF(ctx)
 *         ctx.closed = 0
 *         return ctx             # <<<<<<<<<<<<<<
 * 
 *     IF DEBUG:
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_ctx));
  __pyx_r = __pyx_v_ctx;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":31
 * 
 *     @staticmethod
 *     cdef _StreamWriteContext new(UVStream stream, object data):             # <<<<<<<<<<<<<<
 *         cdef _StreamWriteContext ctx
 *         ctx = _StreamWriteContext.__new__(_StreamWriteContext)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop._StreamWriteContext.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":68
 * cdef class UVStream(UVBaseTransport):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.__shutting_down = 0
 *         self.__reading = 0
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_8UVStream_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_8UVStream_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream___cinit__(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_8UVStream___cinit__(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/stream.pyx":69
 * 
 *     def __cinit__(self):
 *         self.__shutting_down = 0             # <<<<<<<<<<<<<<
 *         self.__reading = 0
 *         self.__read_error_close = 0
 */
  __pyx_v_self->__pyx___shutting_down = 0;

  /* "uvloop/handles/stream.pyx":70
 *     def __cinit__(self):
 *         self.__shutting_down = 0
 *         self.__reading = 0             # <<<<<<<<<<<<<<
 *         self.__read_error_close = 0
 *         self._eof = 0
 */
  __pyx_v_self->__pyx___reading = 0;

  /* "uvloop/handles/stream.pyx":71
 *         self.__shutting_down = 0
 *         self.__reading = 0
 *         self.__read_error_close = 0             # <<<<<<<<<<<<<<
 *         self._eof = 0
 * 
 */
  __pyx_v_self->__pyx___read_error_close = 0;

  /* "uvloop/handles/stream.pyx":72
 *         self.__reading = 0
 *         self.__read_error_close = 0
 *         self._eof = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _shutdown(self):
 */
  __pyx_v_self->_eof = 0;

  /* "uvloop/handles/stream.pyx":68
 * cdef class UVStream(UVBaseTransport):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.__shutting_down = 0
 *         self.__reading = 0
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":74
 *         self._eof = 0
 * 
 *     cdef inline _shutdown(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__shutdown(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_shutdown", 0);

  /* "uvloop/handles/stream.pyx":77
 *         cdef int err
 * 
 *         if self.__shutting_down:             # <<<<<<<<<<<<<<
 *             return
 *         self.__shutting_down = 1
 */
  __pyx_t_1 = (__pyx_v_self->__pyx___shutting_down != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":78
 * 
 *         if self.__shutting_down:
 *             return             # <<<<<<<<<<<<<<
 *         self.__shutting_down = 1
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":77
 *         cdef int err
 * 
 *         if self.__shutting_down:             # <<<<<<<<<<<<<<
 *             return
 *         self.__shutting_down = 1
 */
  }

  /* "uvloop/handles/stream.pyx":79
 *         if self.__shutting_down:
 *             return
 *         self.__shutting_down = 1             # <<<<<<<<<<<<<<
 * 
 *         self._ensure_alive()
 */
  __pyx_v_self->__pyx___shutting_down = 1;

  /* "uvloop/handles/stream.pyx":81
 *         self.__shutting_down = 1
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         self._shutdown_req.data = <void*> self
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":83
 *         self._ensure_alive()
 * 
 *         self._shutdown_req.data = <void*> self             # <<<<<<<<<<<<<<
 *         err = uv.uv_shutdown(&self._shutdown_req,
 *                              <uv.uv_stream_t*> self._handle,
 */
  __pyx_v_self->_shutdown_req.data = ((void *)__pyx_v_self);

  /* "uvloop/handles/stream.pyx":84
 * 
 *         self._shutdown_req.data = <void*> self
 *         err = uv.uv_shutdown(&self._shutdown_req,             # <<<<<<<<<<<<<<
 *                              <uv.uv_stream_t*> self._handle,
 *                              __uv_stream_on_shutdown)
 */
  __pyx_v_err = uv_shutdown((&__pyx_v_self->_shutdown_req), ((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_f_6uvloop_4loop___uv_stream_on_shutdown);

  /* "uvloop/handles/stream.pyx":87
 *                              <uv.uv_stream_t*> self._handle,
 *                              __uv_stream_on_shutdown)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":88
 *                              __uv_stream_on_shutdown)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":89
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":90
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _accept(self, UVStream server):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":87
 *                              <uv.uv_stream_t*> self._handle,
 *                              __uv_stream_on_shutdown)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/stream.pyx":74
 *         self._eof = 0
 * 
 *     cdef inline _shutdown(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVStream._shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":92
 *             return
 * 
 *     cdef inline _accept(self, UVStream server):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__accept(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_server) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_accept", 0);

  /* "uvloop/handles/stream.pyx":94
 *     cdef inline _accept(self, UVStream server):
 *         cdef int err
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_accept(<uv.uv_stream_t*>server._handle,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":96
 *         self._ensure_alive()
 * 
 *         err = uv.uv_accept(<uv.uv_stream_t*>server._handle,             # <<<<<<<<<<<<<<
 *                            <uv.uv_stream_t*>self._handle)
 *         if err < 0:
 */
  __pyx_v_err = uv_accept(((uv_stream_t *)__pyx_v_server->__pyx_base.__pyx_base.__pyx_base._handle), ((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle));

  /* "uvloop/handles/stream.pyx":98
 *         err = uv.uv_accept(<uv.uv_stream_t*>server._handle,
 *                            <uv.uv_stream_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":99
 *                            <uv.uv_stream_t*>self._handle)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":100
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":101
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._on_accept()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":98
 *         err = uv.uv_accept(<uv.uv_stream_t*>server._handle,
 *                            <uv.uv_stream_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/stream.pyx":103
 *             return
 * 
 *         self._on_accept()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _close_on_read_error(self):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream__on_accept(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":92
 *             return
 * 
 *     cdef inline _accept(self, UVStream server):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":105
 *         self._on_accept()
 * 
 *     cdef inline _close_on_read_error(self):             # <<<<<<<<<<<<<<
 *         self.__read_error_close = 1
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__close_on_read_error(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_close_on_read_error", 0);

  /* "uvloop/handles/stream.pyx":106
 * 
 *     cdef inline _close_on_read_error(self):
 *         self.__read_error_close = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef bint _is_reading(self):
 */
  __pyx_v_self->__pyx___read_error_close = 1;

  /* "uvloop/handles/stream.pyx":105
 *         self._on_accept()
 * 
 *     cdef inline _close_on_read_error(self):             # <<<<<<<<<<<<<<
 *         self.__read_error_close = 1
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":108
 *         self.__read_error_close = 1
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         return self.__reading
 * 
 */

static int __pyx_f_6uvloop_4loop_8UVStream__is_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_is_reading", 0);

  /* "uvloop/handles/stream.pyx":109
 * 
 *     cdef bint _is_reading(self):
 *         return self.__reading             # <<<<<<<<<<<<<<
 * 
 *     cdef _start_reading(self):
 */
  __pyx_r = __pyx_v_self->__pyx___reading;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":108
 *         self.__read_error_close = 1
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         return self.__reading
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":111
 *         return self.__reading
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVStream__start_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_start_reading", 0);

  /* "uvloop/handles/stream.pyx":113
 *     cdef _start_reading(self):
 *         cdef int err
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self.__reading:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":115
 *         self._ensure_alive()
 * 
 *         if self.__reading:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = (__pyx_v_self->__pyx___reading != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":116
 * 
 *         if self.__reading:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_read_start(<uv.uv_stream_t*>self._handle,
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":115
 *         self._ensure_alive()
 * 
 *         if self.__reading:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":118
 *             return
 * 
 *         err = uv.uv_read_start(<uv.uv_stream_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                __loop_alloc_buffer,
 *                                __uv_stream_on_read)
 */
  __pyx_v_err = uv_read_start(((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_f_6uvloop_4loop___loop_alloc_buffer, __pyx_f_6uvloop_4loop___uv_stream_on_read);

  /* "uvloop/handles/stream.pyx":121
 *                                __loop_alloc_buffer,
 *                                __uv_stream_on_read)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":122
 *                                __uv_stream_on_read)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":123
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":124
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             # UVStream must live until the read callback is called
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":121
 *                                __loop_alloc_buffer,
 *                                __uv_stream_on_read)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/stream.pyx":127
 *         else:
 *             # UVStream must live until the read callback is called
 *             self.__reading_started()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline __reading_started(self):
 */
  /*else*/ {
    __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream___reading_started(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "uvloop/handles/stream.pyx":111
 *         return self.__reading
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._start_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":129
 *             self.__reading_started()
 * 
 *     cdef inline __reading_started(self):             # <<<<<<<<<<<<<<
 *         if self.__reading:
 *             return
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_started(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__reading_started", 0);

  /* "uvloop/handles/stream.pyx":130
 * 
 *     cdef inline __reading_started(self):
 *         if self.__reading:             # <<<<<<<<<<<<<<
 *             return
 *         self.__reading = 1
 */
  __pyx_t_1 = (__pyx_v_self->__pyx___reading != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":131
 *     cdef inline __reading_started(self):
 *         if self.__reading:
 *             return             # <<<<<<<<<<<<<<
 *         self.__reading = 1
 *         Py_INCREF(self)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":130
 * 
 *     cdef inline __reading_started(self):
 *         if self.__reading:             # <<<<<<<<<<<<<<
 *             return
 *         self.__reading = 1
 */
  }

  /* "uvloop/handles/stream.pyx":132
 *         if self.__reading:
 *             return
 *         self.__reading = 1             # <<<<<<<<<<<<<<
 *         Py_INCREF(self)
 * 
 */
  __pyx_v_self->__pyx___reading = 1;

  /* "uvloop/handles/stream.pyx":133
 *             return
 *         self.__reading = 1
 *         Py_INCREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline __reading_stopped(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/stream.pyx":129
 *             self.__reading_started()
 * 
 *     cdef inline __reading_started(self):             # <<<<<<<<<<<<<<
 *         if self.__reading:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":135
 *         Py_INCREF(self)
 * 
 *     cdef inline __reading_stopped(self):             # <<<<<<<<<<<<<<
 *         if not self.__reading:
 *             return
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream___reading_stopped(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__reading_stopped", 0);

  /* "uvloop/handles/stream.pyx":136
 * 
 *     cdef inline __reading_stopped(self):
 *         if not self.__reading:             # <<<<<<<<<<<<<<
 *             return
 *         self.__reading = 0
 */
  __pyx_t_1 = ((!(__pyx_v_self->__pyx___reading != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":137
 *     cdef inline __reading_stopped(self):
 *         if not self.__reading:
 *             return             # <<<<<<<<<<<<<<
 *         self.__reading = 0
 *         Py_DECREF(self)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":136
 * 
 *     cdef inline __reading_stopped(self):
 *         if not self.__reading:             # <<<<<<<<<<<<<<
 *             return
 *         self.__reading = 0
 */
  }

  /* "uvloop/handles/stream.pyx":138
 *         if not self.__reading:
 *             return
 *         self.__reading = 0             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 * 
 */
  __pyx_v_self->__pyx___reading = 0;

  /* "uvloop/handles/stream.pyx":139
 *             return
 *         self.__reading = 0
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _stop_reading(self):
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/stream.pyx":135
 *         Py_INCREF(self)
 * 
 *     cdef inline __reading_stopped(self):             # <<<<<<<<<<<<<<
 *         if not self.__reading:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":141
 *         Py_DECREF(self)
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVStream__stop_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_stop_reading", 0);

  /* "uvloop/handles/stream.pyx":144
 *         cdef int err
 * 
 *         if not self.__reading:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((!(__pyx_v_self->__pyx___reading != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":145
 * 
 *         if not self.__reading:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._ensure_alive()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":144
 *         cdef int err
 * 
 *         if not self.__reading:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":147
 *             return
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         # From libuv docs:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":152
 *         #    This function is idempotent and may be safely
 *         #    called on a stopped stream.
 *         err = uv.uv_read_stop(<uv.uv_stream_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_read_stop(((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle));

  /* "uvloop/handles/stream.pyx":153
 *         #    called on a stopped stream.
 *         err = uv.uv_read_stop(<uv.uv_stream_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":154
 *         err = uv.uv_read_stop(<uv.uv_stream_t*>self._handle)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":155
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":156
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             self.__reading_stopped()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":153
 *         #    called on a stopped stream.
 *         err = uv.uv_read_stop(<uv.uv_stream_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/stream.pyx":158
 *             return
 *         else:
 *             self.__reading_stopped()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _try_write(self, object data):
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVStream___reading_stopped(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "uvloop/handles/stream.pyx":141
 *         Py_DECREF(self)
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVStream._stop_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":160
 *             self.__reading_stopped()
 * 
 *     cdef inline _try_write(self, object data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ssize_t written
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__try_write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_data) {
  Py_ssize_t __pyx_v_written;
  int __pyx_v_fd;
  Py_buffer __pyx_v_py_buf;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_try_write", 0);

  /* "uvloop/handles/stream.pyx":166
 *             Py_buffer py_buf
 * 
 *         fd = self._fileno()             # <<<<<<<<<<<<<<
 *         PyObject_GetBuffer(data, &py_buf, PyBUF_SIMPLE)
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fd = __pyx_t_2;

  /* "uvloop/handles/stream.pyx":167
 * 
 *         fd = self._fileno()
 *         PyObject_GetBuffer(data, &py_buf, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)
 *         PyBuffer_Release(&py_buf)
 */
  __pyx_t_2 = PyObject_GetBuffer(__pyx_v_data, (&__pyx_v_py_buf), PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 167, __pyx_L1_error)

  /* "uvloop/handles/stream.pyx":168
 *         fd = self._fileno()
 *         PyObject_GetBuffer(data, &py_buf, PyBUF_SIMPLE)
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 */
  __pyx_v_written = send(__pyx_v_fd, ((char *)__pyx_v_py_buf.buf), __pyx_v_py_buf.len, 0);

  /* "uvloop/handles/stream.pyx":169
 *         PyObject_GetBuffer(data, &py_buf, PyBUF_SIMPLE)
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)
 *         PyBuffer_Release(&py_buf)             # <<<<<<<<<<<<<<
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,
 */
  PyBuffer_Release((&__pyx_v_py_buf));

  /* "uvloop/handles/stream.pyx":170
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:             # <<<<<<<<<<<<<<
 *             if errno.errno not in (system.EINTR, system.EAGAIN,
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 */
  __pyx_t_3 = ((__pyx_v_written < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/stream.pyx":171
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,             # <<<<<<<<<<<<<<
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,
 */
    __pyx_t_2 = errno;
    __pyx_t_4 = ((__pyx_t_2 != EINTR) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_4 = ((__pyx_t_2 != EAGAIN) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":172
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,             # <<<<<<<<<<<<<<
 *                                    system.EALREADY,
 *                                    # If it's a wrong type of FD - let libuv
 */
    __pyx_t_4 = ((__pyx_t_2 != EWOULDBLOCK) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":171
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,             # <<<<<<<<<<<<<<
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,
 */
    __pyx_t_4 = ((__pyx_t_2 != EINPROGRESS) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":173
 *             if errno.errno not in (system.EINTR, system.EAGAIN,
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,             # <<<<<<<<<<<<<<
 *                                    # If it's a wrong type of FD - let libuv
 *                                    # handle it, ignore the error:
 */
    __pyx_t_4 = ((__pyx_t_2 != EALREADY) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":171
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,             # <<<<<<<<<<<<<<
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,
 */
    __pyx_t_4 = ((__pyx_t_2 != ENOTSOCK) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":176
 *                                    # If it's a wrong type of FD - let libuv
 *                                    # handle it, ignore the error:
 *                                    system.ENOTSOCK, system.EBADF,             # <<<<<<<<<<<<<<
 *                                    system.ENOSYS):
 *                 exc = convert_error(-errno.errno)
 */
    __pyx_t_4 = ((__pyx_t_2 != EBADF) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }

    /* "uvloop/handles/stream.pyx":171
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,             # <<<<<<<<<<<<<<
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,
 */
    __pyx_t_4 = ((__pyx_t_2 != ENOSYS) != 0);
    __pyx_t_3 = __pyx_t_4;
    __pyx_L5_bool_binop_done:;
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {

      /* "uvloop/handles/stream.pyx":178
 *                                    system.ENOTSOCK, system.EBADF,
 *                                    system.ENOSYS):
 *                 exc = convert_error(-errno.errno)             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, True)
 * 
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error((-errno)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_exc = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/handles/stream.pyx":179
 *                                    system.ENOSYS):
 *                 exc = convert_error(-errno.errno)
 *                 self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 179, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/stream.pyx":171
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:
 *             if errno.errno not in (system.EINTR, system.EAGAIN,             # <<<<<<<<<<<<<<
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 *                                    system.EALREADY,
 */
    }

    /* "uvloop/handles/stream.pyx":170
 *         written = system.send(fd, <char*>py_buf.buf, py_buf.len, 0)
 *         PyBuffer_Release(&py_buf)
 *         if written < 0:             # <<<<<<<<<<<<<<
 *             if errno.errno not in (system.EINTR, system.EAGAIN,
 *                                    system.EWOULDBLOCK, system.EINPROGRESS,
 */
  }

  /* "uvloop/handles/stream.pyx":185
 *                 self._loop._debug_stream_write_tries += 1
 * 
 *         return written             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _write(self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_written); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":160
 *             self.__reading_stopped()
 * 
 *     cdef inline _try_write(self, object data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ssize_t written
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._try_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":187
 *         return written
 * 
 *     cdef inline _write(self, object data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_v_err;
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_v_ctx = 0;
  PyObject *__pyx_v_sent = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_write", 0);
  __Pyx_INCREF(__pyx_v_data);

  /* "uvloop/handles/stream.pyx":192
 *             _StreamWriteContext ctx
 * 
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             # Try to write without polling only when there is
 *             # no data in write buffers.
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":195
 *             # Try to write without polling only when there is
 *             # no data in write buffers.
 *             sent = self._try_write(data)             # <<<<<<<<<<<<<<
 *             if sent > 0:
 *                 if sent == len(data):
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVStream__try_write(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_sent = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":196
 *             # no data in write buffers.
 *             sent = self._try_write(data)
 *             if sent > 0:             # <<<<<<<<<<<<<<
 *                 if sent == len(data):
 *                     return
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_sent, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 196, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 196, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_1) {

      /* "uvloop/handles/stream.pyx":197
 *             sent = self._try_write(data)
 *             if sent > 0:
 *                 if sent == len(data):             # <<<<<<<<<<<<<<
 *                     return
 *                 data = data[sent:]
 */
      __pyx_t_3 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(15, 197, __pyx_L1_error)
      __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 197, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_sent, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 197, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 197, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_1) {

        /* "uvloop/handles/stream.pyx":198
 *             if sent > 0:
 *                 if sent == len(data):
 *                     return             # <<<<<<<<<<<<<<
 *                 data = data[sent:]
 * 
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        goto __pyx_L0;

        /* "uvloop/handles/stream.pyx":197
 *             sent = self._try_write(data)
 *             if sent > 0:
 *                 if sent == len(data):             # <<<<<<<<<<<<<<
 *                     return
 *                 data = data[sent:]
 */
      }

      /* "uvloop/handles/stream.pyx":199
 *                 if sent == len(data):
 *                     return
 *                 data = data[sent:]             # <<<<<<<<<<<<<<
 * 
 *         ctx = _StreamWriteContext.new(self, data)
 */
      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_data, 0, 0, &__pyx_v_sent, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "uvloop/handles/stream.pyx":196
 *             # no data in write buffers.
 *             sent = self._try_write(data)
 *             if sent > 0:             # <<<<<<<<<<<<<<
 *                 if sent == len(data):
 *                     return
 */
    }

    /* "uvloop/handles/stream.pyx":192
 *             _StreamWriteContext ctx
 * 
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             # Try to write without polling only when there is
 *             # no data in write buffers.
 */
  }

  /* "uvloop/handles/stream.pyx":201
 *                 data = data[sent:]
 * 
 *         ctx = _StreamWriteContext.new(self, data)             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_write(&ctx.req,
 */
  __pyx_t_4 = ((PyObject *)__pyx_f_6uvloop_4loop_19_StreamWriteContext_new(__pyx_v_self, __pyx_v_data)); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "uvloop/handles/stream.pyx":203
 *         ctx = _StreamWriteContext.new(self, data)
 * 
 *         err = uv.uv_write(&ctx.req,             # <<<<<<<<<<<<<<
 *                           <uv.uv_stream_t*>self._handle,
 *                           &ctx.uv_buf,
 */
  __pyx_v_err = uv_write((&__pyx_v_ctx->req), ((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), (&__pyx_v_ctx->uv_buf), 1, __pyx_f_6uvloop_4loop___uv_stream_on_write);

  /* "uvloop/handles/stream.pyx":209
 *                           __uv_stream_on_write)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             # close write context
 *             ctx.close()
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":211
 *         if err < 0:
 *             # close write context
 *             ctx.close()             # <<<<<<<<<<<<<<
 * 
 *             exc = convert_error(err)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext *)__pyx_v_ctx->__pyx_vtab)->close(__pyx_v_ctx); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/stream.pyx":213
 *             ctx.close()
 * 
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 * 
 */
    __pyx_t_4 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_exc = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "uvloop/handles/stream.pyx":214
 * 
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 * 
 *         self._maybe_pause_protocol()
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/stream.pyx":209
 *                           __uv_stream_on_write)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             # close write context
 *             ctx.close()
 */
  }

  /* "uvloop/handles/stream.pyx":216
 *             self._fatal_error(exc, True)
 * 
 *         self._maybe_pause_protocol()             # <<<<<<<<<<<<<<
 * 
 *     cdef size_t _get_write_buffer_size(self):
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._maybe_pause_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/handles/stream.pyx":187
 *         return written
 * 
 *     cdef inline _write(self, object data):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVStream._write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XDECREF(__pyx_v_sent);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":218
 *         self._maybe_pause_protocol()
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         if self._handle is NULL:
 *             return 0
 */

static size_t __pyx_f_6uvloop_4loop_8UVStream__get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_get_write_buffer_size", 0);

  /* "uvloop/handles/stream.pyx":219
 * 
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":220
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size
 * 
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":219
 * 
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size
 */
  }

  /* "uvloop/handles/stream.pyx":221
 *         if self._handle is NULL:
 *             return 0
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size             # <<<<<<<<<<<<<<
 * 
 *     cdef _close(self):
 */
  __pyx_r = ((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle)->write_queue_size;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":218
 *         self._maybe_pause_protocol()
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         if self._handle is NULL:
 *             return 0
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":223
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         try:
 *             self._stop_reading()
 */

static PyObject *__pyx_f_6uvloop_4loop_8UVStream__close(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  char const *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "uvloop/handles/stream.pyx":224
 * 
 *     cdef _close(self):
 *         try:             # <<<<<<<<<<<<<<
 *             self._stop_reading()
 *         finally:
 */
  /*try:*/ {

    /* "uvloop/handles/stream.pyx":225
 *     cdef _close(self):
 *         try:
 *             self._stop_reading()             # <<<<<<<<<<<<<<
 *         finally:
 *             UVSocketHandle._close(<UVHandle>self)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._stop_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 225, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "uvloop/handles/stream.pyx":227
 *             self._stop_reading()
 *         finally:
 *             UVSocketHandle._close(<UVHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_accept(self):
 */
  /*finally:*/ {
    /*normal exit:*/{
      if (!(likely(((((PyObject *)__pyx_v_self)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_6uvloop_4loop_UVSocketHandle))))) __PYX_ERR(15, 227, __pyx_L1_error)
      __pyx_t_1 = __pyx_f_6uvloop_4loop_14UVSocketHandle__close(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L4_error:;
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __pyx_t_2 = __pyx_lineno; __pyx_t_3 = __pyx_clineno; __pyx_t_4 = __pyx_filename;
      {
        if (!(likely(((((PyObject *)__pyx_v_self)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_6uvloop_4loop_UVSocketHandle))))) __PYX_ERR(15, 227, __pyx_L7_error)
        __pyx_t_1 = __pyx_f_6uvloop_4loop_14UVSocketHandle__close(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 227, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_3; __pyx_filename = __pyx_t_4;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "uvloop/handles/stream.pyx":223
 *         return (<uv.uv_stream_t*>self._handle).write_queue_size
 * 
 *     cdef _close(self):             # <<<<<<<<<<<<<<
 *         try:
 *             self._stop_reading()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":229
 *             UVSocketHandle._close(<UVHandle>self)
 * 
 *     cdef inline _on_accept(self):             # <<<<<<<<<<<<<<
 *         # Ultimately called by __uv_stream_on_listen.
 *         self._init_protocol()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_accept(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_on_accept", 0);

  /* "uvloop/handles/stream.pyx":231
 *     cdef inline _on_accept(self):
 *         # Ultimately called by __uv_stream_on_listen.
 *         self._init_protocol()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_read(self, bytes buf):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":229
 *             UVSocketHandle._close(<UVHandle>self)
 * 
 *     cdef inline _on_accept(self):             # <<<<<<<<<<<<<<
 *         # Ultimately called by __uv_stream_on_listen.
 *         self._init_protocol()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._on_accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":233
 *         self._init_protocol()
 * 
 *     cdef inline _on_read(self, bytes buf):             # <<<<<<<<<<<<<<
 *         # Any exception raised here will be caught in
 *         # __uv_stream_on_read.
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_read(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_buf) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_on_read", 0);

  /* "uvloop/handles/stream.pyx":236
 *         # Any exception raised here will be caught in
 *         # __uv_stream_on_read.
 *         self._protocol_data_received(buf)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_eof(self):
 */
  __Pyx_INCREF(__pyx_v_self->__pyx_base._protocol_data_received);
  __pyx_t_2 = __pyx_v_self->__pyx_base._protocol_data_received; __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_buf);
    __Pyx_GIVEREF(__pyx_v_buf);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_buf);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":233
 *         self._init_protocol()
 * 
 *     cdef inline _on_read(self, bytes buf):             # <<<<<<<<<<<<<<
 *         # Any exception raised here will be caught in
 *         # __uv_stream_on_read.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVStream._on_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":238
 *         self._protocol_data_received(buf)
 * 
 *     cdef inline _on_eof(self):             # <<<<<<<<<<<<<<
 *         # Any exception raised here will be caught in
 *         # __uv_stream_on_read.
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_eof(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_v_meth = NULL;
  PyObject *__pyx_v_keep_open = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("_on_eof", 0);

  /* "uvloop/handles/stream.pyx":242
 *         # __uv_stream_on_read.
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             meth = self._protocol.eof_received
 *         except AttributeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "uvloop/handles/stream.pyx":243
 * 
 *         try:
 *             meth = self._protocol.eof_received             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             keep_open = False
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._protocol, __pyx_n_s_eof_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 243, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_meth = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "uvloop/handles/stream.pyx":242
 *         # __uv_stream_on_read.
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             meth = self._protocol.eof_received
 *         except AttributeError:
 */
    }

    /* "uvloop/handles/stream.pyx":247
 *             keep_open = False
 *         else:
 *             keep_open = meth()             # <<<<<<<<<<<<<<
 * 
 *         if keep_open:
 */
    /*else:*/ {
      __Pyx_INCREF(__pyx_v_meth);
      __pyx_t_5 = __pyx_v_meth; __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 247, __pyx_L5_except_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 247, __pyx_L5_except_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_keep_open = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/stream.pyx":244
 *         try:
 *             meth = self._protocol.eof_received
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             keep_open = False
 *         else:
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.UVStream._on_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(15, 244, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "uvloop/handles/stream.pyx":245
 *             meth = self._protocol.eof_received
 *         except AttributeError:
 *             keep_open = False             # <<<<<<<<<<<<<<
 *         else:
 *             keep_open = meth()
 */
      __Pyx_INCREF(Py_False);
      __pyx_v_keep_open = Py_False;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/handles/stream.pyx":242
 *         # __uv_stream_on_read.
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             meth = self._protocol.eof_received
 *         except AttributeError:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "uvloop/handles/stream.pyx":249
 *             keep_open = meth()
 * 
 *         if keep_open:             # <<<<<<<<<<<<<<
 *             # We're keeping the connection open so the
 *             # protocol can write more, but we still can't
 */
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_keep_open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(15, 249, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "uvloop/handles/stream.pyx":253
 *             # protocol can write more, but we still can't
 *             # receive more, so remove the reader callback.
 *             self._stop_reading()             # <<<<<<<<<<<<<<
 *         else:
 *             self.close()
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._stop_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/handles/stream.pyx":249
 *             keep_open = meth()
 * 
 *         if keep_open:             # <<<<<<<<<<<<<<
 *             # We're keeping the connection open so the
 *             # protocol can write more, but we still can't
 */
    goto __pyx_L13;
  }

  /* "uvloop/handles/stream.pyx":255
 *             self._stop_reading()
 *         else:
 *             self.close()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_write(self):
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 255, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 255, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L13:;

  /* "uvloop/handles/stream.pyx":238
 *         self._protocol_data_received(buf)
 * 
 *     cdef inline _on_eof(self):             # <<<<<<<<<<<<<<
 *         # Any exception raised here will be caught in
 *         # __uv_stream_on_read.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVStream._on_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_meth);
  __Pyx_XDECREF(__pyx_v_keep_open);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":257
 *             self.close()
 * 
 *     cdef inline _on_write(self):             # <<<<<<<<<<<<<<
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_on_write", 0);

  /* "uvloop/handles/stream.pyx":258
 * 
 *     cdef inline _on_write(self):
 *         self._maybe_resume_protocol()             # <<<<<<<<<<<<<<
 *         if not self._get_write_buffer_size():
 *             if self._closing:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._maybe_resume_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":259
 *     cdef inline _on_write(self):
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 */
  __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":260
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 *             if self._closing:             # <<<<<<<<<<<<<<
 *                 self._schedule_call_connection_lost(None)
 *             elif self._eof:
 */
    __pyx_t_2 = (__pyx_v_self->__pyx_base._closing != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/stream.pyx":261
 *         if not self._get_write_buffer_size():
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)             # <<<<<<<<<<<<<<
 *             elif self._eof:
 *                 self._shutdown()
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._schedule_call_connection_lost(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/stream.pyx":260
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 *             if self._closing:             # <<<<<<<<<<<<<<
 *                 self._schedule_call_connection_lost(None)
 *             elif self._eof:
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/stream.pyx":262
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 *             elif self._eof:             # <<<<<<<<<<<<<<
 *                 self._shutdown()
 * 
 */
    __pyx_t_2 = (__pyx_v_self->_eof != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/stream.pyx":263
 *                 self._schedule_call_connection_lost(None)
 *             elif self._eof:
 *                 self._shutdown()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _init(self, Loop loop, object protocol, Server server,
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream__shutdown(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/stream.pyx":262
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 *             elif self._eof:             # <<<<<<<<<<<<<<
 *                 self._shutdown()
 * 
 */
    }
    __pyx_L4:;

    /* "uvloop/handles/stream.pyx":259
 *     cdef inline _on_write(self):
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 */
  }

  /* "uvloop/handles/stream.pyx":257
 *             self.close()
 * 
 *     cdef inline _on_write(self):             # <<<<<<<<<<<<<<
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._on_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":265
 *                 self._shutdown()
 * 
 *     cdef inline _init(self, Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                       object waiter):
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__init(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/stream.pyx":268
 *                       object waiter):
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         if protocol is None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":270
 *         self._start_init(loop)
 * 
 *         if protocol is None:             # <<<<<<<<<<<<<<
 *             raise TypeError('protocol is required')
 * 
 */
  __pyx_t_2 = (__pyx_v_protocol == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/stream.pyx":271
 * 
 *         if protocol is None:
 *             raise TypeError('protocol is required')             # <<<<<<<<<<<<<<
 * 
 *         self._set_protocol(protocol)
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(15, 271, __pyx_L1_error)

    /* "uvloop/handles/stream.pyx":270
 *         self._start_init(loop)
 * 
 *         if protocol is None:             # <<<<<<<<<<<<<<
 *             raise TypeError('protocol is required')
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":273
 *             raise TypeError('protocol is required')
 * 
 *         self._set_protocol(protocol)             # <<<<<<<<<<<<<<
 * 
 *         if server is not None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._set_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), __pyx_v_protocol); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":275
 *         self._set_protocol(protocol)
 * 
 *         if server is not None:             # <<<<<<<<<<<<<<
 *             self._set_server(server)
 * 
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_server) != Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":276
 * 
 *         if server is not None:
 *             self._set_server(server)             # <<<<<<<<<<<<<<
 * 
 *         if waiter is not None:
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._set_server(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), __pyx_v_server); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":275
 *         self._set_protocol(protocol)
 * 
 *         if server is not None:             # <<<<<<<<<<<<<<
 *             self._set_server(server)
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":278
 *             self._set_server(server)
 * 
 *         if waiter is not None:             # <<<<<<<<<<<<<<
 *             self._set_waiter(waiter)
 * 
 */
  __pyx_t_2 = (__pyx_v_waiter != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/stream.pyx":279
 * 
 *         if waiter is not None:
 *             self._set_waiter(waiter)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_connect(self, object exc):
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._set_waiter(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":278
 *             self._set_server(server)
 * 
 *         if waiter is not None:             # <<<<<<<<<<<<<<
 *             self._set_waiter(waiter)
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":265
 *                 self._shutdown()
 * 
 *     cdef inline _init(self, Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                       object waiter):
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":281
 *             self._set_waiter(waiter)
 * 
 *     cdef inline _on_connect(self, object exc):             # <<<<<<<<<<<<<<
 *         # Called from __tcp_connect_callback (tcp.pyx) and
 *         # __pipe_connect_callback (pipe.pyx).
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_8UVStream__on_connect(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_on_connect", 0);

  /* "uvloop/handles/stream.pyx":284
 *         # Called from __tcp_connect_callback (tcp.pyx) and
 *         # __pipe_connect_callback (pipe.pyx).
 *         if exc is None:             # <<<<<<<<<<<<<<
 *             self._init_protocol()
 *         else:
 */
  __pyx_t_1 = (__pyx_v_exc == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":285
 *         # __pipe_connect_callback (pipe.pyx).
 *         if exc is None:
 *             self._init_protocol()             # <<<<<<<<<<<<<<
 *         else:
 *             if self._waiter is None or self._waiter.done():
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/stream.pyx":284
 *         # Called from __tcp_connect_callback (tcp.pyx) and
 *         # __pipe_connect_callback (pipe.pyx).
 *         if exc is None:             # <<<<<<<<<<<<<<
 *             self._init_protocol()
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/stream.pyx":287
 *             self._init_protocol()
 *         else:
 *             if self._waiter is None or self._waiter.done():             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, False, "connect failed")
 *             else:
 */
  /*else*/ {
    __pyx_t_1 = (__pyx_v_self->__pyx_base._waiter == Py_None);
    __pyx_t_4 = (__pyx_t_1 != 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 287, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(15, 287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_4;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_2) {

      /* "uvloop/handles/stream.pyx":288
 *         else:
 *             if self._waiter is None or self._waiter.done():
 *                 self._fatal_error(exc, False, "connect failed")             # <<<<<<<<<<<<<<
 *             else:
 *                 self._waiter.set_exception(exc)
 */
      __pyx_t_7.__pyx_n = 1;
      __pyx_t_7.reason = __pyx_kp_u_connect_failed;
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_False, &__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/stream.pyx":287
 *             self._init_protocol()
 *         else:
 *             if self._waiter is None or self._waiter.done():             # <<<<<<<<<<<<<<
 *                 self._fatal_error(exc, False, "connect failed")
 *             else:
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/stream.pyx":290
 *                 self._fatal_error(exc, False, "connect failed")
 *             else:
 *                 self._waiter.set_exception(exc)             # <<<<<<<<<<<<<<
 *                 self._close()
 * 
 */
    /*else*/ {
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._waiter, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_exc);
        __Pyx_GIVEREF(__pyx_v_exc);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_exc);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/stream.pyx":291
 *             else:
 *                 self._waiter.set_exception(exc)
 *                 self._close()             # <<<<<<<<<<<<<<
 * 
 *     # === Public API ===
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L4:;
  }
  __pyx_L3:;

  /* "uvloop/handles/stream.pyx":281
 *             self._set_waiter(waiter)
 * 
 *     cdef inline _on_connect(self, object exc):             # <<<<<<<<<<<<<<
 *         # Called from __tcp_connect_callback (tcp.pyx) and
 *         # __pipe_connect_callback (pipe.pyx).
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVStream._on_connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":295
 *     # === Public API ===
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{} closed={} reading={} {:#x}>'.format(
 *             self.__class__.__name__,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_3__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_2__repr__(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_2__repr__(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/handles/stream.pyx":296
 * 
 *     def __repr__(self):
 *         return '<{} closed={} reading={} {:#x}>'.format(             # <<<<<<<<<<<<<<
 *             self.__class__.__name__,
 *             self._closed,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_closed_reading_x, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/handles/stream.pyx":297
 *     def __repr__(self):
 *         return '<{} closed={} reading={} {:#x}>'.format(
 *             self.__class__.__name__,             # <<<<<<<<<<<<<<
 *             self._closed,
 *             self.__reading,
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/stream.pyx":298
 *         return '<{} closed={} reading={} {:#x}>'.format(
 *             self.__class__.__name__,
 *             self._closed,             # <<<<<<<<<<<<<<
 *             self.__reading,
 *             id(self))
 */
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._closed); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "uvloop/handles/stream.pyx":299
 *             self.__class__.__name__,
 *             self._closed,
 *             self.__reading,             # <<<<<<<<<<<<<<
 *             id(self))
 * 
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->__pyx___reading); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "uvloop/handles/stream.pyx":300
 *             self._closed,
 *             self.__reading,
 *             id(self))             # <<<<<<<<<<<<<<
 * 
 *     def write(self, object buf):
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_self));
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_8 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_7);
  __pyx_t_4 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":295
 *     # === Public API ===
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<{} closed={} reading={} {:#x}>'.format(
 *             self.__class__.__name__,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("uvloop.loop.UVStream.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":302
 *             id(self))
 * 
 *     def write(self, object buf):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_5write(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_5write(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_4write(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), ((PyObject *)__pyx_v_buf));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_4write(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_buf) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("write", 0);

  /* "uvloop/handles/stream.pyx":303
 * 
 *     def write(self, object buf):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self._eof:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":305
 *         self._ensure_alive()
 * 
 *         if self._eof:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Cannot call write() after write_eof()')
 *         if not buf:
 */
  __pyx_t_2 = (__pyx_v_self->_eof != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":306
 * 
 *         if self._eof:
 *             raise RuntimeError('Cannot call write() after write_eof()')             # <<<<<<<<<<<<<<
 *         if not buf:
 *             return
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(15, 306, __pyx_L1_error)

    /* "uvloop/handles/stream.pyx":305
 *         self._ensure_alive()
 * 
 *         if self._eof:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Cannot call write() after write_eof()')
 *         if not buf:
 */
  }

  /* "uvloop/handles/stream.pyx":307
 *         if self._eof:
 *             raise RuntimeError('Cannot call write() after write_eof()')
 *         if not buf:             # <<<<<<<<<<<<<<
 *             return
 *         if self._conn_lost:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_buf); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(15, 307, __pyx_L1_error)
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/stream.pyx":308
 *             raise RuntimeError('Cannot call write() after write_eof()')
 *         if not buf:
 *             return             # <<<<<<<<<<<<<<
 *         if self._conn_lost:
 *             self._conn_lost += 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":307
 *         if self._eof:
 *             raise RuntimeError('Cannot call write() after write_eof()')
 *         if not buf:             # <<<<<<<<<<<<<<
 *             return
 *         if self._conn_lost:
 */
  }

  /* "uvloop/handles/stream.pyx":309
 *         if not buf:
 *             return
 *         if self._conn_lost:             # <<<<<<<<<<<<<<
 *             self._conn_lost += 1
 *             return
 */
  __pyx_t_3 = (__pyx_v_self->__pyx_base._conn_lost != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/stream.pyx":310
 *             return
 *         if self._conn_lost:
 *             self._conn_lost += 1             # <<<<<<<<<<<<<<
 *             return
 *         self._write(buf)
 */
    __pyx_v_self->__pyx_base._conn_lost = (__pyx_v_self->__pyx_base._conn_lost + 1);

    /* "uvloop/handles/stream.pyx":311
 *         if self._conn_lost:
 *             self._conn_lost += 1
 *             return             # <<<<<<<<<<<<<<
 *         self._write(buf)
 *         self._maybe_pause_protocol()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":309
 *         if not buf:
 *             return
 *         if self._conn_lost:             # <<<<<<<<<<<<<<
 *             self._conn_lost += 1
 *             return
 */
  }

  /* "uvloop/handles/stream.pyx":312
 *             self._conn_lost += 1
 *             return
 *         self._write(buf)             # <<<<<<<<<<<<<<
 *         self._maybe_pause_protocol()
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream__write(__pyx_v_self, __pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":313
 *             return
 *         self._write(buf)
 *         self._maybe_pause_protocol()             # <<<<<<<<<<<<<<
 * 
 *     def writelines(self, bufs):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._maybe_pause_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":302
 *             id(self))
 * 
 *     def write(self, object buf):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":315
 *         self._maybe_pause_protocol()
 * 
 *     def writelines(self, bufs):             # <<<<<<<<<<<<<<
 *         # Instead of flattening the buffers into one bytes object,
 *         # we could simply call `self._write` multiple times.  That
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_7writelines(PyObject *__pyx_v_self, PyObject *__pyx_v_bufs); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_7writelines(PyObject *__pyx_v_self, PyObject *__pyx_v_bufs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writelines (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_6writelines(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), ((PyObject *)__pyx_v_bufs));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_6writelines(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self, PyObject *__pyx_v_bufs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("writelines", 0);

  /* "uvloop/handles/stream.pyx":325
 *         # this different behavior may result in uvloop being slower
 *         # than asyncio.
 *         self.write(b''.join(bufs))             # <<<<<<<<<<<<<<
 * 
 *     def write_eof(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyBytes_Join(__pyx_kp_b__34, __pyx_v_bufs); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 325, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":315
 *         self._maybe_pause_protocol()
 * 
 *     def writelines(self, bufs):             # <<<<<<<<<<<<<<
 *         # Instead of flattening the buffers into one bytes object,
 *         # we could simply call `self._write` multiple times.  That
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVStream.writelines", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":327
 *         self.write(b''.join(bufs))
 * 
 *     def write_eof(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_9write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_9write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_eof (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_8write_eof(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_8write_eof(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("write_eof", 0);

  /* "uvloop/handles/stream.pyx":328
 * 
 *     def write_eof(self):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self._eof:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":330
 *         self._ensure_alive()
 * 
 *         if self._eof:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_eof != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":331
 * 
 *         if self._eof:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._eof = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":330
 *         self._ensure_alive()
 * 
 *         if self._eof:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":333
 *             return
 * 
 *         self._eof = 1             # <<<<<<<<<<<<<<
 *         if not self._get_write_buffer_size():
 *             self._shutdown()
 */
  __pyx_v_self->_eof = 1;

  /* "uvloop/handles/stream.pyx":334
 * 
 *         self._eof = 1
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             self._shutdown()
 * 
 */
  __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":335
 *         self._eof = 1
 *         if not self._get_write_buffer_size():
 *             self._shutdown()             # <<<<<<<<<<<<<<
 * 
 *     def can_write_eof(self):
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream__shutdown(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/stream.pyx":334
 * 
 *         self._eof = 1
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             self._shutdown()
 * 
 */
  }

  /* "uvloop/handles/stream.pyx":327
 *         self.write(b''.join(bufs))
 * 
 *     def write_eof(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream.write_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":337
 *             self._shutdown()
 * 
 *     def can_write_eof(self):             # <<<<<<<<<<<<<<
 *         return True
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_11can_write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_11can_write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("can_write_eof (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_10can_write_eof(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_10can_write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("can_write_eof", 0);

  /* "uvloop/handles/stream.pyx":338
 * 
 *     def can_write_eof(self):
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def pause_reading(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "uvloop/handles/stream.pyx":337
 *             self._shutdown()
 * 
 *     def can_write_eof(self):             # <<<<<<<<<<<<<<
 *         return True
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":340
 *         return True
 * 
 *     def pause_reading(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_13pause_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_13pause_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pause_reading (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_12pause_reading(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_12pause_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("pause_reading", 0);

  /* "uvloop/handles/stream.pyx":341
 * 
 *     def pause_reading(self):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self._closing:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":343
 *         self._ensure_alive()
 * 
 *         if self._closing:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base._closing != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":344
 * 
 *         if self._closing:
 *             raise RuntimeError('Cannot pause_reading() when closing')             # <<<<<<<<<<<<<<
 *         if not self._is_reading():
 *             raise RuntimeError('Already paused')
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(15, 344, __pyx_L1_error)

    /* "uvloop/handles/stream.pyx":343
 *         self._ensure_alive()
 * 
 *         if self._closing:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():
 */
  }

  /* "uvloop/handles/stream.pyx":345
 *         if self._closing:
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Already paused')
 *         self._stop_reading()
 */
  __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._is_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":346
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():
 *             raise RuntimeError('Already paused')             # <<<<<<<<<<<<<<
 *         self._stop_reading()
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(15, 346, __pyx_L1_error)

    /* "uvloop/handles/stream.pyx":345
 *         if self._closing:
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Already paused')
 *         self._stop_reading()
 */
  }

  /* "uvloop/handles/stream.pyx":347
 *         if not self._is_reading():
 *             raise RuntimeError('Already paused')
 *         self._stop_reading()             # <<<<<<<<<<<<<<
 * 
 *     def resume_reading(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._stop_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":340
 *         return True
 * 
 *     def pause_reading(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream.pause_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":349
 *         self._stop_reading()
 * 
 *     def resume_reading(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_15resume_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_8UVStream_15resume_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resume_reading (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_8UVStream_14resume_reading(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_8UVStream_14resume_reading(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("resume_reading", 0);

  /* "uvloop/handles/stream.pyx":350
 * 
 *     def resume_reading(self):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self._is_reading():
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":352
 *         self._ensure_alive()
 * 
 *         if self._is_reading():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Not paused')
 *         if self._closing:
 */
  __pyx_t_2 = (((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._is_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":353
 * 
 *         if self._is_reading():
 *             raise RuntimeError('Not paused')             # <<<<<<<<<<<<<<
 *         if self._closing:
 *             return
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(15, 353, __pyx_L1_error)

    /* "uvloop/handles/stream.pyx":352
 *         self._ensure_alive()
 * 
 *         if self._is_reading():             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Not paused')
 *         if self._closing:
 */
  }

  /* "uvloop/handles/stream.pyx":354
 *         if self._is_reading():
 *             raise RuntimeError('Not paused')
 *         if self._closing:             # <<<<<<<<<<<<<<
 *             return
 *         self._start_reading()
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base._closing != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/stream.pyx":355
 *             raise RuntimeError('Not paused')
 *         if self._closing:
 *             return             # <<<<<<<<<<<<<<
 *         self._start_reading()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":354
 *         if self._is_reading():
 *             raise RuntimeError('Not paused')
 *         if self._closing:             # <<<<<<<<<<<<<<
 *             return
 *         self._start_reading()
 */
  }

  /* "uvloop/handles/stream.pyx":356
 *         if self._closing:
 *             return
 *         self._start_reading()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._start_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/stream.pyx":349
 *         self._stop_reading()
 * 
 *     def resume_reading(self):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStream.resume_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/stream.pyx":359
 * 
 * 
 * cdef void __uv_stream_on_shutdown(uv.uv_shutdown_t* req,             # <<<<<<<<<<<<<<
 *                                   int status) with gil:
 * 
 */

static void __pyx_f_6uvloop_4loop___uv_stream_on_shutdown(uv_shutdown_t *__pyx_v_req, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_stream = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_9;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_stream_on_shutdown", 0);

  /* "uvloop/handles/stream.pyx":364
 *     # callback for uv_shutdown
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         aio_logger.error(
 *             'UVStream.shutdown callback called with NULL req.data, status=%r',
 */
  __pyx_t_1 = ((__pyx_v_req->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":365
 * 
 *     if req.data is NULL:
 *         aio_logger.error(             # <<<<<<<<<<<<<<
 *             'UVStream.shutdown callback called with NULL req.data, status=%r',
 *             status)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/stream.pyx":367
 *         aio_logger.error(
 *             'UVStream.shutdown callback called with NULL req.data, status=%r',
 *             status)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_u_UVStream_shutdown_callback_calle);
    __Pyx_GIVEREF(__pyx_kp_u_UVStream_shutdown_callback_calle);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_u_UVStream_shutdown_callback_calle);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":368
 *             'UVStream.shutdown callback called with NULL req.data, status=%r',
 *             status)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef UVStream stream = <UVStream> req.data
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":364
 *     # callback for uv_shutdown
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         aio_logger.error(
 *             'UVStream.shutdown callback called with NULL req.data, status=%r',
 */
  }

  /* "uvloop/handles/stream.pyx":370
 *         return
 * 
 *     cdef UVStream stream = <UVStream> req.data             # <<<<<<<<<<<<<<
 * 
 *     if status < 0 and status != uv.UV_ECANCELED:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_stream = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":372
 *     cdef UVStream stream = <UVStream> req.data
 * 
 *     if status < 0 and status != uv.UV_ECANCELED:             # <<<<<<<<<<<<<<
 *         # From libuv source code:
 *         #     The ECANCELED error code is a lie, the shutdown(2) syscall is a
 */
  __pyx_t_8 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_8) {
  } else {
    __pyx_t_1 = __pyx_t_8;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_8 = ((__pyx_v_status != UV_ECANCELED) != 0);
  __pyx_t_1 = __pyx_t_8;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":382
 *             stream._loop._debug_stream_shutdown_errors_total += 1
 * 
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.shutdown callback")
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":383
 * 
 *         exc = convert_error(status)
 *         stream._fatal_error(exc, False,             # <<<<<<<<<<<<<<
 *             "error status in uv_stream_t.shutdown callback")
 *         return
 */
    __pyx_t_9.__pyx_n = 1;
    __pyx_t_9.reason = __pyx_kp_u_error_status_in_uv_stream_t_shut;
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_stream->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_stream), __pyx_v_exc, Py_False, &__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":385
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.shutdown callback")
 *         return             # <<<<<<<<<<<<<<
 * 
 * 
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":372
 *     cdef UVStream stream = <UVStream> req.data
 * 
 *     if status < 0 and status != uv.UV_ECANCELED:             # <<<<<<<<<<<<<<
 *         # From libuv source code:
 *         #     The ECANCELED error code is a lie, the shutdown(2) syscall is a
 */
  }

  /* "uvloop/handles/stream.pyx":359
 * 
 * 
 * cdef void __uv_stream_on_shutdown(uv.uv_shutdown_t* req,             # <<<<<<<<<<<<<<
 *                                   int status) with gil:
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_stream_on_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_stream);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/stream.pyx":388
 * 
 * 
 * cdef void __uv_stream_on_read(uv.uv_stream_t* stream,             # <<<<<<<<<<<<<<
 *                               ssize_t nread,
 *                               const uv.uv_buf_t* buf) with gil:
 */

static void __pyx_f_6uvloop_4loop___uv_stream_on_read(uv_stream_t *__pyx_v_stream, Py_ssize_t __pyx_v_nread, CYTHON_UNUSED uv_buf_t const *__pyx_v_buf) {
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_sc = 0;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_18;
  char const *__pyx_t_19;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_stream_on_read", 0);

  /* "uvloop/handles/stream.pyx":395
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>stream,
 *                             "UVStream read callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_stream), ((char const *)"UVStream read callback")) == 0) != 0);

  /* "uvloop/handles/stream.pyx":394
 *     # callback for uv_read_start
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>stream,             # <<<<<<<<<<<<<<
 *                             "UVStream read callback") == 0:
 *         return
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":396
 *     if __ensure_handle_data(<uv.uv_handle_t*>stream,
 *                             "UVStream read callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":394
 *     # callback for uv_read_start
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>stream,             # <<<<<<<<<<<<<<
 *                             "UVStream read callback") == 0:
 *         return
 */
  }

  /* "uvloop/handles/stream.pyx":399
 * 
 *     cdef:
 *         UVStream sc = <UVStream>stream.data             # <<<<<<<<<<<<<<
 *         Loop loop = sc._loop
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_stream->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_sc = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":400
 *     cdef:
 *         UVStream sc = <UVStream>stream.data
 *         Loop loop = sc._loop             # <<<<<<<<<<<<<<
 * 
 *     # It's OK to free the buffer early, since nothing will
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":404
 *     # It's OK to free the buffer early, since nothing will
 *     # be able to touch it until this method is done.
 *     __loop_free_buffer(loop)             # <<<<<<<<<<<<<<
 * 
 *     if sc._closed:
 */
  __pyx_f_6uvloop_4loop___loop_free_buffer(__pyx_v_loop);

  /* "uvloop/handles/stream.pyx":406
 *     __loop_free_buffer(loop)
 * 
 *     if sc._closed:             # <<<<<<<<<<<<<<
 *         # The stream was closed, there is no reason to
 *         # do any work now.
 */
  __pyx_t_1 = (__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base._closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":409
 *         # The stream was closed, there is no reason to
 *         # do any work now.
 *         sc.__reading_stopped()  # Just in case.             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVStream___reading_stopped(__pyx_v_sc); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":410
 *         # do any work now.
 *         sc.__reading_stopped()  # Just in case.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if nread == uv.UV_EOF:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":406
 *     __loop_free_buffer(loop)
 * 
 *     if sc._closed:             # <<<<<<<<<<<<<<
 *         # The stream was closed, there is no reason to
 *         # do any work now.
 */
  }

  /* "uvloop/handles/stream.pyx":412
 *         return
 * 
 *     if nread == uv.UV_EOF:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     The callee is responsible for stopping closing the stream
 */
  __pyx_t_1 = ((__pyx_v_nread == UV_EOF) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":417
 *         #     when an error happens by calling uv_read_stop() or uv_close().
 *         #     Trying to read from the stream again is undefined.
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 loop._debug_stream_read_eof_total += 1
 */
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_5);
        /*try:*/ {

          /* "uvloop/handles/stream.pyx":421
 *                 loop._debug_stream_read_eof_total += 1
 * 
 *             sc._stop_reading()             # <<<<<<<<<<<<<<
 *             sc._on_eof()
 *         except BaseException as ex:
 */
          __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._stop_reading(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_sc)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 421, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "uvloop/handles/stream.pyx":422
 * 
 *             sc._stop_reading()
 *             sc._on_eof()             # <<<<<<<<<<<<<<
 *         except BaseException as ex:
 *             IF DEBUG:
 */
          __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVStream__on_eof(__pyx_v_sc); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 422, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "uvloop/handles/stream.pyx":417
 *         #     when an error happens by calling uv_read_stop() or uv_close().
 *         #     Trying to read from the stream again is undefined.
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 loop._debug_stream_read_eof_total += 1
 */
        }
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L16_try_end;
        __pyx_L9_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "uvloop/handles/stream.pyx":423
 *             sc._stop_reading()
 *             sc._on_eof()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 loop._debug_stream_read_eof_cb_errors_total += 1
 */
        __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_6) {
          __Pyx_AddTraceback("uvloop.loop.__uv_stream_on_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(15, 423, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_7);
          __pyx_v_ex = __pyx_t_7;
          /*try:*/ {

            /* "uvloop/handles/stream.pyx":427
 *                 loop._debug_stream_read_eof_cb_errors_total += 1
 * 
 *             sc._error(ex, False)             # <<<<<<<<<<<<<<
 *         finally:
 *             return
 */
            __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_sc), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 427, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }

          /* "uvloop/handles/stream.pyx":423
 *             sc._stop_reading()
 *             sc._on_eof()
 *         except BaseException as ex:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 loop._debug_stream_read_eof_cb_errors_total += 1
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
              goto __pyx_L23;
            }
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __pyx_L22_error:;
              __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
              __Pyx_PyThreadState_assign
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
              __Pyx_XGOTREF(__pyx_t_12);
              __Pyx_XGOTREF(__pyx_t_13);
              __Pyx_XGOTREF(__pyx_t_14);
              __Pyx_XGOTREF(__pyx_t_15);
              __Pyx_XGOTREF(__pyx_t_16);
              __Pyx_XGOTREF(__pyx_t_17);
              __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_ex);
                __pyx_v_ex = NULL;
              }
              __Pyx_PyThreadState_assign
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_15);
                __Pyx_XGIVEREF(__pyx_t_16);
                __Pyx_XGIVEREF(__pyx_t_17);
                __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
              }
              __Pyx_XGIVEREF(__pyx_t_12);
              __Pyx_XGIVEREF(__pyx_t_13);
              __Pyx_XGIVEREF(__pyx_t_14);
              __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
              __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
              __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
              goto __pyx_L11_except_error;
            }
            __pyx_L23:;
          }
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L10_exception_handled;
        }
        goto __pyx_L11_except_error;
        __pyx_L11_except_error:;

        /* "uvloop/handles/stream.pyx":417
 *         #     when an error happens by calling uv_read_stop() or uv_close().
 *         #     Trying to read from the stream again is undefined.
 *         try:             # <<<<<<<<<<<<<<
 *             IF DEBUG:
 *                 loop._debug_stream_read_eof_total += 1
 */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        goto __pyx_L7_error;
        __pyx_L10_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
        __pyx_L16_try_end:;
      }
    }

    /* "uvloop/handles/stream.pyx":429
 *             sc._error(ex, False)
 *         finally:
 *             return             # <<<<<<<<<<<<<<
 * 
 *     if nread == 0:
 */
    /*finally:*/ {
      /*normal exit:*/{
        goto __pyx_L0;
      }
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __pyx_L7_error:;
        __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_17);
        __Pyx_XGOTREF(__pyx_t_16);
        __Pyx_XGOTREF(__pyx_t_15);
        {
          goto __pyx_L28_return;
        }
        __pyx_L28_return:;
        __Pyx_PyThreadState_assign
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
        goto __pyx_L0;
      }
    }

    /* "uvloop/handles/stream.pyx":412
 *         return
 * 
 *     if nread == uv.UV_EOF:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     The callee is responsible for stopping closing the stream
 */
  }

  /* "uvloop/handles/stream.pyx":431
 *             return
 * 
 *     if nread == 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     nread might be 0, which does not indicate an error or EOF.
 */
  __pyx_t_1 = ((__pyx_v_nread == 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":435
 *         #     nread might be 0, which does not indicate an error or EOF.
 *         #     This is equivalent to EAGAIN or EWOULDBLOCK under read(2).
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if nread < 0:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":431
 *             return
 * 
 *     if nread == 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     nread might be 0, which does not indicate an error or EOF.
 */
  }

  /* "uvloop/handles/stream.pyx":437
 *         return
 * 
 *     if nread < 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     The callee is responsible for stopping closing the stream
 */
  __pyx_t_1 = ((__pyx_v_nread < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":450
 *             loop._debug_stream_read_errors_total += 1
 * 
 *         if sc.__read_error_close:             # <<<<<<<<<<<<<<
 *             # Used for getting notified when a pipe is closed.
 *             # See WriteUnixTransport for the explanation.
 */
    __pyx_t_1 = (__pyx_v_sc->__pyx___read_error_close != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/stream.pyx":453
 *             # Used for getting notified when a pipe is closed.
 *             # See WriteUnixTransport for the explanation.
 *             sc._on_eof()             # <<<<<<<<<<<<<<
 *             return
 * 
 */
      __pyx_t_8 = __pyx_f_6uvloop_4loop_8UVStream__on_eof(__pyx_v_sc); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 453, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "uvloop/handles/stream.pyx":454
 *             # See WriteUnixTransport for the explanation.
 *             sc._on_eof()
 *             return             # <<<<<<<<<<<<<<
 * 
 *         exc = convert_error(nread)
 */
      goto __pyx_L0;

      /* "uvloop/handles/stream.pyx":450
 *             loop._debug_stream_read_errors_total += 1
 * 
 *         if sc.__read_error_close:             # <<<<<<<<<<<<<<
 *             # Used for getting notified when a pipe is closed.
 *             # See WriteUnixTransport for the explanation.
 */
    }

    /* "uvloop/handles/stream.pyx":456
 *             return
 * 
 *         exc = convert_error(nread)             # <<<<<<<<<<<<<<
 *         sc._fatal_error(exc, False,
 *             "error status in uv_stream_t.read callback")
 */
    __pyx_t_8 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_nread); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_v_exc = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "uvloop/handles/stream.pyx":457
 * 
 *         exc = convert_error(nread)
 *         sc._fatal_error(exc, False,             # <<<<<<<<<<<<<<
 *             "error status in uv_stream_t.read callback")
 *         return
 */
    __pyx_t_18.__pyx_n = 1;
    __pyx_t_18.reason = __pyx_kp_u_error_status_in_uv_stream_t_read;
    __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_sc), __pyx_v_exc, Py_False, &__pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "uvloop/handles/stream.pyx":459
 *         sc._fatal_error(exc, False,
 *             "error status in uv_stream_t.read callback")
 *         return             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":437
 *         return
 * 
 *     if nread < 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #     The callee is responsible for stopping closing the stream
 */
  }

  /* "uvloop/handles/stream.pyx":461
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_stream_read_cb_total += 1
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
    __Pyx_XGOTREF(__pyx_t_15);
    __Pyx_XGOTREF(__pyx_t_16);
    __Pyx_XGOTREF(__pyx_t_17);
    /*try:*/ {

      /* "uvloop/handles/stream.pyx":465
 *             loop._debug_stream_read_cb_total += 1
 * 
 *         sc._on_read(loop._recv_buffer[:nread])             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         IF DEBUG:
 */
      __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_loop->_recv_buffer) + 0, __pyx_v_nread - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 465, __pyx_L33_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_7 = __pyx_f_6uvloop_4loop_8UVStream__on_read(__pyx_v_sc, ((PyObject*)__pyx_t_8)); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 465, __pyx_L33_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/stream.pyx":461
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_stream_read_cb_total += 1
 */
    }
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    goto __pyx_L40_try_end;
    __pyx_L33_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "uvloop/handles/stream.pyx":466
 * 
 *         sc._on_read(loop._recv_buffer[:nread])
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_stream_read_cb_errors_total += 1
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("uvloop.loop.__uv_stream_on_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_2) < 0) __PYX_ERR(15, 466, __pyx_L35_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __pyx_v_exc = __pyx_t_8;
      /*try:*/ {

        /* "uvloop/handles/stream.pyx":470
 *             loop._debug_stream_read_cb_errors_total += 1
 * 
 *         sc._error(exc, False)             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_sc->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_sc), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 470, __pyx_L46_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/stream.pyx":466
 * 
 *         sc._on_read(loop._recv_buffer[:nread])
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_stream_read_cb_errors_total += 1
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L47;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L46_error:;
          __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_12);
          __pyx_t_10 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          }
          __Pyx_XGIVEREF(__pyx_t_3);
          __Pyx_XGIVEREF(__pyx_t_4);
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
          __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0;
          __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_19;
          goto __pyx_L35_except_error;
        }
        __pyx_L47:;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L34_exception_handled;
    }
    goto __pyx_L35_except_error;
    __pyx_L35_except_error:;

    /* "uvloop/handles/stream.pyx":461
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             loop._debug_stream_read_cb_total += 1
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_15);
    __Pyx_XGIVEREF(__pyx_t_16);
    __Pyx_XGIVEREF(__pyx_t_17);
    __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
    goto __pyx_L1_error;
    __pyx_L34_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_15);
    __Pyx_XGIVEREF(__pyx_t_16);
    __Pyx_XGIVEREF(__pyx_t_17);
    __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
    __pyx_L40_try_end:;
  }

  /* "uvloop/handles/stream.pyx":388
 * 
 * 
 * cdef void __uv_stream_on_read(uv.uv_stream_t* stream,             # <<<<<<<<<<<<<<
 *                               ssize_t nread,
 *                               const uv.uv_buf_t* buf) with gil:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_stream_on_read", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sc);
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/stream.pyx":473
 * 
 * 
 * cdef void __uv_stream_on_write(uv.uv_write_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     # callback for uv_write
 * 
 */

static void __pyx_f_6uvloop_4loop___uv_stream_on_write(uv_write_t *__pyx_v_req, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_v_ctx = 0;
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_stream = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_stream_on_write", 0);

  /* "uvloop/handles/stream.pyx":476
 *     # callback for uv_write
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen as:
 *         #    - _StreamWriteContext does an extra INCREF in its 'init()'
 */
  __pyx_t_1 = ((__pyx_v_req->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":480
 *         #    - _StreamWriteContext does an extra INCREF in its 'init()'
 *         #    - _StreamWriteContext holds a ref to the relevant UVStream
 *         aio_logger.error(             # <<<<<<<<<<<<<<
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/stream.pyx":482
 *         aio_logger.error(
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_u_UVStream_write_callback_called_w);
    __Pyx_GIVEREF(__pyx_kp_u_UVStream_write_callback_called_w);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_u_UVStream_write_callback_called_w);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":483
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":476
 *     # callback for uv_write
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen as:
 *         #    - _StreamWriteContext does an extra INCREF in its 'init()'
 */
  }

  /* "uvloop/handles/stream.pyx":486
 * 
 *     cdef:
 *         _StreamWriteContext ctx = <_StreamWriteContext> req.data             # <<<<<<<<<<<<<<
 *         UVStream stream = <UVStream>ctx.stream
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":487
 *     cdef:
 *         _StreamWriteContext ctx = <_StreamWriteContext> req.data
 *         UVStream stream = <UVStream>ctx.stream             # <<<<<<<<<<<<<<
 * 
 *     ctx.close()
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_ctx->stream);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_stream = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":489
 *         UVStream stream = <UVStream>ctx.stream
 * 
 *     ctx.close()             # <<<<<<<<<<<<<<
 * 
 *     if stream._closed:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext *)__pyx_v_ctx->__pyx_vtab)->close(__pyx_v_ctx); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/stream.pyx":491
 *     ctx.close()
 * 
 *     if stream._closed:             # <<<<<<<<<<<<<<
 *         # The stream was closed, there is nothing to do.
 *         # Even if there is an error, like EPIPE, there
 */
  __pyx_t_1 = (__pyx_v_stream->__pyx_base.__pyx_base.__pyx_base._closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":495
 *         # Even if there is an error, like EPIPE, there
 *         # is no reason to report it.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":491
 *     ctx.close()
 * 
 *     if stream._closed:             # <<<<<<<<<<<<<<
 *         # The stream was closed, there is nothing to do.
 *         # Even if there is an error, like EPIPE, there
 */
  }

  /* "uvloop/handles/stream.pyx":497
 *         return
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_write_errors_total += 1
 */
  __pyx_t_1 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/stream.pyx":501
 *             stream._loop._debug_stream_write_errors_total += 1
 * 
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.write callback")
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":502
 * 
 *         exc = convert_error(status)
 *         stream._fatal_error(exc, False,             # <<<<<<<<<<<<<<
 *             "error status in uv_stream_t.write callback")
 *         return
 */
    __pyx_t_8.__pyx_n = 1;
    __pyx_t_8.reason = __pyx_kp_u_error_status_in_uv_stream_t_writ;
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_stream->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_stream), __pyx_v_exc, Py_False, &__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":504
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.write callback")
 *         return             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    goto __pyx_L0;

    /* "uvloop/handles/stream.pyx":497
 *         return
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_write_errors_total += 1
 */
  }

  /* "uvloop/handles/stream.pyx":506
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_write()
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
    __Pyx_XGOTREF(__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_10);
    __Pyx_XGOTREF(__pyx_t_11);
    /*try:*/ {

      /* "uvloop/handles/stream.pyx":507
 * 
 *     try:
 *         stream._on_write()             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         IF DEBUG:
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVStream__on_write(__pyx_v_stream); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 507, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/stream.pyx":506
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_write()
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/stream.pyx":508
 *     try:
 *         stream._on_write()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_write_cb_errors_total += 1
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("uvloop.loop.__uv_stream_on_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_7) < 0) __PYX_ERR(15, 508, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_exc = __pyx_t_3;
      /*try:*/ {

        /* "uvloop/handles/stream.pyx":512
 *             stream._loop._debug_stream_write_cb_errors_total += 1
 * 
 *         stream._error(exc, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_stream->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_stream), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 512, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "uvloop/handles/stream.pyx":508
 *     try:
 *         stream._on_write()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_write_cb_errors_total += 1
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L20;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L19_error:;
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
          }
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
          __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
          goto __pyx_L8_except_error;
        }
        __pyx_L20:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_exception_handled;
    }
    goto __pyx_L8_except_error;
    __pyx_L8_except_error:;

    /* "uvloop/handles/stream.pyx":506
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_write()
 *     except BaseException as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_XGIVEREF(__pyx_t_11);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_XGIVEREF(__pyx_t_11);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
    __pyx_L13_try_end:;
  }

  /* "uvloop/handles/stream.pyx":473
 * 
 * 
 * cdef void __uv_stream_on_write(uv.uv_write_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     # callback for uv_write
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_stream_on_write", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XDECREF((PyObject *)__pyx_v_stream);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/streamserver.pyx":4
 * cdef class UVStreamServer(UVSocketHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.opened = 0
 *         self._server = None
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_14UVStreamServer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_14UVStreamServer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_14UVStreamServer___cinit__(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_14UVStreamServer___cinit__(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/streamserver.pyx":5
 * 
 *     def __cinit__(self):
 *         self.opened = 0             # <<<<<<<<<<<<<<
 *         self._server = None
 *         self.ssl = None
 */
  __pyx_v_self->opened = 0;

  /* "uvloop/handles/streamserver.pyx":6
 *     def __cinit__(self):
 *         self.opened = 0
 *         self._server = None             # <<<<<<<<<<<<<<
 *         self.ssl = None
 *         self.protocol_factory = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
  __pyx_v_self->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None);

  /* "uvloop/handles/streamserver.pyx":7
 *         self.opened = 0
 *         self._server = None
 *         self.ssl = None             # <<<<<<<<<<<<<<
 *         self.protocol_factory = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->ssl);
  __Pyx_DECREF(__pyx_v_self->ssl);
  __pyx_v_self->ssl = Py_None;

  /* "uvloop/handles/streamserver.pyx":8
 *         self._server = None
 *         self.ssl = None
 *         self.protocol_factory = None             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _init(self, Loop loop, object protocol_factory,
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->protocol_factory);
  __Pyx_DECREF(__pyx_v_self->protocol_factory);
  __pyx_v_self->protocol_factory = Py_None;

  /* "uvloop/handles/streamserver.pyx":4
 * cdef class UVStreamServer(UVSocketHandle):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.opened = 0
 *         self._server = None
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":10
 *         self.protocol_factory = None
 * 
 *     cdef inline _init(self, Loop loop, object protocol_factory,             # <<<<<<<<<<<<<<
 *                       Server server, object ssl):
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__init(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/streamserver.pyx":13
 *                       Server server, object ssl):
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError(
 *                 'ssl is expected to be None or an instance of '
 */
  __pyx_t_2 = (__pyx_v_ssl != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __pyx_v_6uvloop_4loop_ssl_SSLContext;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_ssl, __pyx_t_4); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(16, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/streamserver.pyx":16
 *             raise TypeError(
 *                 'ssl is expected to be None or an instance of '
 *                 'ssl.SSLContext, got {!r}'.format(ssl))             # <<<<<<<<<<<<<<
 *         self.ssl = ssl
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_ssl_is_expected_to_be_None_or_an, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_ssl); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 16, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 16, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_ssl);
      __Pyx_GIVEREF(__pyx_v_ssl);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_ssl);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 16, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/streamserver.pyx":14
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 *             raise TypeError(             # <<<<<<<<<<<<<<
 *                 'ssl is expected to be None or an instance of '
 *                 'ssl.SSLContext, got {!r}'.format(ssl))
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(16, 14, __pyx_L1_error)

    /* "uvloop/handles/streamserver.pyx":13
 *                       Server server, object ssl):
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):             # <<<<<<<<<<<<<<
 *             raise TypeError(
 *                 'ssl is expected to be None or an instance of '
 */
  }

  /* "uvloop/handles/streamserver.pyx":17
 *                 'ssl is expected to be None or an instance of '
 *                 'ssl.SSLContext, got {!r}'.format(ssl))
 *         self.ssl = ssl             # <<<<<<<<<<<<<<
 * 
 *         self._start_init(loop)
 */
  __Pyx_INCREF(__pyx_v_ssl);
  __Pyx_GIVEREF(__pyx_v_ssl);
  __Pyx_GOTREF(__pyx_v_self->ssl);
  __Pyx_DECREF(__pyx_v_self->ssl);
  __pyx_v_self->ssl = __pyx_v_ssl;

  /* "uvloop/handles/streamserver.pyx":19
 *         self.ssl = ssl
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 *         self.protocol_factory = protocol_factory
 *         self._server = server
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/handles/streamserver.pyx":20
 * 
 *         self._start_init(loop)
 *         self.protocol_factory = protocol_factory             # <<<<<<<<<<<<<<
 *         self._server = server
 * 
 */
  __Pyx_INCREF(__pyx_v_protocol_factory);
  __Pyx_GIVEREF(__pyx_v_protocol_factory);
  __Pyx_GOTREF(__pyx_v_self->protocol_factory);
  __Pyx_DECREF(__pyx_v_self->protocol_factory);
  __pyx_v_self->protocol_factory = __pyx_v_protocol_factory;

  /* "uvloop/handles/streamserver.pyx":21
 *         self._start_init(loop)
 *         self.protocol_factory = protocol_factory
 *         self._server = server             # <<<<<<<<<<<<<<
 * 
 *     cdef inline listen(self, int backlog):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_server));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_server));
  __Pyx_GOTREF(__pyx_v_self->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
  __pyx_v_self->_server = __pyx_v_server;

  /* "uvloop/handles/streamserver.pyx":10
 *         self.protocol_factory = None
 * 
 *     cdef inline _init(self, Loop loop, object protocol_factory,             # <<<<<<<<<<<<<<
 *                       Server server, object ssl):
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":23
 *         self._server = server
 * 
 *     cdef inline listen(self, int backlog):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, int __pyx_v_backlog) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("listen", 0);

  /* "uvloop/handles/streamserver.pyx":25
 *     cdef inline listen(self, int backlog):
 *         cdef int err
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if self.protocol_factory is None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":27
 *         self._ensure_alive()
 * 
 *         if self.protocol_factory is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unable to listen(); no protocol_factory')
 * 
 */
  __pyx_t_2 = (__pyx_v_self->protocol_factory == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/streamserver.pyx":28
 * 
 *         if self.protocol_factory is None:
 *             raise RuntimeError('unable to listen(); no protocol_factory')             # <<<<<<<<<<<<<<
 * 
 *         if self.opened != 1:
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(16, 28, __pyx_L1_error)

    /* "uvloop/handles/streamserver.pyx":27
 *         self._ensure_alive()
 * 
 *         if self.protocol_factory is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unable to listen(); no protocol_factory')
 * 
 */
  }

  /* "uvloop/handles/streamserver.pyx":30
 *             raise RuntimeError('unable to listen(); no protocol_factory')
 * 
 *         if self.opened != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unopened TCPServer')
 * 
 */
  __pyx_t_3 = ((__pyx_v_self->opened != 1) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/streamserver.pyx":31
 * 
 *         if self.opened != 1:
 *             raise RuntimeError('unopened TCPServer')             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_listen(<uv.uv_stream_t*> self._handle,
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(16, 31, __pyx_L1_error)

    /* "uvloop/handles/streamserver.pyx":30
 *             raise RuntimeError('unable to listen(); no protocol_factory')
 * 
 *         if self.opened != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('unopened TCPServer')
 * 
 */
  }

  /* "uvloop/handles/streamserver.pyx":33
 *             raise RuntimeError('unopened TCPServer')
 * 
 *         err = uv.uv_listen(<uv.uv_stream_t*> self._handle,             # <<<<<<<<<<<<<<
 *                            backlog,
 *                            __uv_streamserver_on_listen)
 */
  __pyx_v_err = uv_listen(((uv_stream_t *)__pyx_v_self->__pyx_base.__pyx_base._handle), __pyx_v_backlog, __pyx_f_6uvloop_4loop___uv_streamserver_on_listen);

  /* "uvloop/handles/streamserver.pyx":36
 *                            backlog,
 *                            __uv_streamserver_on_listen)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_3 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/streamserver.pyx":37
 *                            __uv_streamserver_on_listen)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":38
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":39
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _on_listen(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/streamserver.pyx":36
 *                            backlog,
 *                            __uv_streamserver_on_listen)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/streamserver.pyx":23
 *         self._server = server
 * 
 *     cdef inline listen(self, int backlog):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer.listen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":41
 *             return
 * 
 *     cdef inline _on_listen(self):             # <<<<<<<<<<<<<<
 *         cdef UVStream slient
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__on_listen(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self) {
  PyObject *__pyx_v_protocol = NULL;
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_client = NULL;
  PyObject *__pyx_v_waiter = NULL;
  PyObject *__pyx_v_ssl_protocol = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("_on_listen", 0);

  /* "uvloop/handles/streamserver.pyx":44
 *         cdef UVStream slient
 * 
 *         protocol = self.protocol_factory()             # <<<<<<<<<<<<<<
 * 
 *         if self.ssl is None:
 */
  __Pyx_INCREF(__pyx_v_self->protocol_factory);
  __pyx_t_2 = __pyx_v_self->protocol_factory; __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 44, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 44, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_protocol = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":46
 *         protocol = self.protocol_factory()
 * 
 *         if self.ssl is None:             # <<<<<<<<<<<<<<
 *             client = self._make_new_transport(protocol, None)
 * 
 */
  __pyx_t_4 = (__pyx_v_self->ssl == Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "uvloop/handles/streamserver.pyx":47
 * 
 *         if self.ssl is None:
 *             client = self._make_new_transport(protocol, None)             # <<<<<<<<<<<<<<
 * 
 *         else:
 */
    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_make_new_transport(__pyx_v_self, __pyx_v_protocol, Py_None)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_client = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":46
 *         protocol = self.protocol_factory()
 * 
 *         if self.ssl is None:             # <<<<<<<<<<<<<<
 *             client = self._make_new_transport(protocol, None)
 * 
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/streamserver.pyx":50
 * 
 *         else:
 *             waiter = self._loop._new_future()             # <<<<<<<<<<<<<<
 * 
 *             ssl_protocol = aio_SSLProtocol(
 */
  /*else*/ {
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self->__pyx_base.__pyx_base._loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_waiter = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":56
 *                 waiter,
 *                 True,  # server_side
 *                 None)  # server_hostname             # <<<<<<<<<<<<<<
 * 
 *             client = self._make_new_transport(ssl_protocol, None)
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_SSLProtocol);
    __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_SSLProtocol; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop));
    __Pyx_INCREF(__pyx_v_protocol);
    __Pyx_GIVEREF(__pyx_v_protocol);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_protocol);
    __Pyx_INCREF(__pyx_v_self->ssl);
    __Pyx_GIVEREF(__pyx_v_self->ssl);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_self->ssl);
    __Pyx_INCREF(__pyx_v_waiter);
    __Pyx_GIVEREF(__pyx_v_waiter);
    PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_waiter);
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, Py_True);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_6, Py_None);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_ssl_protocol = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":58
 *                 None)  # server_hostname
 * 
 *             client = self._make_new_transport(ssl_protocol, None)             # <<<<<<<<<<<<<<
 * 
 *             waiter.add_done_callback(
 */
    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_make_new_transport(__pyx_v_self, __pyx_v_ssl_protocol, Py_None)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_client = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":60
 *             client = self._make_new_transport(ssl_protocol, None)
 * 
 *             waiter.add_done_callback(             # <<<<<<<<<<<<<<
 *                 ft_partial(self.__on_ssl_connected, client))
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/handles/streamserver.pyx":61
 * 
 *             waiter.add_done_callback(
 *                 ft_partial(self.__on_ssl_connected, client))             # <<<<<<<<<<<<<<
 * 
 *         client._accept(<UVStream>self)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_on_ssl_connected); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_ft_partial);
    __pyx_t_8 = __pyx_v_6uvloop_4loop_ft_partial; __pyx_t_9 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_10 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(16, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__pyx_t_9) {
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_client));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_client));
    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, ((PyObject *)__pyx_v_client));
    __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 60, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(16, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/streamserver.pyx":63
 *                 ft_partial(self.__on_ssl_connected, client))
 * 
 *         client._accept(<UVStream>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_8UVStream__accept(__pyx_v_client, ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":41
 *             return
 * 
 *     cdef inline _on_listen(self):             # <<<<<<<<<<<<<<
 *         cdef UVStream slient
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer._on_listen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_protocol);
  __Pyx_XDECREF((PyObject *)__pyx_v_client);
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_XDECREF(__pyx_v_ssl_protocol);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":65
 *         client._accept(<UVStream>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Overload UVHandle._fatal_error
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__fatal_error(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_throw, struct __pyx_opt_args_6uvloop_4loop_14UVStreamServer__fatal_error *__pyx_optional_args) {
  PyObject *__pyx_v_reason = ((PyObject *)Py_None);
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  __Pyx_RefNannySetupContext("_fatal_error", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_reason = __pyx_optional_args->reason;
    }
  }

  /* "uvloop/handles/streamserver.pyx":68
 *         # Overload UVHandle._fatal_error
 * 
 *         self._close()             # <<<<<<<<<<<<<<
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":70
 *         self._close()
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __Pyx_INCREF(__pyx_builtin_BrokenPipeError);
  __pyx_t_1 = __pyx_builtin_BrokenPipeError;

  /* "uvloop/handles/streamserver.pyx":71
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,             # <<<<<<<<<<<<<<
 *                                 ConnectionAbortedError)):
 * 
 */
  __Pyx_INCREF(__pyx_builtin_ConnectionResetError);
  __pyx_t_2 = __pyx_builtin_ConnectionResetError;

  /* "uvloop/handles/streamserver.pyx":72
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):             # <<<<<<<<<<<<<<
 * 
 *             if throw or self._loop is None:
 */
  __Pyx_INCREF(__pyx_builtin_ConnectionAbortedError);
  __pyx_t_3 = __pyx_builtin_ConnectionAbortedError;

  /* "uvloop/handles/streamserver.pyx":70
 *         self._close()
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __pyx_t_5 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_1); 
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }

  /* "uvloop/handles/streamserver.pyx":71
 * 
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,             # <<<<<<<<<<<<<<
 *                                 ConnectionAbortedError)):
 * 
 */
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_2); 
  __pyx_t_5 = (__pyx_t_6 != 0);
  if (!__pyx_t_5) {
  } else {
    __pyx_t_4 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }

  /* "uvloop/handles/streamserver.pyx":72
 *         if not isinstance(exc, (BrokenPipeError,
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):             # <<<<<<<<<<<<<<
 * 
 *             if throw or self._loop is None:
 */
  __pyx_t_5 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_3); 
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_4 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":70
 *         self._close()
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  __pyx_t_6 = ((!(__pyx_t_4 != 0)) != 0);
  if (__pyx_t_6) {

    /* "uvloop/handles/streamserver.pyx":74
 *                                 ConnectionAbortedError)):
 * 
 *             if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_throw); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(16, 74, __pyx_L1_error)
    if (!__pyx_t_4) {
    } else {
      __pyx_t_6 = __pyx_t_4;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_4 = (((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop) == Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    __pyx_t_6 = __pyx_t_5;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_6) {

      /* "uvloop/handles/streamserver.pyx":75
 * 
 *             if throw or self._loop is None:
 *                 raise exc             # <<<<<<<<<<<<<<
 * 
 *             msg = 'Fatal error on server {}'.format(
 */
      __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
      __PYX_ERR(16, 75, __pyx_L1_error)

      /* "uvloop/handles/streamserver.pyx":74
 *                                 ConnectionAbortedError)):
 * 
 *             if throw or self._loop is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 * 
 */
    }

    /* "uvloop/handles/streamserver.pyx":77
 *                 raise exc
 * 
 *             msg = 'Fatal error on server {}'.format(             # <<<<<<<<<<<<<<
 *                     self.__class__.__name__)
 *             if reason is not None:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Fatal_error_on_server, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/handles/streamserver.pyx":78
 * 
 *             msg = 'Fatal error on server {}'.format(
 *                     self.__class__.__name__)             # <<<<<<<<<<<<<<
 *             if reason is not None:
 *                 msg = '{} ({})'.format(msg, reason)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 77, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_msg = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":79
 *             msg = 'Fatal error on server {}'.format(
 *                     self.__class__.__name__)
 *             if reason is not None:             # <<<<<<<<<<<<<<
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 */
    __pyx_t_6 = (__pyx_v_reason != Py_None);
    __pyx_t_5 = (__pyx_t_6 != 0);
    if (__pyx_t_5) {

      /* "uvloop/handles/streamserver.pyx":80
 *                     self.__class__.__name__)
 *             if reason is not None:
 *                 msg = '{} ({})'.format(msg, reason)             # <<<<<<<<<<<<<<
 * 
 *             self._loop.call_exception_handler({
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__85, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(__pyx_v_msg);
      __Pyx_GIVEREF(__pyx_v_msg);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_v_msg);
      __Pyx_INCREF(__pyx_v_reason);
      __Pyx_GIVEREF(__pyx_v_reason);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_v_reason);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/streamserver.pyx":79
 *             msg = 'Fatal error on server {}'.format(
 *                     self.__class__.__name__)
 *             if reason is not None:             # <<<<<<<<<<<<<<
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 */
    }

    /* "uvloop/handles/streamserver.pyx":82
 *                 msg = '{} ({})'.format(msg, reason)
 * 
 *             self._loop.call_exception_handler({             # <<<<<<<<<<<<<<
 *                 'message': msg,
 *                 'exception': exc,
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_exception_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/handles/streamserver.pyx":83
 * 
 *             self._loop.call_exception_handler({
 *                 'message': msg,             # <<<<<<<<<<<<<<
 *                 'exception': exc,
 *             })
 */
    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_message, __pyx_v_msg) < 0) __PYX_ERR(16, 83, __pyx_L1_error)

    /* "uvloop/handles/streamserver.pyx":84
 *             self._loop.call_exception_handler({
 *                 'message': msg,
 *                 'exception': exc,             # <<<<<<<<<<<<<<
 *             })
 * 
 */
    if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_exception, __pyx_v_exc) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 82, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":70
 *         self._close()
 * 
 *         if not isinstance(exc, (BrokenPipeError,             # <<<<<<<<<<<<<<
 *                                 ConnectionResetError,
 *                                 ConnectionAbortedError)):
 */
  }

  /* "uvloop/handles/streamserver.pyx":65
 *         client._accept(<UVStream>self)
 * 
 *     cdef _fatal_error(self, exc, throw, reason=None):             # <<<<<<<<<<<<<<
 *         # Overload UVHandle._fatal_error
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer._fatal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":87
 *             })
 * 
 *     cdef inline _mark_as_open(self):             # <<<<<<<<<<<<<<
 *         self.opened = 1
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_14UVStreamServer__mark_as_open(struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mark_as_open", 0);

  /* "uvloop/handles/streamserver.pyx":88
 * 
 *     cdef inline _mark_as_open(self):
 *         self.opened = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 */
  __pyx_v_self->opened = 1;

  /* "uvloop/handles/streamserver.pyx":87
 *             })
 * 
 *     cdef inline _mark_as_open(self):             # <<<<<<<<<<<<<<
 *         self.opened = 1
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":90
 *         self.opened = 1
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_14UVStreamServer__make_new_transport(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_protocol, CYTHON_UNUSED PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_make_new_transport", 0);

  /* "uvloop/handles/streamserver.pyx":91
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def __on_ssl_connected(self, transport, fut):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(16, 91, __pyx_L1_error)

  /* "uvloop/handles/streamserver.pyx":90
 *         self.opened = 1
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer._make_new_transport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":93
 *         raise NotImplementedError
 * 
 *     def __on_ssl_connected(self, transport, fut):             # <<<<<<<<<<<<<<
 *         exc = fut.exception()
 *         if exc is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_14UVStreamServer_3__on_ssl_connected(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_14UVStreamServer_3__on_ssl_connected(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_transport = 0;
  PyObject *__pyx_v_fut = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__on_ssl_connected (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_transport,&__pyx_n_s_fut,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transport)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fut)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__on_ssl_connected", 1, 2, 2, 1); __PYX_ERR(16, 93, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__on_ssl_connected") < 0)) __PYX_ERR(16, 93, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_transport = values[0];
    __pyx_v_fut = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__on_ssl_connected", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 93, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer.__on_ssl_connected", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_14UVStreamServer_2__on_ssl_connected(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self), __pyx_v_transport, __pyx_v_fut);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_14UVStreamServer_2__on_ssl_connected(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_self, PyObject *__pyx_v_transport, PyObject *__pyx_v_fut) {
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__on_ssl_connected", 0);

  /* "uvloop/handles/streamserver.pyx":94
 * 
 *     def __on_ssl_connected(self, transport, fut):
 *         exc = fut.exception()             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             transport._force_close(exc)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 94, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/handles/streamserver.pyx":95
 *     def __on_ssl_connected(self, transport, fut):
 *         exc = fut.exception()
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             transport._force_close(exc)
 * 
 */
  __pyx_t_4 = (__pyx_v_exc != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "uvloop/handles/streamserver.pyx":96
 *         exc = fut.exception()
 *         if exc is not None:
 *             transport._force_close(exc)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_transport, __pyx_n_s_force_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_exc);
      __Pyx_GIVEREF(__pyx_v_exc);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_exc);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/streamserver.pyx":95
 *     def __on_ssl_connected(self, transport, fut):
 *         exc = fut.exception()
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             transport._force_close(exc)
 * 
 */
  }

  /* "uvloop/handles/streamserver.pyx":93
 *         raise NotImplementedError
 * 
 *     def __on_ssl_connected(self, transport, fut):             # <<<<<<<<<<<<<<
 *         exc = fut.exception()
 *         if exc is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVStreamServer.__on_ssl_connected", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/streamserver.pyx":99
 * 
 * 
 * cdef void __uv_streamserver_on_listen(uv.uv_stream_t* handle,             # <<<<<<<<<<<<<<
 *                                       int status) with gil:
 * 
 */

static void __pyx_f_6uvloop_4loop___uv_streamserver_on_listen(uv_stream_t *__pyx_v_handle, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_stream = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_streamserver_on_listen", 0);

  /* "uvloop/handles/streamserver.pyx":105
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UVStream listen callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVStream listen callback")) == 0) != 0);

  /* "uvloop/handles/streamserver.pyx":104
 *     # callback for uv_listen
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UVStream listen callback") == 0:
 *         return
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/streamserver.pyx":106
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UVStream listen callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/streamserver.pyx":104
 *     # callback for uv_listen
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UVStream listen callback") == 0:
 *         return
 */
  }

  /* "uvloop/handles/streamserver.pyx":109
 * 
 *     cdef:
 *         UVStreamServer stream = <UVStreamServer> handle.data             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_stream = ((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/streamserver.pyx":111
 *         UVStreamServer stream = <UVStreamServer> handle.data
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_listen_errors_total += 1
 */
  __pyx_t_1 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/streamserver.pyx":115
 *             stream._loop._debug_stream_listen_errors_total += 1
 * 
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.listen callback")
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/streamserver.pyx":116
 * 
 *         exc = convert_error(status)
 *         stream._fatal_error(exc, False,             # <<<<<<<<<<<<<<
 *             "error status in uv_stream_t.listen callback")
 *         return
 */
    __pyx_t_3.__pyx_n = 1;
    __pyx_t_3.reason = __pyx_kp_u_error_status_in_uv_stream_t_list;
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_stream->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_stream), __pyx_v_exc, Py_False, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/streamserver.pyx":118
 *         stream._fatal_error(exc, False,
 *             "error status in uv_stream_t.listen callback")
 *         return             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    goto __pyx_L0;

    /* "uvloop/handles/streamserver.pyx":111
 *         UVStreamServer stream = <UVStreamServer> handle.data
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             stream._loop._debug_stream_listen_errors_total += 1
 */
  }

  /* "uvloop/handles/streamserver.pyx":120
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_listen()
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "uvloop/handles/streamserver.pyx":121
 * 
 *     try:
 *         stream._on_listen()             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         stream._error(exc, False)
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_14UVStreamServer__on_listen(__pyx_v_stream); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 121, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/streamserver.pyx":120
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_listen()
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/streamserver.pyx":122
 *     try:
 *         stream._on_listen()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         stream._error(exc, False)
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("uvloop.loop.__uv_streamserver_on_listen", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(16, 122, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_8);
      __pyx_v_exc = __pyx_t_8;
      /*try:*/ {

        /* "uvloop/handles/streamserver.pyx":123
 *         stream._on_listen()
 *     except BaseException as exc:
 *         stream._error(exc, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_10 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)__pyx_v_stream->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_stream), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_10)) __PYX_ERR(16, 123, __pyx_L18_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }

      /* "uvloop/handles/streamserver.pyx":122
 *     try:
 *         stream._on_listen()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         stream._error(exc, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L19;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L18_error:;
          __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __pyx_t_7 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
          }
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
          __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
          __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
          goto __pyx_L7_except_error;
        }
        __pyx_L19:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L6_exception_handled;
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "uvloop/handles/streamserver.pyx":120
 *         return
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         stream._on_listen()
 *     except BaseException as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_L12_try_end:;
  }

  /* "uvloop/handles/streamserver.pyx":99
 * 
 * 
 * cdef void __uv_streamserver_on_listen(uv.uv_stream_t* handle,             # <<<<<<<<<<<<<<
 *                                       int status) with gil:
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_streamserver_on_listen", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_stream);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/tcp.pyx":1
 * cdef __tcp_init_uv_handle(UVStream handle, Loop loop, unsigned int flags):             # <<<<<<<<<<<<<<
 *     cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop___tcp_init_uv_handle(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_handle, CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, unsigned int __pyx_v_flags) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__tcp_init_uv_handle", 0);

  /* "uvloop/handles/tcp.pyx":4
 *     cdef int err
 * 
 *     handle._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                         PyMem_Malloc(sizeof(uv.uv_tcp_t))
 *     if handle._handle is NULL:
 */
  __pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_tcp_t))));

  /* "uvloop/handles/tcp.pyx":6
 *     handle._handle = <uv.uv_handle_t*> \
 *                         PyMem_Malloc(sizeof(uv.uv_tcp_t))
 *     if handle._handle is NULL:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":7
 *                         PyMem_Malloc(sizeof(uv.uv_tcp_t))
 *     if handle._handle is NULL:
 *         handle._abort_init()             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":8
 *     if handle._handle is NULL:
 *         handle._abort_init()
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *     err = uv.uv_tcp_init_ex(handle._loop.uvloop,
 */
    PyErr_NoMemory(); __PYX_ERR(5, 8, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":6
 *     handle._handle = <uv.uv_handle_t*> \
 *                         PyMem_Malloc(sizeof(uv.uv_tcp_t))
 *     if handle._handle is NULL:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise MemoryError()
 */
  }

  /* "uvloop/handles/tcp.pyx":10
 *         raise MemoryError()
 * 
 *     err = uv.uv_tcp_init_ex(handle._loop.uvloop,             # <<<<<<<<<<<<<<
 *                             <uv.uv_tcp_t*>handle._handle,
 *                             flags)
 */
  __pyx_v_err = uv_tcp_init_ex(__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._loop->uvloop, ((uv_tcp_t *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_flags);

  /* "uvloop/handles/tcp.pyx":13
 *                             <uv.uv_tcp_t*>handle._handle,
 *                             flags)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise convert_error(err)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":14
 *                             flags)
 *     if err < 0:
 *         handle._abort_init()             # <<<<<<<<<<<<<<
 *         raise convert_error(err)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":15
 *     if err < 0:
 *         handle._abort_init()
 *         raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     handle._finish_init()
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(5, 15, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":13
 *                             <uv.uv_tcp_t*>handle._handle,
 *                             flags)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise convert_error(err)
 */
  }

  /* "uvloop/handles/tcp.pyx":17
 *         raise convert_error(err)
 * 
 *     handle._finish_init()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/tcp.pyx":1
 * cdef __tcp_init_uv_handle(UVStream handle, Loop loop, unsigned int flags):             # <<<<<<<<<<<<<<
 *     cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__tcp_init_uv_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":20
 * 
 * 
 * cdef __tcp_bind(UVStream handle, system.sockaddr* addr, unsigned int flags):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_tcp_bind(<uv.uv_tcp_t *>handle._handle,
 */

static PyObject *__pyx_f_6uvloop_4loop___tcp_bind(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_handle, struct sockaddr *__pyx_v_addr, unsigned int __pyx_v_flags) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__tcp_bind", 0);

  /* "uvloop/handles/tcp.pyx":22
 * cdef __tcp_bind(UVStream handle, system.sockaddr* addr, unsigned int flags):
 *     cdef int err
 *     err = uv.uv_tcp_bind(<uv.uv_tcp_t *>handle._handle,             # <<<<<<<<<<<<<<
 *                          addr, flags)
 *     if err < 0:
 */
  __pyx_v_err = uv_tcp_bind(((uv_tcp_t *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_addr, __pyx_v_flags);

  /* "uvloop/handles/tcp.pyx":24
 *     err = uv.uv_tcp_bind(<uv.uv_tcp_t *>handle._handle,
 *                          addr, flags)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":25
 *                          addr, flags)
 *     if err < 0:
 *         exc = convert_error(err)             # <<<<<<<<<<<<<<
 *         raise exc
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":26
 *     if err < 0:
 *         exc = convert_error(err)
 *         raise exc             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(5, 26, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":24
 *     err = uv.uv_tcp_bind(<uv.uv_tcp_t *>handle._handle,
 *                          addr, flags)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  }

  /* "uvloop/handles/tcp.pyx":20
 * 
 * 
 * cdef __tcp_bind(UVStream handle, system.sockaddr* addr, unsigned int flags):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_tcp_bind(<uv.uv_tcp_t *>handle._handle,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__tcp_bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":29
 * 
 * 
 * cdef __tcp_open(UVStream handle, int sockfd):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_tcp_open(<uv.uv_tcp_t *>handle._handle,
 */

static PyObject *__pyx_f_6uvloop_4loop___tcp_open(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_handle, int __pyx_v_sockfd) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__tcp_open", 0);

  /* "uvloop/handles/tcp.pyx":31
 * cdef __tcp_open(UVStream handle, int sockfd):
 *     cdef int err
 *     err = uv.uv_tcp_open(<uv.uv_tcp_t *>handle._handle,             # <<<<<<<<<<<<<<
 *                          <uv.uv_os_sock_t>sockfd)
 *     if err < 0:
 */
  __pyx_v_err = uv_tcp_open(((uv_tcp_t *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle), ((uv_os_sock_t)__pyx_v_sockfd));

  /* "uvloop/handles/tcp.pyx":33
 *     err = uv.uv_tcp_open(<uv.uv_tcp_t *>handle._handle,
 *                          <uv.uv_os_sock_t>sockfd)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":34
 *                          <uv.uv_os_sock_t>sockfd)
 *     if err < 0:
 *         exc = convert_error(err)             # <<<<<<<<<<<<<<
 *         raise exc
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":35
 *     if err < 0:
 *         exc = convert_error(err)
 *         raise exc             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(5, 35, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":33
 *     err = uv.uv_tcp_open(<uv.uv_tcp_t *>handle._handle,
 *                          <uv.uv_os_sock_t>sockfd)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  }

  /* "uvloop/handles/tcp.pyx":29
 * 
 * 
 * cdef __tcp_open(UVStream handle, int sockfd):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_tcp_open(<uv.uv_tcp_t *>handle._handle,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__tcp_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":38
 * 
 * 
 * cdef __tcp_get_socket(UVSocketHandle handle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         int buf_len = sizeof(system.sockaddr_storage)
 */

static PyObject *__pyx_f_6uvloop_4loop___tcp_get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_handle) {
  int __pyx_v_buf_len;
  int __pyx_v_fileno;
  int __pyx_v_err;
  struct sockaddr_storage __pyx_v_buf;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("__tcp_get_socket", 0);

  /* "uvloop/handles/tcp.pyx":40
 * cdef __tcp_get_socket(UVSocketHandle handle):
 *     cdef:
 *         int buf_len = sizeof(system.sockaddr_storage)             # <<<<<<<<<<<<<<
 *         int fileno
 *         int err
 */
  __pyx_v_buf_len = (sizeof(struct sockaddr_storage));

  /* "uvloop/handles/tcp.pyx":45
 *         system.sockaddr_storage buf
 * 
 *     fileno = handle._fileno()             # <<<<<<<<<<<<<<
 * 
 *     err = uv.uv_tcp_getsockname(<uv.uv_tcp_t*>handle._handle,
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_14UVSocketHandle__fileno(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fileno = __pyx_t_2;

  /* "uvloop/handles/tcp.pyx":47
 *     fileno = handle._fileno()
 * 
 *     err = uv.uv_tcp_getsockname(<uv.uv_tcp_t*>handle._handle,             # <<<<<<<<<<<<<<
 *                                 <system.sockaddr*>&buf,
 *                                 &buf_len)
 */
  __pyx_v_err = uv_tcp_getsockname(((uv_tcp_t *)__pyx_v_handle->__pyx_base._handle), ((struct sockaddr *)(&__pyx_v_buf)), (&__pyx_v_buf_len));

  /* "uvloop/handles/tcp.pyx":50
 *                                 <system.sockaddr*>&buf,
 *                                 &buf_len)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         raise convert_error(err)
 * 
 */
  __pyx_t_3 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/tcp.pyx":51
 *                                 &buf_len)
 *     if err < 0:
 *         raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     return socket_socket(buf.ss_family, uv.SOCK_STREAM, 0, fileno)
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 51, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":50
 *                                 <system.sockaddr*>&buf,
 *                                 &buf_len)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         raise convert_error(err)
 * 
 */
  }

  /* "uvloop/handles/tcp.pyx":53
 *         raise convert_error(err)
 * 
 *     return socket_socket(buf.ss_family, uv.SOCK_STREAM, 0, fileno)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_unsigned_short(__pyx_v_buf.ss_family); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_int(SOCK_STREAM); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_fileno); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_socket_socket);
  __pyx_t_7 = __pyx_v_6uvloop_4loop_socket_socket; __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":38
 * 
 * 
 * cdef __tcp_get_socket(UVSocketHandle handle):             # <<<<<<<<<<<<<<
 *     cdef:
 *         int buf_len = sizeof(system.sockaddr_storage)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.__tcp_get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":60
 * 
 *     @staticmethod
 *     cdef TCPServer new(Loop loop, object protocol_factory, Server server,             # <<<<<<<<<<<<<<
 *                        object ssl, unsigned int flags):
 * 
 */

static struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_f_6uvloop_4loop_9TCPServer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl, unsigned int __pyx_v_flags) {
  struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/tcp.pyx":64
 * 
 *         cdef TCPServer handle
 *         handle = TCPServer.__new__(TCPServer)             # <<<<<<<<<<<<<<
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, flags)
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_TCPServer(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_TCPServer), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_TCPServer)))) __PYX_ERR(5, 64, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_TCPServer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":65
 *         cdef TCPServer handle
 *         handle = TCPServer.__new__(TCPServer)
 *         handle._init(loop, protocol_factory, server, ssl)             # <<<<<<<<<<<<<<
 *         __tcp_init_uv_handle(<UVStream>handle, loop, flags)
 *         return handle
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol_factory, __pyx_v_server, __pyx_v_ssl); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":66
 *         handle = TCPServer.__new__(TCPServer)
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, flags)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":67
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, flags)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":60
 * 
 *     @staticmethod
 *     cdef TCPServer new(Loop loop, object protocol_factory, Server server,             # <<<<<<<<<<<<<<
 *                        object ssl, unsigned int flags):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPServer.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":69
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_9TCPServer__new_socket(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/tcp.pyx":70
 * 
 *     cdef _new_socket(self):
 *         return __tcp_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":69
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPServer._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":72
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         try:
 */

static PyObject *__pyx_f_6uvloop_4loop_9TCPServer_open(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  char const *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/tcp.pyx":73
 * 
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         try:
 *             __tcp_open(<UVStream>self, sockfd)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":74
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/handles/tcp.pyx":75
 *         self._ensure_alive()
 *         try:
 *             __tcp_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             self._fatal_error(exc, True)
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 75, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/tcp.pyx":74
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:
 */
    }

    /* "uvloop/handles/tcp.pyx":79
 *             self._fatal_error(exc, True)
 *         else:
 *             self._mark_as_open()             # <<<<<<<<<<<<<<
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 */
    /*else:*/ {
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._mark_as_open(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 79, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/tcp.pyx":76
 *         try:
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *         else:
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("uvloop.loop.TCPServer.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 76, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "uvloop/handles/tcp.pyx":77
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *         else:
 *             self._mark_as_open()
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 77, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }

      /* "uvloop/handles/tcp.pyx":76
 *         try:
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L17;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L16_error:;
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __pyx_t_5 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          }
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
          goto __pyx_L5_except_error;
        }
        __pyx_L17:;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/handles/tcp.pyx":74
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_open(<UVStream>self, sockfd)
 *         except Exception as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L10_try_end:;
  }

  /* "uvloop/handles/tcp.pyx":72
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         try:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.TCPServer.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":81
 *             self._mark_as_open()
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         try:
 */

static PyObject *__pyx_f_6uvloop_4loop_9TCPServer_bind(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, struct sockaddr *__pyx_v_addr, struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind *__pyx_optional_args) {
  unsigned int __pyx_v_flags = ((unsigned int)0);
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  char const *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  __Pyx_RefNannySetupContext("bind", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_flags = __pyx_optional_args->flags;
    }
  }

  /* "uvloop/handles/tcp.pyx":82
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         try:
 *             __tcp_bind(<UVStream>self, addr, flags)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":83
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/handles/tcp.pyx":84
 *         self._ensure_alive()
 *         try:
 *             __tcp_bind(<UVStream>self, addr, flags)             # <<<<<<<<<<<<<<
 *         except Exception as exc:
 *             self._fatal_error(exc, True)
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_bind(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_addr, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 84, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/tcp.pyx":83
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:
 */
    }

    /* "uvloop/handles/tcp.pyx":88
 *             self._fatal_error(exc, True)
 *         else:
 *             self._mark_as_open()             # <<<<<<<<<<<<<<
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 */
    /*else:*/ {
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._mark_as_open(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 88, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/tcp.pyx":85
 *         try:
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *         else:
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("uvloop.loop.TCPServer.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 85, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "uvloop/handles/tcp.pyx":86
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *         else:
 *             self._mark_as_open()
 */
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 86, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }

      /* "uvloop/handles/tcp.pyx":85
 *         try:
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *         else:
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L17;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L16_error:;
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __pyx_t_5 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          }
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
          __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
          goto __pyx_L5_except_error;
        }
        __pyx_L17:;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/handles/tcp.pyx":83
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()
 *         try:             # <<<<<<<<<<<<<<
 *             __tcp_bind(<UVStream>self, addr, flags)
 *         except Exception as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L10_try_end:;
  }

  /* "uvloop/handles/tcp.pyx":81
 *             self._mark_as_open()
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         try:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.TCPServer.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":90
 *             self._mark_as_open()
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         cdef TCPTransport tr
 *         tr = TCPTransport.new(self._loop, protocol, self._server, waiter)
 */

static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_9TCPServer__make_new_transport(struct __pyx_obj_6uvloop_4loop_TCPServer *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_tr = 0;
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_make_new_transport", 0);

  /* "uvloop/handles/tcp.pyx":92
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 *         cdef TCPTransport tr
 *         tr = TCPTransport.new(self._loop, protocol, self._server, waiter)             # <<<<<<<<<<<<<<
 *         return <UVStream>tr
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base._server);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = ((PyObject *)__pyx_f_6uvloop_4loop_12TCPTransport_new(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_2), __pyx_v_waiter)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/handles/tcp.pyx":93
 *         cdef TCPTransport tr
 *         tr = TCPTransport.new(self._loop, protocol, self._server, waiter)
 *         return <UVStream>tr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_tr)));
  __pyx_r = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_tr);
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":90
 *             self._mark_as_open()
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         cdef TCPTransport tr
 *         tr = TCPTransport.new(self._loop, protocol, self._server, waiter)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.TCPServer._make_new_transport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tr);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":100
 * 
 *     @staticmethod
 *     cdef TCPTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                             object waiter):
 * 
 */

static struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_f_6uvloop_4loop_12TCPTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/tcp.pyx":104
 * 
 *         cdef TCPTransport handle
 *         handle = TCPTransport.__new__(TCPTransport)             # <<<<<<<<<<<<<<
 *         handle._init(loop, protocol, server, waiter)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, uv.AF_UNSPEC)
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_TCPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_TCPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_TCPTransport)))) __PYX_ERR(5, 104, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":105
 *         cdef TCPTransport handle
 *         handle = TCPTransport.__new__(TCPTransport)
 *         handle._init(loop, protocol, server, waiter)             # <<<<<<<<<<<<<<
 *         __tcp_init_uv_handle(<UVStream>handle, loop, uv.AF_UNSPEC)
 *         handle.__peername_set = 0
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol, __pyx_v_server, __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":106
 *         handle = TCPTransport.__new__(TCPTransport)
 *         handle._init(loop, protocol, server, waiter)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, uv.AF_UNSPEC)             # <<<<<<<<<<<<<<
 *         handle.__peername_set = 0
 *         handle.__sockname_set = 0
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, AF_UNSPEC); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":107
 *         handle._init(loop, protocol, server, waiter)
 *         __tcp_init_uv_handle(<UVStream>handle, loop, uv.AF_UNSPEC)
 *         handle.__peername_set = 0             # <<<<<<<<<<<<<<
 *         handle.__sockname_set = 0
 *         return handle
 */
  __pyx_v_handle->__pyx___peername_set = 0;

  /* "uvloop/handles/tcp.pyx":108
 *         __tcp_init_uv_handle(<UVStream>handle, loop, uv.AF_UNSPEC)
 *         handle.__peername_set = 0
 *         handle.__sockname_set = 0             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_v_handle->__pyx___sockname_set = 0;

  /* "uvloop/handles/tcp.pyx":109
 *         handle.__peername_set = 0
 *         handle.__sockname_set = 0
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _call_connection_made(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":100
 * 
 *     @staticmethod
 *     cdef TCPTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                             object waiter):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":111
 *         return handle
 * 
 *     cdef _call_connection_made(self):             # <<<<<<<<<<<<<<
 *         # asyncio saves peername & sockname when transports are instantiated,
 *         # so that they're accessible even after the transport is closed.
 */

static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self) {
  int __pyx_v_err;
  int __pyx_v_buf_len;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_call_connection_made", 0);

  /* "uvloop/handles/tcp.pyx":121
 *             int buf_len
 * 
 *         buf_len = sizeof(system.sockaddr_storage)             # <<<<<<<<<<<<<<
 *         err = uv.uv_tcp_getsockname(<uv.uv_tcp_t*>self._handle,
 *                                     <system.sockaddr*>&self.__sockname,
 */
  __pyx_v_buf_len = (sizeof(struct sockaddr_storage));

  /* "uvloop/handles/tcp.pyx":122
 * 
 *         buf_len = sizeof(system.sockaddr_storage)
 *         err = uv.uv_tcp_getsockname(<uv.uv_tcp_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                     <system.sockaddr*>&self.__sockname,
 *                                     &buf_len)
 */
  __pyx_v_err = uv_tcp_getsockname(((uv_tcp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._handle), ((struct sockaddr *)(&__pyx_v_self->__pyx___sockname)), (&__pyx_v_buf_len));

  /* "uvloop/handles/tcp.pyx":125
 *                                     <system.sockaddr*>&self.__sockname,
 *                                     &buf_len)
 *         if err >= 0:             # <<<<<<<<<<<<<<
 *             # Ignore errors, this is an optional thing.
 *             # If something serious is going on, the transport
 */
  __pyx_t_1 = ((__pyx_v_err >= 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":130
 *             # will crash later (in roughly the same way how
 *             # an asyncio transport would.)
 *             self.__sockname_set = 1             # <<<<<<<<<<<<<<
 * 
 *         buf_len = sizeof(system.sockaddr_storage)
 */
    __pyx_v_self->__pyx___sockname_set = 1;

    /* "uvloop/handles/tcp.pyx":125
 *                                     <system.sockaddr*>&self.__sockname,
 *                                     &buf_len)
 *         if err >= 0:             # <<<<<<<<<<<<<<
 *             # Ignore errors, this is an optional thing.
 *             # If something serious is going on, the transport
 */
  }

  /* "uvloop/handles/tcp.pyx":132
 *             self.__sockname_set = 1
 * 
 *         buf_len = sizeof(system.sockaddr_storage)             # <<<<<<<<<<<<<<
 *         err = uv.uv_tcp_getpeername(<uv.uv_tcp_t*>self._handle,
 *                                     <system.sockaddr*>&self.__peername,
 */
  __pyx_v_buf_len = (sizeof(struct sockaddr_storage));

  /* "uvloop/handles/tcp.pyx":133
 * 
 *         buf_len = sizeof(system.sockaddr_storage)
 *         err = uv.uv_tcp_getpeername(<uv.uv_tcp_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                     <system.sockaddr*>&self.__peername,
 *                                     &buf_len)
 */
  __pyx_v_err = uv_tcp_getpeername(((uv_tcp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._handle), ((struct sockaddr *)(&__pyx_v_self->__pyx___peername)), (&__pyx_v_buf_len));

  /* "uvloop/handles/tcp.pyx":136
 *                                     <system.sockaddr*>&self.__peername,
 *                                     &buf_len)
 *         if err >= 0:             # <<<<<<<<<<<<<<
 *             # Same as few lines above -- we don't really care
 *             # about error case here.
 */
  __pyx_t_1 = ((__pyx_v_err >= 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":139
 *             # Same as few lines above -- we don't really care
 *             # about error case here.
 *             self.__peername_set = 1             # <<<<<<<<<<<<<<
 * 
 *         UVBaseTransport._call_connection_made(self)
 */
    __pyx_v_self->__pyx___peername_set = 1;

    /* "uvloop/handles/tcp.pyx":136
 *                                     <system.sockaddr*>&self.__peername,
 *                                     &buf_len)
 *         if err >= 0:             # <<<<<<<<<<<<<<
 *             # Same as few lines above -- we don't really care
 *             # about error case here.
 */
  }

  /* "uvloop/handles/tcp.pyx":141
 *             self.__peername_set = 1
 * 
 *         UVBaseTransport._call_connection_made(self)             # <<<<<<<<<<<<<<
 * 
 *     def get_extra_info(self, name, default=None):
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_made(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/tcp.pyx":111
 *         return handle
 * 
 *     cdef _call_connection_made(self):             # <<<<<<<<<<<<<<
 *         # asyncio saves peername & sockname when transports are instantiated,
 *         # so that they're accessible even after the transport is closed.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport._call_connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":143
 *         UVBaseTransport._call_connection_made(self)
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         if name == 'sockname':
 *             if self.__sockname_set:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_12TCPTransport_1get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_12TCPTransport_1get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_extra_info (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_default,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_default);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_extra_info") < 0)) __PYX_ERR(5, 143, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_extra_info", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 143, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_12TCPTransport_get_extra_info(((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_v_self), __pyx_v_name, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_12TCPTransport_get_extra_info(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("get_extra_info", 0);

  /* "uvloop/handles/tcp.pyx":144
 * 
 *     def get_extra_info(self, name, default=None):
 *         if name == 'sockname':             # <<<<<<<<<<<<<<
 *             if self.__sockname_set:
 *                 return __convert_sockaddr_to_pyaddr(
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_sockname, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":145
 *     def get_extra_info(self, name, default=None):
 *         if name == 'sockname':
 *             if self.__sockname_set:             # <<<<<<<<<<<<<<
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__sockname)
 */
    __pyx_t_1 = (__pyx_v_self->__pyx___sockname_set != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/tcp.pyx":146
 *         if name == 'sockname':
 *             if self.__sockname_set:
 *                 return __convert_sockaddr_to_pyaddr(             # <<<<<<<<<<<<<<
 *                     <system.sockaddr*>&self.__sockname)
 *         elif name == 'peername':
 */
      __Pyx_XDECREF(__pyx_r);

      /* "uvloop/handles/tcp.pyx":147
 *             if self.__sockname_set:
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__sockname)             # <<<<<<<<<<<<<<
 *         elif name == 'peername':
 *             if self.__peername_set:
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(((struct sockaddr *)(&__pyx_v_self->__pyx___sockname))); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "uvloop/handles/tcp.pyx":145
 *     def get_extra_info(self, name, default=None):
 *         if name == 'sockname':
 *             if self.__sockname_set:             # <<<<<<<<<<<<<<
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__sockname)
 */
    }

    /* "uvloop/handles/tcp.pyx":144
 * 
 *     def get_extra_info(self, name, default=None):
 *         if name == 'sockname':             # <<<<<<<<<<<<<<
 *             if self.__sockname_set:
 *                 return __convert_sockaddr_to_pyaddr(
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/tcp.pyx":148
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__sockname)
 *         elif name == 'peername':             # <<<<<<<<<<<<<<
 *             if self.__peername_set:
 *                 return __convert_sockaddr_to_pyaddr(
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_peername, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":149
 *                     <system.sockaddr*>&self.__sockname)
 *         elif name == 'peername':
 *             if self.__peername_set:             # <<<<<<<<<<<<<<
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__peername)
 */
    __pyx_t_1 = (__pyx_v_self->__pyx___peername_set != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/tcp.pyx":150
 *         elif name == 'peername':
 *             if self.__peername_set:
 *                 return __convert_sockaddr_to_pyaddr(             # <<<<<<<<<<<<<<
 *                     <system.sockaddr*>&self.__peername)
 *         return super().get_extra_info(name, default)
 */
      __Pyx_XDECREF(__pyx_r);

      /* "uvloop/handles/tcp.pyx":151
 *             if self.__peername_set:
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__peername)             # <<<<<<<<<<<<<<
 *         return super().get_extra_info(name, default)
 * 
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(((struct sockaddr *)(&__pyx_v_self->__pyx___peername))); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "uvloop/handles/tcp.pyx":149
 *                     <system.sockaddr*>&self.__sockname)
 *         elif name == 'peername':
 *             if self.__peername_set:             # <<<<<<<<<<<<<<
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__peername)
 */
    }

    /* "uvloop/handles/tcp.pyx":148
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__sockname)
 *         elif name == 'peername':             # <<<<<<<<<<<<<<
 *             if self.__peername_set:
 *                 return __convert_sockaddr_to_pyaddr(
 */
  }
  __pyx_L3:;

  /* "uvloop/handles/tcp.pyx":152
 *                 return __convert_sockaddr_to_pyaddr(
 *                     <system.sockaddr*>&self.__peername)
 *         return super().get_extra_info(name, default)             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_6uvloop_4loop_TCPTransport));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6uvloop_4loop_TCPTransport));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_6uvloop_4loop_TCPTransport));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get_extra_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_name);
  __Pyx_INCREF(__pyx_v_default);
  __Pyx_GIVEREF(__pyx_v_default);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_default);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":143
 *         UVBaseTransport._call_connection_made(self)
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         if name == 'sockname':
 *             if self.__sockname_set:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":154
 *         return super().get_extra_info(name, default)
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport__new_socket(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/tcp.pyx":155
 * 
 *     cdef _new_socket(self):
 *         return __tcp_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/tcp.pyx":154
 *         return super().get_extra_info(name, default)
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":157
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __tcp_bind(<UVStream>self, addr, flags)
 */

static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_bind(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr, struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind *__pyx_optional_args) {
  unsigned int __pyx_v_flags = ((unsigned int)0);
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("bind", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_flags = __pyx_optional_args->flags;
    }
  }

  /* "uvloop/handles/tcp.pyx":158
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         __tcp_bind(<UVStream>self, addr, flags)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":159
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):
 *         self._ensure_alive()
 *         __tcp_bind(<UVStream>self, addr, flags)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_bind(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_addr, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":157
 *         return __tcp_get_socket(<UVSocketHandle>self)
 * 
 *     cdef bind(self, system.sockaddr* addr, unsigned int flags=0):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __tcp_bind(<UVStream>self, addr, flags)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":161
 *         __tcp_bind(<UVStream>self, addr, flags)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __tcp_open(<UVStream>self, sockfd)
 */

static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_open(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/tcp.pyx":162
 * 
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         __tcp_open(<UVStream>self, sockfd)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":163
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()
 *         __tcp_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 * 
 *     cdef connect(self, system.sockaddr* addr):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___tcp_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":161
 *         __tcp_bind(<UVStream>self, addr, flags)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __tcp_open(<UVStream>self, sockfd)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":165
 *         __tcp_open(<UVStream>self, sockfd)
 * 
 *     cdef connect(self, system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *         cdef _TCPConnectRequest req
 *         req = _TCPConnectRequest(self._loop, self)
 */

static PyObject *__pyx_f_6uvloop_4loop_12TCPTransport_connect(struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr) {
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_req = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("connect", 0);

  /* "uvloop/handles/tcp.pyx":167
 *     cdef connect(self, system.sockaddr* addr):
 *         cdef _TCPConnectRequest req
 *         req = _TCPConnectRequest(self._loop, self)             # <<<<<<<<<<<<<<
 *         req.connect(addr)
 * 
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop__TCPConnectRequest), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_req = ((struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/tcp.pyx":168
 *         cdef _TCPConnectRequest req
 *         req = _TCPConnectRequest(self._loop, self)
 *         req.connect(addr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *)__pyx_v_req->__pyx_base.__pyx_vtab)->connect(__pyx_v_req, __pyx_v_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/tcp.pyx":165
 *         __tcp_open(<UVStream>self, sockfd)
 * 
 *     cdef connect(self, system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *         cdef _TCPConnectRequest req
 *         req = _TCPConnectRequest(self._loop, self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.TCPTransport.connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_req);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":175
 *         TCPTransport transport
 * 
 *     def __cinit__(self, loop, transport):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_18_TCPConnectRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_18_TCPConnectRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_v_transport = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_transport,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transport)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(5, 175, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 175, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_loop = values[0];
    __pyx_v_transport = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 175, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop._TCPConnectRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_18_TCPConnectRequest___cinit__(((struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)__pyx_v_self), __pyx_v_loop, __pyx_v_transport);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_18_TCPConnectRequest___cinit__(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_loop, PyObject *__pyx_v_transport) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/tcp.pyx":176
 * 
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))             # <<<<<<<<<<<<<<
 *         if self.request is NULL:
 *             self.on_done()
 */
  __pyx_v_self->__pyx_base.request = ((uv_req_t *)PyMem_Malloc((sizeof(uv_connect_t))));

  /* "uvloop/handles/tcp.pyx":177
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.request == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":178
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         self.request.data = <void*>self
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":179
 *         if self.request is NULL:
 *             self.on_done()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         self.request.data = <void*>self
 *         self.transport = transport
 */
    PyErr_NoMemory(); __PYX_ERR(5, 179, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":177
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/tcp.pyx":180
 *             self.on_done()
 *             raise MemoryError()
 *         self.request.data = <void*>self             # <<<<<<<<<<<<<<
 *         self.transport = transport
 * 
 */
  __pyx_v_self->__pyx_base.request->data = ((void *)__pyx_v_self);

  /* "uvloop/handles/tcp.pyx":181
 *             raise MemoryError()
 *         self.request.data = <void*>self
 *         self.transport = transport             # <<<<<<<<<<<<<<
 * 
 *     cdef connect(self, system.sockaddr* addr):
 */
  if (!(likely(((__pyx_v_transport) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_transport, __pyx_ptype_6uvloop_4loop_TCPTransport))))) __PYX_ERR(5, 181, __pyx_L1_error)
  __pyx_t_2 = __pyx_v_transport;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->transport);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->transport));
  __pyx_v_self->transport = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/tcp.pyx":175
 *         TCPTransport transport
 * 
 *     def __cinit__(self, loop, transport):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop._TCPConnectRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":183
 *         self.transport = transport
 * 
 *     cdef connect(self, system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         err = uv.uv_tcp_connect(<uv.uv_connect_t*>self.request,
 */

static PyObject *__pyx_f_6uvloop_4loop_18_TCPConnectRequest_connect(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_self, struct sockaddr *__pyx_v_addr) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("connect", 0);

  /* "uvloop/handles/tcp.pyx":185
 *     cdef connect(self, system.sockaddr* addr):
 *         cdef int err
 *         err = uv.uv_tcp_connect(<uv.uv_connect_t*>self.request,             # <<<<<<<<<<<<<<
 *                                 <uv.uv_tcp_t*>self.transport._handle,
 *                                 addr,
 */
  __pyx_v_err = uv_tcp_connect(((uv_connect_t *)__pyx_v_self->__pyx_base.request), ((uv_tcp_t *)__pyx_v_self->transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_addr, __pyx_f_6uvloop_4loop___tcp_connect_callback);

  /* "uvloop/handles/tcp.pyx":189
 *                                 addr,
 *                                 __tcp_connect_callback)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self.on_done()
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/tcp.pyx":190
 *                                 __tcp_connect_callback)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise exc
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":191
 *         if err < 0:
 *             exc = convert_error(err)
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             raise exc
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/tcp.pyx":192
 *             exc = convert_error(err)
 *             self.on_done()
 *             raise exc             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(5, 192, __pyx_L1_error)

    /* "uvloop/handles/tcp.pyx":189
 *                                 addr,
 *                                 __tcp_connect_callback)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self.on_done()
 */
  }

  /* "uvloop/handles/tcp.pyx":183
 *         self.transport = transport
 * 
 *     cdef connect(self, system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         err = uv.uv_tcp_connect(<uv.uv_connect_t*>self.request,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop._TCPConnectRequest.connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/tcp.pyx":195
 * 
 * 
 * cdef void __tcp_connect_callback(uv.uv_connect_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         _TCPConnectRequest wrapper
 */

static void __pyx_f_6uvloop_4loop___tcp_connect_callback(uv_connect_t *__pyx_v_req, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *__pyx_v_wrapper = 0;
  struct __pyx_obj_6uvloop_4loop_TCPTransport *__pyx_v_transport = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  char const *__pyx_t_18;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__tcp_connect_callback", 0);

  /* "uvloop/handles/tcp.pyx":200
 *         TCPTransport transport
 * 
 *     wrapper = <_TCPConnectRequest> req.data             # <<<<<<<<<<<<<<
 *     transport = wrapper.transport
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_wrapper = ((struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":201
 * 
 *     wrapper = <_TCPConnectRequest> req.data
 *     transport = wrapper.transport             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_wrapper->transport);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_transport = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/tcp.pyx":203
 *     transport = wrapper.transport
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *     else:
 */
  __pyx_t_2 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/tcp.pyx":204
 * 
 *     if status < 0:
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *     else:
 *         exc = None
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/tcp.pyx":203
 *     transport = wrapper.transport
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/tcp.pyx":206
 *         exc = convert_error(status)
 *     else:
 *         exc = None             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_exc = Py_None;
  }
  __pyx_L3:;

  /* "uvloop/handles/tcp.pyx":208
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/handles/tcp.pyx":209
 * 
 *     try:
 *         transport._on_connect(exc)             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         wrapper.transport._error(ex, False)
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_v_transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._on_connect(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_transport), __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 209, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/handles/tcp.pyx":208
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/tcp.pyx":210
 *     try:
 *         transport._on_connect(exc)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         wrapper.transport._error(ex, False)
 *     finally:
 */
      __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_6) {
        __Pyx_AddTraceback("uvloop.loop.__tcp_connect_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(5, 210, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_ex = __pyx_t_7;
        /*try:*/ {

          /* "uvloop/handles/tcp.pyx":211
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 *         wrapper.transport._error(ex, False)             # <<<<<<<<<<<<<<
 *     finally:
 *         wrapper.on_done()
 */
          __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport *)__pyx_v_wrapper->transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_wrapper->transport), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 211, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }

        /* "uvloop/handles/tcp.pyx":210
 *     try:
 *         transport._on_connect(exc)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         wrapper.transport._error(ex, False)
 *     finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L21;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L20_error:;
            __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_12);
            __Pyx_XGOTREF(__pyx_t_13);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_XGIVEREF(__pyx_t_16);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
            __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
            goto __pyx_L9_except_error;
          }
          __pyx_L21:;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "uvloop/handles/tcp.pyx":208
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L5_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L14_try_end:;
    }
  }

  /* "uvloop/handles/tcp.pyx":213
 *         wrapper.transport._error(ex, False)
 *     finally:
 *         wrapper.on_done()             # <<<<<<<<<<<<<<
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *)__pyx_v_wrapper->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_wrapper)); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 213, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_10 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
      {
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest *)__pyx_v_wrapper->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_wrapper)); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 213, __pyx_L27_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_18;
      goto __pyx_L1_error;
      __pyx_L27_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/handles/tcp.pyx":195
 * 
 * 
 * cdef void __tcp_connect_callback(uv.uv_connect_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         _TCPConnectRequest wrapper
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__tcp_connect_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_wrapper);
  __Pyx_XDECREF((PyObject *)__pyx_v_transport);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/pipe.pyx":1
 * cdef __pipe_init_uv_handle(UVStream handle, Loop loop):             # <<<<<<<<<<<<<<
 *     cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop___pipe_init_uv_handle(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_handle, CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__pipe_init_uv_handle", 0);

  /* "uvloop/handles/pipe.pyx":4
 *     cdef int err
 * 
 *     handle._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                         PyMem_Malloc(sizeof(uv.uv_pipe_t))
 *     if handle._handle is NULL:
 */
  __pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_pipe_t))));

  /* "uvloop/handles/pipe.pyx":6
 *     handle._handle = <uv.uv_handle_t*> \
 *                         PyMem_Malloc(sizeof(uv.uv_pipe_t))
 *     if handle._handle is NULL:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/pipe.pyx":7
 *                         PyMem_Malloc(sizeof(uv.uv_pipe_t))
 *     if handle._handle is NULL:
 *         handle._abort_init()             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/pipe.pyx":8
 *     if handle._handle is NULL:
 *         handle._abort_init()
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *     # Initialize pipe handle with ipc=0.
 */
    PyErr_NoMemory(); __PYX_ERR(17, 8, __pyx_L1_error)

    /* "uvloop/handles/pipe.pyx":6
 *     handle._handle = <uv.uv_handle_t*> \
 *                         PyMem_Malloc(sizeof(uv.uv_pipe_t))
 *     if handle._handle is NULL:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise MemoryError()
 */
  }

  /* "uvloop/handles/pipe.pyx":13
 *     # ipc=1 means that libuv will use recvmsg/sendmsg
 *     # instead of recv/send.
 *     err = uv.uv_pipe_init(handle._loop.uvloop,             # <<<<<<<<<<<<<<
 *                           <uv.uv_pipe_t*>handle._handle,
 *                           0)
 */
  __pyx_v_err = uv_pipe_init(__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._loop->uvloop, ((uv_pipe_t *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle), 0);

  /* "uvloop/handles/pipe.pyx":16
 *                           <uv.uv_pipe_t*>handle._handle,
 *                           0)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise convert_error(err)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/pipe.pyx":17
 *                           0)
 *     if err < 0:
 *         handle._abort_init()             # <<<<<<<<<<<<<<
 *         raise convert_error(err)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/pipe.pyx":18
 *     if err < 0:
 *         handle._abort_init()
 *         raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     handle._finish_init()
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(17, 18, __pyx_L1_error)

    /* "uvloop/handles/pipe.pyx":16
 *                           <uv.uv_pipe_t*>handle._handle,
 *                           0)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         handle._abort_init()
 *         raise convert_error(err)
 */
  }

  /* "uvloop/handles/pipe.pyx":20
 *         raise convert_error(err)
 * 
 *     handle._finish_init()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStream *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/pipe.pyx":1
 * cdef __pipe_init_uv_handle(UVStream handle, Loop loop):             # <<<<<<<<<<<<<<
 *     cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__pipe_init_uv_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":23
 * 
 * 
 * cdef __pipe_open(UVStream handle, int fd):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_pipe_open(<uv.uv_pipe_t *>handle._handle,
 */

static PyObject *__pyx_f_6uvloop_4loop___pipe_open(struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_v_handle, int __pyx_v_fd) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__pipe_open", 0);

  /* "uvloop/handles/pipe.pyx":25
 * cdef __pipe_open(UVStream handle, int fd):
 *     cdef int err
 *     err = uv.uv_pipe_open(<uv.uv_pipe_t *>handle._handle,             # <<<<<<<<<<<<<<
 *                           <uv.uv_file>fd)
 *     if err < 0:
 */
  __pyx_v_err = uv_pipe_open(((uv_pipe_t *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base._handle), ((uv_file)__pyx_v_fd));

  /* "uvloop/handles/pipe.pyx":27
 *     err = uv.uv_pipe_open(<uv.uv_pipe_t *>handle._handle,
 *                           <uv.uv_file>fd)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/pipe.pyx":28
 *                           <uv.uv_file>fd)
 *     if err < 0:
 *         exc = convert_error(err)             # <<<<<<<<<<<<<<
 *         raise exc
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/pipe.pyx":29
 *     if err < 0:
 *         exc = convert_error(err)
 *         raise exc             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(17, 29, __pyx_L1_error)

    /* "uvloop/handles/pipe.pyx":27
 *     err = uv.uv_pipe_open(<uv.uv_pipe_t *>handle._handle,
 *                           <uv.uv_file>fd)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(err)
 *         raise exc
 */
  }

  /* "uvloop/handles/pipe.pyx":23
 * 
 * 
 * cdef __pipe_open(UVStream handle, int fd):             # <<<<<<<<<<<<<<
 *     cdef int err
 *     err = uv.uv_pipe_open(<uv.uv_pipe_t *>handle._handle,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__pipe_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":32
 * 
 * 
 * cdef __pipe_get_socket(UVSocketHandle handle):             # <<<<<<<<<<<<<<
 *     return socket_socket(uv.AF_UNIX, uv.SOCK_STREAM, 0, handle._fileno())
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop___pipe_get_socket(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("__pipe_get_socket", 0);

  /* "uvloop/handles/pipe.pyx":33
 * 
 * cdef __pipe_get_socket(UVSocketHandle handle):
 *     return socket_socket(uv.AF_UNIX, uv.SOCK_STREAM, 0, handle._fileno())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(AF_UNIX); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(SOCK_STREAM); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_6uvloop_4loop_14UVSocketHandle__fileno(__pyx_v_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_socket_socket);
  __pyx_t_5 = __pyx_v_6uvloop_4loop_socket_socket; __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":32
 * 
 * 
 * cdef __pipe_get_socket(UVSocketHandle handle):             # <<<<<<<<<<<<<<
 *     return socket_socket(uv.AF_UNIX, uv.SOCK_STREAM, 0, handle._fileno())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.__pipe_get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":40
 * 
 *     @staticmethod
 *     cdef UnixServer new(Loop loop, object protocol_factory, Server server,             # <<<<<<<<<<<<<<
 *                           object ssl):
 * 
 */

static struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_f_6uvloop_4loop_10UnixServer_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol_factory, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_ssl) {
  struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/pipe.pyx":44
 * 
 *         cdef UnixServer handle
 *         handle = UnixServer.__new__(UnixServer)             # <<<<<<<<<<<<<<
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UnixServer(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UnixServer), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UnixServer)))) __PYX_ERR(17, 44, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UnixServer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":45
 *         cdef UnixServer handle
 *         handle = UnixServer.__new__(UnixServer)
 *         handle._init(loop, protocol_factory, server, ssl)             # <<<<<<<<<<<<<<
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol_factory, __pyx_v_server, __pyx_v_ssl); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":46
 *         handle = UnixServer.__new__(UnixServer)
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":47
 *         handle._init(loop, protocol_factory, server, ssl)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":40
 * 
 *     @staticmethod
 *     cdef UnixServer new(Loop loop, object protocol_factory, Server server,             # <<<<<<<<<<<<<<
 *                           object ssl):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixServer.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":49
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_10UnixServer__new_socket(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/pipe.pyx":50
 * 
 *     cdef _new_socket(self):
 *         return __pipe_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":49
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixServer._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":52
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __pipe_open(<UVStream>self, sockfd)
 */

static PyObject *__pyx_f_6uvloop_4loop_10UnixServer_open(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/pipe.pyx":53
 * 
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 *         self._mark_as_open()
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":54
 *     cdef open(self, int sockfd):
 *         self._ensure_alive()
 *         __pipe_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 *         self._mark_as_open()
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":55
 *         self._ensure_alive()
 *         __pipe_open(<UVStream>self, sockfd)
 *         self._mark_as_open()             # <<<<<<<<<<<<<<
 * 
 *     cdef bind(self, str path):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._mark_as_open(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":52
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         self._ensure_alive()
 *         __pipe_open(<UVStream>self, sockfd)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixServer.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":57
 *         self._mark_as_open()
 * 
 *     cdef bind(self, str path):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

static PyObject *__pyx_f_6uvloop_4loop_10UnixServer_bind(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, PyObject *__pyx_v_path) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("bind", 0);

  /* "uvloop/handles/pipe.pyx":59
 *     cdef bind(self, str path):
 *         cdef int err
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         err = uv.uv_pipe_bind(<uv.uv_pipe_t *>self._handle,
 *                               path.encode())
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":61
 *         self._ensure_alive()
 *         err = uv.uv_pipe_bind(<uv.uv_pipe_t *>self._handle,
 *                               path.encode())             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  if (unlikely(__pyx_v_path == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode");
    __PYX_ERR(17, 61, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_path, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(17, 61, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":60
 *         cdef int err
 *         self._ensure_alive()
 *         err = uv.uv_pipe_bind(<uv.uv_pipe_t *>self._handle,             # <<<<<<<<<<<<<<
 *                               path.encode())
 *         if err < 0:
 */
  __pyx_v_err = uv_pipe_bind(((uv_pipe_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":62
 *         err = uv.uv_pipe_bind(<uv.uv_pipe_t *>self._handle,
 *                               path.encode())
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_3 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/pipe.pyx":63
 *                               path.encode())
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/pipe.pyx":64
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/pipe.pyx":65
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._mark_as_open()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/pipe.pyx":62
 *         err = uv.uv_pipe_bind(<uv.uv_pipe_t *>self._handle,
 *                               path.encode())
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/pipe.pyx":67
 *             return
 * 
 *         self._mark_as_open()             # <<<<<<<<<<<<<<
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixServer *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._mark_as_open(((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":57
 *         self._mark_as_open()
 * 
 *     cdef bind(self, str path):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixServer.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":69
 *         self._mark_as_open()
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         cdef UnixTransport tr
 *         tr = UnixTransport.new(self._loop, protocol, self._server, waiter)
 */

static struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_f_6uvloop_4loop_10UnixServer__make_new_transport(struct __pyx_obj_6uvloop_4loop_UnixServer *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_tr = 0;
  struct __pyx_obj_6uvloop_4loop_UVStream *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_make_new_transport", 0);

  /* "uvloop/handles/pipe.pyx":71
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):
 *         cdef UnixTransport tr
 *         tr = UnixTransport.new(self._loop, protocol, self._server, waiter)             # <<<<<<<<<<<<<<
 *         return <UVStream>tr
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base._server);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = ((PyObject *)__pyx_f_6uvloop_4loop_13UnixTransport_new(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_v_protocol, ((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_t_2), __pyx_v_waiter)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/handles/pipe.pyx":72
 *         cdef UnixTransport tr
 *         tr = UnixTransport.new(self._loop, protocol, self._server, waiter)
 *         return <UVStream>tr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_tr)));
  __pyx_r = ((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_tr);
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":69
 *         self._mark_as_open()
 * 
 *     cdef UVStream _make_new_transport(self, object protocol, object waiter):             # <<<<<<<<<<<<<<
 *         cdef UnixTransport tr
 *         tr = UnixTransport.new(self._loop, protocol, self._server, waiter)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UnixServer._make_new_transport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tr);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":79
 * 
 *     @staticmethod
 *     cdef UnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                              object waiter):
 * 
 */

static struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_f_6uvloop_4loop_13UnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/pipe.pyx":83
 * 
 *         cdef UnixTransport handle
 *         handle = UnixTransport.__new__(UnixTransport)             # <<<<<<<<<<<<<<
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UnixTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UnixTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UnixTransport)))) __PYX_ERR(17, 83, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":84
 *         cdef UnixTransport handle
 *         handle = UnixTransport.__new__(UnixTransport)
 *         handle._init(loop, protocol, server, waiter)             # <<<<<<<<<<<<<<
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol, __pyx_v_server, __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":85
 *         handle = UnixTransport.__new__(UnixTransport)
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":86
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":79
 * 
 *     @staticmethod
 *     cdef UnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                              object waiter):
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixTransport.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":88
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/pipe.pyx":89
 * 
 *     cdef _new_socket(self):
 *         return __pipe_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":88
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixTransport._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":91
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport_open(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/pipe.pyx":92
 * 
 *     cdef open(self, int sockfd):
 *         __pipe_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 * 
 *     cdef connect(self, char* addr):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":91
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UnixTransport.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":94
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     cdef connect(self, char* addr):             # <<<<<<<<<<<<<<
 *         cdef _PipeConnectRequest req
 *         req = _PipeConnectRequest(self._loop, self)
 */

static PyObject *__pyx_f_6uvloop_4loop_13UnixTransport_connect(struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_self, char *__pyx_v_addr) {
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_req = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("connect", 0);

  /* "uvloop/handles/pipe.pyx":96
 *     cdef connect(self, char* addr):
 *         cdef _PipeConnectRequest req
 *         req = _PipeConnectRequest(self._loop, self)             # <<<<<<<<<<<<<<
 *         req.connect(addr)
 * 
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._loop));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop__PipeConnectRequest), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_req = ((struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/pipe.pyx":97
 *         cdef _PipeConnectRequest req
 *         req = _PipeConnectRequest(self._loop, self)
 *         req.connect(addr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest *)__pyx_v_req->__pyx_base.__pyx_vtab)->connect(__pyx_v_req, __pyx_v_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/pipe.pyx":94
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     cdef connect(self, char* addr):             # <<<<<<<<<<<<<<
 *         cdef _PipeConnectRequest req
 *         req = _PipeConnectRequest(self._loop, self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UnixTransport.connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_req);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":104
 * 
 *     @staticmethod
 *     cdef ReadUnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                                  object waiter):
 *         cdef ReadUnixTransport handle
 */

static struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_f_6uvloop_4loop_17ReadUnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/pipe.pyx":107
 *                                  object waiter):
 *         cdef ReadUnixTransport handle
 *         handle = ReadUnixTransport.__new__(ReadUnixTransport)             # <<<<<<<<<<<<<<
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_ReadUnixTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_ReadUnixTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_ReadUnixTransport)))) __PYX_ERR(17, 107, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":108
 *         cdef ReadUnixTransport handle
 *         handle = ReadUnixTransport.__new__(ReadUnixTransport)
 *         handle._init(loop, protocol, server, waiter)             # <<<<<<<<<<<<<<
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol, __pyx_v_server, __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":109
 *         handle = ReadUnixTransport.__new__(ReadUnixTransport)
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":110
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":104
 * 
 *     @staticmethod
 *     cdef ReadUnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                                  object waiter):
 *         cdef ReadUnixTransport handle
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":112
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_17ReadUnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/pipe.pyx":113
 * 
 *     cdef _new_socket(self):
 *         return __pipe_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":112
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":115
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_17ReadUnixTransport_open(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/pipe.pyx":116
 * 
 *     cdef open(self, int sockfd):
 *         __pipe_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 * 
 *     def get_write_buffer_limits(self):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":115
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":118
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     def get_write_buffer_limits(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_1get_write_buffer_limits(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_1get_write_buffer_limits(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_limits (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_get_write_buffer_limits(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_get_write_buffer_limits(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_limits", 0);

  /* "uvloop/handles/pipe.pyx":119
 * 
 *     def get_write_buffer_limits(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 119, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":118
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     def get_write_buffer_limits(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.get_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":121
 *         raise NotImplementedError
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_3set_write_buffer_limits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_3set_write_buffer_limits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_high = 0;
  CYTHON_UNUSED PyObject *__pyx_v_low = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_write_buffer_limits (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_high,&__pyx_n_s_low,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_high);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_low);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_write_buffer_limits") < 0)) __PYX_ERR(17, 121, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_high = values[0];
    __pyx_v_low = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_write_buffer_limits", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 121, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.set_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_2set_write_buffer_limits(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self), __pyx_v_high, __pyx_v_low);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_2set_write_buffer_limits(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_high, CYTHON_UNUSED PyObject *__pyx_v_low) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_write_buffer_limits", 0);

  /* "uvloop/handles/pipe.pyx":122
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def get_write_buffer_size(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 122, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":121
 *         raise NotImplementedError
 * 
 *     def set_write_buffer_limits(self, high=None, low=None):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.set_write_buffer_limits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":124
 *         raise NotImplementedError
 * 
 *     def get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_5get_write_buffer_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_5get_write_buffer_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_size (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_4get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_4get_write_buffer_size(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_write_buffer_size", 0);

  /* "uvloop/handles/pipe.pyx":125
 * 
 *     def get_write_buffer_size(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def write(self, data):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 125, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":124
 *         raise NotImplementedError
 * 
 *     def get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.get_write_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":127
 *         raise NotImplementedError
 * 
 *     def write(self, data):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_7write(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_7write(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_6write(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_6write(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write", 0);

  /* "uvloop/handles/pipe.pyx":128
 * 
 *     def write(self, data):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def writelines(self, list_of_data):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 128, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":127
 *         raise NotImplementedError
 * 
 *     def write(self, data):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":130
 *         raise NotImplementedError
 * 
 *     def writelines(self, list_of_data):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_9writelines(PyObject *__pyx_v_self, PyObject *__pyx_v_list_of_data); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_9writelines(PyObject *__pyx_v_self, PyObject *__pyx_v_list_of_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writelines (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_8writelines(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self), ((PyObject *)__pyx_v_list_of_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_8writelines(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_list_of_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writelines", 0);

  /* "uvloop/handles/pipe.pyx":131
 * 
 *     def writelines(self, list_of_data):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def write_eof(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 131, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":130
 *         raise NotImplementedError
 * 
 *     def writelines(self, list_of_data):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.writelines", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":133
 *         raise NotImplementedError
 * 
 *     def write_eof(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_11write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_11write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_eof (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_10write_eof(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_10write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_eof", 0);

  /* "uvloop/handles/pipe.pyx":134
 * 
 *     def write_eof(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def can_write_eof(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 134, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":133
 *         raise NotImplementedError
 * 
 *     def write_eof(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.write_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":136
 *         raise NotImplementedError
 * 
 *     def can_write_eof(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_13can_write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_13can_write_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("can_write_eof (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_12can_write_eof(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_12can_write_eof(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("can_write_eof", 0);

  /* "uvloop/handles/pipe.pyx":137
 * 
 *     def can_write_eof(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def abort(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 137, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":136
 *         raise NotImplementedError
 * 
 *     def can_write_eof(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.can_write_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":139
 *         raise NotImplementedError
 * 
 *     def abort(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_15abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_17ReadUnixTransport_15abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_17ReadUnixTransport_14abort(((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_17ReadUnixTransport_14abort(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort", 0);

  /* "uvloop/handles/pipe.pyx":140
 * 
 *     def abort(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 140, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":139
 *         raise NotImplementedError
 * 
 *     def abort(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadUnixTransport.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":147
 * 
 *     @staticmethod
 *     cdef WriteUnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                                   object waiter):
 *         cdef WriteUnixTransport handle
 */

static struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_f_6uvloop_4loop_18WriteUnixTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_server, PyObject *__pyx_v_waiter) {
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_handle = 0;
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/pipe.pyx":150
 *                                   object waiter):
 *         cdef WriteUnixTransport handle
 *         handle = WriteUnixTransport.__new__(WriteUnixTransport)             # <<<<<<<<<<<<<<
 * 
 *         # We listen for read events on write-end of the pipe. When
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_WriteUnixTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_WriteUnixTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_WriteUnixTransport)))) __PYX_ERR(17, 150, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":156
 *         # receive an error -- we want to silence that error, and just
 *         # close the transport.
 *         handle._close_on_read_error()             # <<<<<<<<<<<<<<
 * 
 *         handle._init(loop, protocol, server, waiter)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_on_read_error(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":158
 *         handle._close_on_read_error()
 * 
 *         handle._init(loop, protocol, server, waiter)             # <<<<<<<<<<<<<<
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop, __pyx_v_protocol, __pyx_v_server, __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":159
 * 
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)             # <<<<<<<<<<<<<<
 *         return handle
 * 
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_init_uv_handle(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_handle), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":160
 *         handle._init(loop, protocol, server, waiter)
 *         __pipe_init_uv_handle(<UVStream>handle, loop)
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":147
 * 
 *     @staticmethod
 *     cdef WriteUnixTransport new(Loop loop, object protocol, Server server,             # <<<<<<<<<<<<<<
 *                                   object waiter):
 *         cdef WriteUnixTransport handle
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.WriteUnixTransport.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":162
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_18WriteUnixTransport__new_socket(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/pipe.pyx":163
 * 
 *     cdef _new_socket(self):
 *         return __pipe_get_socket(<UVSocketHandle>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef open(self, int sockfd):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/pipe.pyx":162
 *         return handle
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.WriteUnixTransport._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":165
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_18WriteUnixTransport_open(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self, int __pyx_v_sockfd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("open", 0);

  /* "uvloop/handles/pipe.pyx":166
 * 
 *     cdef open(self, int sockfd):
 *         __pipe_open(<UVStream>self, sockfd)             # <<<<<<<<<<<<<<
 * 
 *     def pause_reading(self):
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___pipe_open(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_self), __pyx_v_sockfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":165
 *         return __pipe_get_socket(<UVSocketHandle>self)
 * 
 *     cdef open(self, int sockfd):             # <<<<<<<<<<<<<<
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.WriteUnixTransport.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":168
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     def pause_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18WriteUnixTransport_1pause_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18WriteUnixTransport_1pause_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pause_reading (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18WriteUnixTransport_pause_reading(((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18WriteUnixTransport_pause_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pause_reading", 0);

  /* "uvloop/handles/pipe.pyx":169
 * 
 *     def pause_reading(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 *     def resume_reading(self):
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 169, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":168
 *         __pipe_open(<UVStream>self, sockfd)
 * 
 *     def pause_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteUnixTransport.pause_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":171
 *         raise NotImplementedError
 * 
 *     def resume_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18WriteUnixTransport_3resume_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18WriteUnixTransport_3resume_reading(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resume_reading (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18WriteUnixTransport_2resume_reading(((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18WriteUnixTransport_2resume_reading(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resume_reading", 0);

  /* "uvloop/handles/pipe.pyx":172
 * 
 *     def resume_reading(self):
 *         raise NotImplementedError             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  __PYX_ERR(17, 172, __pyx_L1_error)

  /* "uvloop/handles/pipe.pyx":171
 *         raise NotImplementedError
 * 
 *     def resume_reading(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteUnixTransport.resume_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":179
 *         UnixTransport transport
 * 
 *     def __cinit__(self, loop, transport):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_19_PipeConnectRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_19_PipeConnectRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_v_transport = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_transport,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transport)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(17, 179, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(17, 179, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_loop = values[0];
    __pyx_v_transport = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 179, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop._PipeConnectRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_19_PipeConnectRequest___cinit__(((struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)__pyx_v_self), __pyx_v_loop, __pyx_v_transport);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_19_PipeConnectRequest___cinit__(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_loop, PyObject *__pyx_v_transport) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/pipe.pyx":180
 * 
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))             # <<<<<<<<<<<<<<
 *         if self.request is NULL:
 *             self.on_done()
 */
  __pyx_v_self->__pyx_base.request = ((uv_req_t *)PyMem_Malloc((sizeof(uv_connect_t))));

  /* "uvloop/handles/pipe.pyx":181
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.request == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/pipe.pyx":182
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         self.request.data = <void*>self
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/pipe.pyx":183
 *         if self.request is NULL:
 *             self.on_done()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         self.request.data = <void*>self
 *         self.transport = transport
 */
    PyErr_NoMemory(); __PYX_ERR(17, 183, __pyx_L1_error)

    /* "uvloop/handles/pipe.pyx":181
 *     def __cinit__(self, loop, transport):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/pipe.pyx":184
 *             self.on_done()
 *             raise MemoryError()
 *         self.request.data = <void*>self             # <<<<<<<<<<<<<<
 *         self.transport = transport
 * 
 */
  __pyx_v_self->__pyx_base.request->data = ((void *)__pyx_v_self);

  /* "uvloop/handles/pipe.pyx":185
 *             raise MemoryError()
 *         self.request.data = <void*>self
 *         self.transport = transport             # <<<<<<<<<<<<<<
 * 
 *     cdef connect(self, char* addr):
 */
  if (!(likely(((__pyx_v_transport) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_transport, __pyx_ptype_6uvloop_4loop_UnixTransport))))) __PYX_ERR(17, 185, __pyx_L1_error)
  __pyx_t_2 = __pyx_v_transport;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->transport);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->transport));
  __pyx_v_self->transport = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/pipe.pyx":179
 *         UnixTransport transport
 * 
 *     def __cinit__(self, loop, transport):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(sizeof(uv.uv_connect_t))
 *         if self.request is NULL:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop._PipeConnectRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":187
 *         self.transport = transport
 * 
 *     cdef connect(self, char* addr):             # <<<<<<<<<<<<<<
 *         # uv_pipe_connect returns void
 *         uv.uv_pipe_connect(<uv.uv_connect_t*>self.request,
 */

static PyObject *__pyx_f_6uvloop_4loop_19_PipeConnectRequest_connect(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_self, char *__pyx_v_addr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connect", 0);

  /* "uvloop/handles/pipe.pyx":189
 *     cdef connect(self, char* addr):
 *         # uv_pipe_connect returns void
 *         uv.uv_pipe_connect(<uv.uv_connect_t*>self.request,             # <<<<<<<<<<<<<<
 *                            <uv.uv_pipe_t*>self.transport._handle,
 *                            addr,
 */
  uv_pipe_connect(((uv_connect_t *)__pyx_v_self->__pyx_base.request), ((uv_pipe_t *)__pyx_v_self->transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_addr, __pyx_f_6uvloop_4loop___pipe_connect_callback);

  /* "uvloop/handles/pipe.pyx":187
 *         self.transport = transport
 * 
 *     cdef connect(self, char* addr):             # <<<<<<<<<<<<<<
 *         # uv_pipe_connect returns void
 *         uv.uv_pipe_connect(<uv.uv_connect_t*>self.request,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/pipe.pyx":194
 *                            __pipe_connect_callback)
 * 
 * cdef void __pipe_connect_callback(uv.uv_connect_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         _PipeConnectRequest wrapper
 */

static void __pyx_f_6uvloop_4loop___pipe_connect_callback(uv_connect_t *__pyx_v_req, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *__pyx_v_wrapper = 0;
  struct __pyx_obj_6uvloop_4loop_UnixTransport *__pyx_v_transport = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  char const *__pyx_t_18;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pipe_connect_callback", 0);

  /* "uvloop/handles/pipe.pyx":199
 *         UnixTransport transport
 * 
 *     wrapper = <_PipeConnectRequest> req.data             # <<<<<<<<<<<<<<
 *     transport = wrapper.transport
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_wrapper = ((struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":200
 * 
 *     wrapper = <_PipeConnectRequest> req.data
 *     transport = wrapper.transport             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_wrapper->transport);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_transport = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/pipe.pyx":202
 *     transport = wrapper.transport
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *     else:
 */
  __pyx_t_2 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/pipe.pyx":203
 * 
 *     if status < 0:
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *     else:
 *         exc = None
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/pipe.pyx":202
 *     transport = wrapper.transport
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/pipe.pyx":205
 *         exc = convert_error(status)
 *     else:
 *         exc = None             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_exc = Py_None;
  }
  __pyx_L3:;

  /* "uvloop/handles/pipe.pyx":207
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "uvloop/handles/pipe.pyx":208
 * 
 *     try:
 *         transport._on_connect(exc)             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         wrapper.transport._error(ex, False)
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_v_transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._on_connect(((struct __pyx_obj_6uvloop_4loop_UVStream *)__pyx_v_transport), __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 208, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/handles/pipe.pyx":207
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/pipe.pyx":209
 *     try:
 *         transport._on_connect(exc)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         wrapper.transport._error(ex, False)
 *     finally:
 */
      __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_6) {
        __Pyx_AddTraceback("uvloop.loop.__pipe_connect_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(17, 209, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_ex = __pyx_t_7;
        /*try:*/ {

          /* "uvloop/handles/pipe.pyx":210
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 *         wrapper.transport._error(ex, False)             # <<<<<<<<<<<<<<
 *     finally:
 *         wrapper.on_done()
 */
          __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport *)__pyx_v_wrapper->transport->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_wrapper->transport), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 210, __pyx_L20_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }

        /* "uvloop/handles/pipe.pyx":209
 *     try:
 *         transport._on_connect(exc)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         wrapper.transport._error(ex, False)
 *     finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L21;
          }
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L20_error:;
            __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_12);
            __Pyx_XGOTREF(__pyx_t_13);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex);
              __pyx_v_ex = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_XGIVEREF(__pyx_t_16);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
            __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
            goto __pyx_L9_except_error;
          }
          __pyx_L21:;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "uvloop/handles/pipe.pyx":207
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         transport._on_connect(exc)
 *     except BaseException as ex:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L5_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L14_try_end:;
    }
  }

  /* "uvloop/handles/pipe.pyx":212
 *         wrapper.transport._error(ex, False)
 *     finally:
 *         wrapper.on_done()             # <<<<<<<<<<<<<<
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest *)__pyx_v_wrapper->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_wrapper)); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_10 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
      {
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest *)__pyx_v_wrapper->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_wrapper)); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 212, __pyx_L27_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_18;
      goto __pyx_L1_error;
      __pyx_L27_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/handles/pipe.pyx":194
 *                            __pipe_connect_callback)
 * 
 * cdef void __pipe_connect_callback(uv.uv_connect_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 *     cdef:
 *         _PipeConnectRequest wrapper
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__pipe_connect_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_wrapper);
  __Pyx_XDECREF((PyObject *)__pyx_v_transport);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/process.pyx":5
 *     """Abstract class; wrapper over uv_process_t handle."""
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.uv_opt_env = NULL
 *         self.uv_opt_args = NULL
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_9UVProcess_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_9UVProcess_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_9UVProcess___cinit__(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_9UVProcess___cinit__(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/process.pyx":6
 * 
 *     def __cinit__(self):
 *         self.uv_opt_env = NULL             # <<<<<<<<<<<<<<
 *         self.uv_opt_args = NULL
 *         self._returncode = None
 */
  __pyx_v_self->uv_opt_env = NULL;

  /* "uvloop/handles/process.pyx":7
 *     def __cinit__(self):
 *         self.uv_opt_env = NULL
 *         self.uv_opt_args = NULL             # <<<<<<<<<<<<<<
 *         self._returncode = None
 *         self._pid = None
 */
  __pyx_v_self->uv_opt_args = NULL;

  /* "uvloop/handles/process.pyx":8
 *         self.uv_opt_env = NULL
 *         self.uv_opt_args = NULL
 *         self._returncode = None             # <<<<<<<<<<<<<<
 *         self._pid = None
 *         self._fds_to_close = set()
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_returncode);
  __Pyx_DECREF(__pyx_v_self->_returncode);
  __pyx_v_self->_returncode = Py_None;

  /* "uvloop/handles/process.pyx":9
 *         self.uv_opt_args = NULL
 *         self._returncode = None
 *         self._pid = None             # <<<<<<<<<<<<<<
 *         self._fds_to_close = set()
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_pid);
  __Pyx_DECREF(__pyx_v_self->_pid);
  __pyx_v_self->_pid = Py_None;

  /* "uvloop/handles/process.pyx":10
 *         self._returncode = None
 *         self._pid = None
 *         self._fds_to_close = set()             # <<<<<<<<<<<<<<
 * 
 *     cdef _init(self, Loop loop, list args, dict env,
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_fds_to_close);
  __Pyx_DECREF(__pyx_v_self->_fds_to_close);
  __pyx_v_self->_fds_to_close = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":5
 *     """Abstract class; wrapper over uv_process_t handle."""
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.uv_opt_env = NULL
 *         self.uv_opt_args = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcess.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":12
 *         self._fds_to_close = set()
 * 
 *     cdef _init(self, Loop loop, list args, dict env,             # <<<<<<<<<<<<<<
 *                cwd, start_new_session,
 *                stdin, stdout, stderr, pass_fds,
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v_debug_flags) {
  int __pyx_v_err;
  PyObject *__pyx_v_restore_inheritable = NULL;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_fds_to_close = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/process.pyx":19
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":21
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_process_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_process_t))));

  /* "uvloop/handles/process.pyx":23
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_process_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":24
 *                             PyMem_Malloc(sizeof(uv.uv_process_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":25
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         # Too early to call _finish_init, but still a lot of work to do.
 */
    PyErr_NoMemory(); __PYX_ERR(6, 25, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":23
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_process_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/process.pyx":30
 *         # Let's set handle.data to NULL, so in case something goes wrong,
 *         # callbacks have a chance to avoid casting *something* into UVHandle.
 *         self._handle.data = NULL             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_v_self->__pyx_base._handle->data = NULL;

  /* "uvloop/handles/process.pyx":32
 *         self._handle.data = NULL
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self._init_options(args, env, cwd, start_new_session,
 *                                stdin, stdout, stderr)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/process.pyx":33
 * 
 *         try:
 *             self._init_options(args, env, cwd, start_new_session,             # <<<<<<<<<<<<<<
 *                                stdin, stdout, stderr)
 * 
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->_init_options(__pyx_v_self, __pyx_v_args, __pyx_v_env, __pyx_v_cwd, __pyx_v_start_new_session, __pyx_v_stdin, __pyx_v_stdout, __pyx_v_stderr); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 33, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":36
 *                                stdin, stdout, stderr)
 * 
 *             restore_inheritable = set()             # <<<<<<<<<<<<<<
 *             if pass_fds:
 *                 for fd in pass_fds:
 */
      __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 36, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_restore_inheritable = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":37
 * 
 *             restore_inheritable = set()
 *             if pass_fds:             # <<<<<<<<<<<<<<
 *                 for fd in pass_fds:
 *                     if not os_get_inheritable(fd):
 */
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_pass_fds); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 37, __pyx_L4_error)
      if (__pyx_t_2) {

        /* "uvloop/handles/process.pyx":38
 *             restore_inheritable = set()
 *             if pass_fds:
 *                 for fd in pass_fds:             # <<<<<<<<<<<<<<
 *                     if not os_get_inheritable(fd):
 *                         restore_inheritable.add(fd)
 */
        if (likely(PyList_CheckExact(__pyx_v_pass_fds)) || PyTuple_CheckExact(__pyx_v_pass_fds)) {
          __pyx_t_1 = __pyx_v_pass_fds; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_pass_fds); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 38, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 38, __pyx_L4_error)
        }
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(6, 38, __pyx_L4_error)
              #else
              __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 38, __pyx_L4_error)
              __Pyx_GOTREF(__pyx_t_8);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(6, 38, __pyx_L4_error)
              #else
              __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 38, __pyx_L4_error)
              __Pyx_GOTREF(__pyx_t_8);
              #endif
            }
          } else {
            __pyx_t_8 = __pyx_t_7(__pyx_t_1);
            if (unlikely(!__pyx_t_8)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(6, 38, __pyx_L4_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_8);
          }
          __Pyx_XDECREF_SET(__pyx_v_fd, __pyx_t_8);
          __pyx_t_8 = 0;

          /* "uvloop/handles/process.pyx":39
 *             if pass_fds:
 *                 for fd in pass_fds:
 *                     if not os_get_inheritable(fd):             # <<<<<<<<<<<<<<
 *                         restore_inheritable.add(fd)
 *                         os_set_inheritable(fd, True)
 */
          __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_get_inheritable);
          __pyx_t_9 = __pyx_v_6uvloop_4loop_os_get_inheritable; __pyx_t_10 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
            }
          }
          if (!__pyx_t_10) {
            __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_fd); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
          } else {
            __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 39, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_11);
            __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
            __Pyx_INCREF(__pyx_v_fd);
            __Pyx_GIVEREF(__pyx_v_fd);
            PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_fd);
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          }
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 39, __pyx_L4_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_12 = ((!__pyx_t_2) != 0);
          if (__pyx_t_12) {

            /* "uvloop/handles/process.pyx":40
 *                 for fd in pass_fds:
 *                     if not os_get_inheritable(fd):
 *                         restore_inheritable.add(fd)             # <<<<<<<<<<<<<<
 *                         os_set_inheritable(fd, True)
 *         except:
 */
            __pyx_t_13 = PySet_Add(__pyx_v_restore_inheritable, __pyx_v_fd); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(6, 40, __pyx_L4_error)

            /* "uvloop/handles/process.pyx":41
 *                     if not os_get_inheritable(fd):
 *                         restore_inheritable.add(fd)
 *                         os_set_inheritable(fd, True)             # <<<<<<<<<<<<<<
 *         except:
 *             self._abort_init()
 */
            __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
            __pyx_t_9 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_11 = NULL;
            __pyx_t_14 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
              __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
              if (likely(__pyx_t_11)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
                __Pyx_INCREF(__pyx_t_11);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_9, function);
                __pyx_t_14 = 1;
              }
            }
            __pyx_t_10 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 41, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_10);
            if (__pyx_t_11) {
              __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
            }
            __Pyx_INCREF(__pyx_v_fd);
            __Pyx_GIVEREF(__pyx_v_fd);
            PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_14, __pyx_v_fd);
            __Pyx_INCREF(Py_True);
            __Pyx_GIVEREF(Py_True);
            PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_14, Py_True);
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 41, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

            /* "uvloop/handles/process.pyx":39
 *             if pass_fds:
 *                 for fd in pass_fds:
 *                     if not os_get_inheritable(fd):             # <<<<<<<<<<<<<<
 *                         restore_inheritable.add(fd)
 *                         os_set_inheritable(fd, True)
 */
          }

          /* "uvloop/handles/process.pyx":38
 *             restore_inheritable = set()
 *             if pass_fds:
 *                 for fd in pass_fds:             # <<<<<<<<<<<<<<
 *                     if not os_get_inheritable(fd):
 *                         restore_inheritable.add(fd)
 */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "uvloop/handles/process.pyx":37
 * 
 *             restore_inheritable = set()
 *             if pass_fds:             # <<<<<<<<<<<<<<
 *                 for fd in pass_fds:
 *                     if not os_get_inheritable(fd):
 */
      }

      /* "uvloop/handles/process.pyx":32
 *         self._handle.data = NULL
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self._init_options(args, env, cwd, start_new_session,
 *                                stdin, stdout, stderr)
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":42
 *                         restore_inheritable.add(fd)
 *                         os_set_inheritable(fd, True)
 *         except:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.UVProcess._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(6, 42, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_9);

      /* "uvloop/handles/process.pyx":43
 *                         os_set_inheritable(fd, True)
 *         except:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise
 * 
 */
      __pyx_t_10 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 43, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "uvloop/handles/process.pyx":44
 *         except:
 *             self._abort_init()
 *             raise             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_spawn(loop.uvloop,
 */
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_8, __pyx_t_9);
      __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; 
      __PYX_ERR(6, 44, __pyx_L6_except_error)
    }
    __pyx_L6_except_error:;

    /* "uvloop/handles/process.pyx":32
 *         self._handle.data = NULL
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self._init_options(args, env, cwd, start_new_session,
 *                                stdin, stdout, stderr)
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/process.pyx":46
 *             raise
 * 
 *         err = uv.uv_spawn(loop.uvloop,             # <<<<<<<<<<<<<<
 *                           <uv.uv_process_t*>self._handle,
 *                           &self.options)
 */
  __pyx_v_err = uv_spawn(__pyx_v_loop->uvloop, ((uv_process_t *)__pyx_v_self->__pyx_base._handle), (&__pyx_v_self->options));

  /* "uvloop/handles/process.pyx":49
 *                           <uv.uv_process_t*>self._handle,
 *                           &self.options)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_12 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_12) {

    /* "uvloop/handles/process.pyx":50
 *                           &self.options)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "uvloop/handles/process.pyx":51
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_t_9 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_Raise(__pyx_t_9, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __PYX_ERR(6, 51, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":49
 *                           <uv.uv_process_t*>self._handle,
 *                           &self.options)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/process.pyx":53
 *             raise convert_error(err)
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *         # asyncio caches the PID in BaseSubprocessTransport,
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "uvloop/handles/process.pyx":58
 *         # so that the transport knows what the PID was even
 *         # after the process is finished.
 *         self._pid = (<uv.uv_process_t*>self._handle).pid             # <<<<<<<<<<<<<<
 * 
 *         for fd in restore_inheritable:
 */
  __pyx_t_9 = __Pyx_PyInt_From_int(((uv_process_t *)__pyx_v_self->__pyx_base._handle)->pid); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __Pyx_GOTREF(__pyx_v_self->_pid);
  __Pyx_DECREF(__pyx_v_self->_pid);
  __pyx_v_self->_pid = __pyx_t_9;
  __pyx_t_9 = 0;

  /* "uvloop/handles/process.pyx":60
 *         self._pid = (<uv.uv_process_t*>self._handle).pid
 * 
 *         for fd in restore_inheritable:             # <<<<<<<<<<<<<<
 *             os_set_inheritable(fd, False)
 * 
 */
  __pyx_t_9 = PyObject_GetIter(__pyx_v_restore_inheritable); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 60, __pyx_L1_error)
  for (;;) {
    {
      __pyx_t_8 = __pyx_t_7(__pyx_t_9);
      if (unlikely(!__pyx_t_8)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 60, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF_SET(__pyx_v_fd, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "uvloop/handles/process.pyx":61
 * 
 *         for fd in restore_inheritable:
 *             os_set_inheritable(fd, False)             # <<<<<<<<<<<<<<
 * 
 *         fds_to_close = self._fds_to_close
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
    __pyx_t_1 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (__pyx_t_10) {
      __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
    }
    __Pyx_INCREF(__pyx_v_fd);
    __Pyx_GIVEREF(__pyx_v_fd);
    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_fd);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, Py_False);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "uvloop/handles/process.pyx":60
 *         self._pid = (<uv.uv_process_t*>self._handle).pid
 * 
 *         for fd in restore_inheritable:             # <<<<<<<<<<<<<<
 *             os_set_inheritable(fd, False)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "uvloop/handles/process.pyx":63
 *             os_set_inheritable(fd, False)
 * 
 *         fds_to_close = self._fds_to_close             # <<<<<<<<<<<<<<
 *         self._fds_to_close = None
 *         for fd in fds_to_close:
 */
  __pyx_t_9 = __pyx_v_self->_fds_to_close;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_v_fds_to_close = ((PyObject*)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "uvloop/handles/process.pyx":64
 * 
 *         fds_to_close = self._fds_to_close
 *         self._fds_to_close = None             # <<<<<<<<<<<<<<
 *         for fd in fds_to_close:
 *             os_close(fd)
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_fds_to_close);
  __Pyx_DECREF(__pyx_v_self->_fds_to_close);
  __pyx_v_self->_fds_to_close = ((PyObject*)Py_None);

  /* "uvloop/handles/process.pyx":65
 *         fds_to_close = self._fds_to_close
 *         self._fds_to_close = None
 *         for fd in fds_to_close:             # <<<<<<<<<<<<<<
 *             os_close(fd)
 * 
 */
  __pyx_t_9 = PyObject_GetIter(__pyx_v_fds_to_close); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 65, __pyx_L1_error)
  for (;;) {
    {
      __pyx_t_8 = __pyx_t_7(__pyx_t_9);
      if (unlikely(!__pyx_t_8)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 65, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF_SET(__pyx_v_fd, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "uvloop/handles/process.pyx":66
 *         self._fds_to_close = None
 *         for fd in fds_to_close:
 *             os_close(fd)             # <<<<<<<<<<<<<<
 * 
 *         if debug_flags & __PROCESS_DEBUG_SLEEP_AFTER_FORK:
 */
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_close);
    __pyx_t_1 = __pyx_v_6uvloop_4loop_os_close; __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_11) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_fd); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_INCREF(__pyx_v_fd);
      __Pyx_GIVEREF(__pyx_v_fd);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_fd);
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "uvloop/handles/process.pyx":65
 *         fds_to_close = self._fds_to_close
 *         self._fds_to_close = None
 *         for fd in fds_to_close:             # <<<<<<<<<<<<<<
 *             os_close(fd)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "uvloop/handles/process.pyx":68
 *             os_close(fd)
 * 
 *         if debug_flags & __PROCESS_DEBUG_SLEEP_AFTER_FORK:             # <<<<<<<<<<<<<<
 *             time_sleep(1)
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_AndObjC(__pyx_v_debug_flags, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__pyx_t_12) {

    /* "uvloop/handles/process.pyx":69
 * 
 *         if debug_flags & __PROCESS_DEBUG_SLEEP_AFTER_FORK:
 *             time_sleep(1)             # <<<<<<<<<<<<<<
 * 
 *     cdef _close_after_spawn(self, int fd):
 */
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_time_sleep, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "uvloop/handles/process.pyx":68
 *             os_close(fd)
 * 
 *         if debug_flags & __PROCESS_DEBUG_SLEEP_AFTER_FORK:             # <<<<<<<<<<<<<<
 *             time_sleep(1)
 * 
 */
  }

  /* "uvloop/handles/process.pyx":12
 *         self._fds_to_close = set()
 * 
 *     cdef _init(self, Loop loop, list args, dict env,             # <<<<<<<<<<<<<<
 *                cwd, start_new_session,
 *                stdin, stdout, stderr, pass_fds,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_restore_inheritable);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_fds_to_close);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":71
 *             time_sleep(1)
 * 
 *     cdef _close_after_spawn(self, int fd):             # <<<<<<<<<<<<<<
 *         if self._fds_to_close is None:
 *             raise RuntimeError(
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__close_after_spawn(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int __pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_close_after_spawn", 0);

  /* "uvloop/handles/process.pyx":72
 * 
 *     cdef _close_after_spawn(self, int fd):
 *         if self._fds_to_close is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'UVProcess._close_after_spawn called after uv_spawn')
 */
  __pyx_t_1 = (__pyx_v_self->_fds_to_close == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":73
 *     cdef _close_after_spawn(self, int fd):
 *         if self._fds_to_close is None:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'UVProcess._close_after_spawn called after uv_spawn')
 *         self._fds_to_close.add(fd)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(6, 73, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":72
 * 
 *     cdef _close_after_spawn(self, int fd):
 *         if self._fds_to_close is None:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'UVProcess._close_after_spawn called after uv_spawn')
 */
  }

  /* "uvloop/handles/process.pyx":75
 *             raise RuntimeError(
 *                 'UVProcess._close_after_spawn called after uv_spawn')
 *         self._fds_to_close.add(fd)             # <<<<<<<<<<<<<<
 * 
 *     cdef _free(self):
 */
  if (unlikely(__pyx_v_self->_fds_to_close == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
    __PYX_ERR(6, 75, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PySet_Add(__pyx_v_self->_fds_to_close, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(6, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":71
 *             time_sleep(1)
 * 
 *     cdef _close_after_spawn(self, int fd):             # <<<<<<<<<<<<<<
 *         if self._fds_to_close is None:
 *             raise RuntimeError(
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._close_after_spawn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":77
 *         self._fds_to_close.add(fd)
 * 
 *     cdef _free(self):             # <<<<<<<<<<<<<<
 *         if self.uv_opt_env is not NULL:
 *             PyMem_Free(self.uv_opt_env)
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__free(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_free", 0);

  /* "uvloop/handles/process.pyx":78
 * 
 *     cdef _free(self):
 *         if self.uv_opt_env is not NULL:             # <<<<<<<<<<<<<<
 *             PyMem_Free(self.uv_opt_env)
 *             self.uv_opt_env = NULL
 */
  __pyx_t_1 = ((__pyx_v_self->uv_opt_env != NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":79
 *     cdef _free(self):
 *         if self.uv_opt_env is not NULL:
 *             PyMem_Free(self.uv_opt_env)             # <<<<<<<<<<<<<<
 *             self.uv_opt_env = NULL
 * 
 */
    PyMem_Free(__pyx_v_self->uv_opt_env);

    /* "uvloop/handles/process.pyx":80
 *         if self.uv_opt_env is not NULL:
 *             PyMem_Free(self.uv_opt_env)
 *             self.uv_opt_env = NULL             # <<<<<<<<<<<<<<
 * 
 *         if self.uv_opt_args is not NULL:
 */
    __pyx_v_self->uv_opt_env = NULL;

    /* "uvloop/handles/process.pyx":78
 * 
 *     cdef _free(self):
 *         if self.uv_opt_env is not NULL:             # <<<<<<<<<<<<<<
 *             PyMem_Free(self.uv_opt_env)
 *             self.uv_opt_env = NULL
 */
  }

  /* "uvloop/handles/process.pyx":82
 *             self.uv_opt_env = NULL
 * 
 *         if self.uv_opt_args is not NULL:             # <<<<<<<<<<<<<<
 *             PyMem_Free(self.uv_opt_args)
 *             self.uv_opt_args = NULL
 */
  __pyx_t_1 = ((__pyx_v_self->uv_opt_args != NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":83
 * 
 *         if self.uv_opt_args is not NULL:
 *             PyMem_Free(self.uv_opt_args)             # <<<<<<<<<<<<<<
 *             self.uv_opt_args = NULL
 * 
 */
    PyMem_Free(__pyx_v_self->uv_opt_args);

    /* "uvloop/handles/process.pyx":84
 *         if self.uv_opt_args is not NULL:
 *             PyMem_Free(self.uv_opt_args)
 *             self.uv_opt_args = NULL             # <<<<<<<<<<<<<<
 * 
 *         UVHandle._free(self)
 */
    __pyx_v_self->uv_opt_args = NULL;

    /* "uvloop/handles/process.pyx":82
 *             self.uv_opt_env = NULL
 * 
 *         if self.uv_opt_args is not NULL:             # <<<<<<<<<<<<<<
 *             PyMem_Free(self.uv_opt_args)
 *             self.uv_opt_args = NULL
 */
  }

  /* "uvloop/handles/process.pyx":86
 *             self.uv_opt_args = NULL
 * 
 *         UVHandle._free(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef char** __to_cstring_array(self, list arr):
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop_8UVHandle__free(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":77
 *         self._fds_to_close.add(fd)
 * 
 *     cdef _free(self):             # <<<<<<<<<<<<<<
 *         if self.uv_opt_env is not NULL:
 *             PyMem_Free(self.uv_opt_env)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":88
 *         UVHandle._free(self)
 * 
 *     cdef char** __to_cstring_array(self, list arr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int i
 */

static char **__pyx_f_6uvloop_4loop_9UVProcess___to_cstring_array(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_arr) {
  int __pyx_v_i;
  int __pyx_v_arr_len;
  PyObject *__pyx_v_el = 0;
  char **__pyx_v_ret;
  char **__pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  __Pyx_RefNannySetupContext("__to_cstring_array", 0);

  /* "uvloop/handles/process.pyx":91
 *         cdef:
 *             int i
 *             int arr_len = len(arr)             # <<<<<<<<<<<<<<
 *             bytes el
 * 
 */
  if (unlikely(__pyx_v_arr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(6, 91, __pyx_L1_error)
  }
  __pyx_t_1 = PyList_GET_SIZE(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(6, 91, __pyx_L1_error)
  __pyx_v_arr_len = __pyx_t_1;

  /* "uvloop/handles/process.pyx":99
 *             assert arr_len > 0
 * 
 *         ret = <char **>PyMem_Malloc((arr_len + 1) * sizeof(char *))             # <<<<<<<<<<<<<<
 *         if ret is NULL:
 *             raise MemoryError()
 */
  __pyx_v_ret = ((char **)PyMem_Malloc(((__pyx_v_arr_len + 1) * (sizeof(char *)))));

  /* "uvloop/handles/process.pyx":100
 * 
 *         ret = <char **>PyMem_Malloc((arr_len + 1) * sizeof(char *))
 *         if ret is NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  __pyx_t_2 = ((__pyx_v_ret == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":101
 *         ret = <char **>PyMem_Malloc((arr_len + 1) * sizeof(char *))
 *         if ret is NULL:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         for i in range(arr_len):
 */
    PyErr_NoMemory(); __PYX_ERR(6, 101, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":100
 * 
 *         ret = <char **>PyMem_Malloc((arr_len + 1) * sizeof(char *))
 *         if ret is NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  }

  /* "uvloop/handles/process.pyx":103
 *             raise MemoryError()
 * 
 *         for i in range(arr_len):             # <<<<<<<<<<<<<<
 *             el = arr[i]
 *             # NB: PyBytes_AsSptring doesn't copy the data;
 */
  __pyx_t_3 = __pyx_v_arr_len;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "uvloop/handles/process.pyx":104
 * 
 *         for i in range(arr_len):
 *             el = arr[i]             # <<<<<<<<<<<<<<
 *             # NB: PyBytes_AsSptring doesn't copy the data;
 *             # we have to be careful when the "arr" is GCed,
 */
    if (unlikely(__pyx_v_arr == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(6, 104, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_arr, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(6, 104, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_el, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "uvloop/handles/process.pyx":108
 *             # we have to be careful when the "arr" is GCed,
 *             # and it shouldn't be ever mutated.
 *             ret[i] = PyBytes_AsString(el)             # <<<<<<<<<<<<<<
 * 
 *         ret[arr_len] = NULL
 */
    __pyx_t_6 = PyBytes_AsString(__pyx_v_el); if (unlikely(__pyx_t_6 == NULL)) __PYX_ERR(6, 108, __pyx_L1_error)
    (__pyx_v_ret[__pyx_v_i]) = __pyx_t_6;
  }

  /* "uvloop/handles/process.pyx":110
 *             ret[i] = PyBytes_AsString(el)
 * 
 *         ret[arr_len] = NULL             # <<<<<<<<<<<<<<
 *         return ret
 * 
 */
  (__pyx_v_ret[__pyx_v_arr_len]) = NULL;

  /* "uvloop/handles/process.pyx":111
 * 
 *         ret[arr_len] = NULL
 *         return ret             # <<<<<<<<<<<<<<
 * 
 *     cdef _init_options(self, list args, dict env, cwd, start_new_session,
 */
  __pyx_r = __pyx_v_ret;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":88
 *         UVHandle._free(self)
 * 
 *     cdef char** __to_cstring_array(self, list arr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int i
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("uvloop.loop.UVProcess.__to_cstring_array", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_el);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":113
 *         return ret
 * 
 *     cdef _init_options(self, list args, dict env, cwd, start_new_session,             # <<<<<<<<<<<<<<
 *                        stdin, stdout, stderr):
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_options(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char **__pyx_t_2;
  char *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_init_options", 0);
  __Pyx_INCREF(__pyx_v_cwd);

  /* "uvloop/handles/process.pyx":116
 *                        stdin, stdout, stderr):
 * 
 *         memset(&self.options, 0, sizeof(uv.uv_process_options_t))             # <<<<<<<<<<<<<<
 * 
 *         self._init_env(env)
 */
  memset((&__pyx_v_self->options), 0, (sizeof(uv_process_options_t)));

  /* "uvloop/handles/process.pyx":118
 *         memset(&self.options, 0, sizeof(uv.uv_process_options_t))
 * 
 *         self._init_env(env)             # <<<<<<<<<<<<<<
 *         self.options.env = self.uv_opt_env
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->_init_env(__pyx_v_self, __pyx_v_env); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":119
 * 
 *         self._init_env(env)
 *         self.options.env = self.uv_opt_env             # <<<<<<<<<<<<<<
 * 
 *         self._init_args(args)
 */
  __pyx_t_2 = __pyx_v_self->uv_opt_env;
  __pyx_v_self->options.env = __pyx_t_2;

  /* "uvloop/handles/process.pyx":121
 *         self.options.env = self.uv_opt_env
 * 
 *         self._init_args(args)             # <<<<<<<<<<<<<<
 *         self.options.file = self.uv_opt_file
 *         self.options.args = self.uv_opt_args
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->_init_args(__pyx_v_self, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":122
 * 
 *         self._init_args(args)
 *         self.options.file = self.uv_opt_file             # <<<<<<<<<<<<<<
 *         self.options.args = self.uv_opt_args
 * 
 */
  __pyx_t_3 = __pyx_v_self->uv_opt_file;
  __pyx_v_self->options.file = __pyx_t_3;

  /* "uvloop/handles/process.pyx":123
 *         self._init_args(args)
 *         self.options.file = self.uv_opt_file
 *         self.options.args = self.uv_opt_args             # <<<<<<<<<<<<<<
 * 
 *         if start_new_session:
 */
  __pyx_t_2 = __pyx_v_self->uv_opt_args;
  __pyx_v_self->options.args = __pyx_t_2;

  /* "uvloop/handles/process.pyx":125
 *         self.options.args = self.uv_opt_args
 * 
 *         if start_new_session:             # <<<<<<<<<<<<<<
 *             self.options.flags |= uv.UV_PROCESS_DETACHED
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_start_new_session); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 125, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "uvloop/handles/process.pyx":126
 * 
 *         if start_new_session:
 *             self.options.flags |= uv.UV_PROCESS_DETACHED             # <<<<<<<<<<<<<<
 * 
 *         if cwd is not None:
 */
    __pyx_v_self->options.flags = (__pyx_v_self->options.flags | UV_PROCESS_DETACHED);

    /* "uvloop/handles/process.pyx":125
 *         self.options.args = self.uv_opt_args
 * 
 *         if start_new_session:             # <<<<<<<<<<<<<<
 *             self.options.flags |= uv.UV_PROCESS_DETACHED
 * 
 */
  }

  /* "uvloop/handles/process.pyx":128
 *             self.options.flags |= uv.UV_PROCESS_DETACHED
 * 
 *         if cwd is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(cwd, str):
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 */
  __pyx_t_4 = (__pyx_v_cwd != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "uvloop/handles/process.pyx":129
 * 
 *         if cwd is not None:
 *             if isinstance(cwd, str):             # <<<<<<<<<<<<<<
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):
 */
    __pyx_t_5 = PyUnicode_Check(__pyx_v_cwd); 
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":130
 *         if cwd is not None:
 *             if isinstance(cwd, str):
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)             # <<<<<<<<<<<<<<
 *             if not isinstance(cwd, bytes):
 *                 raise ValueError('cwd must be a str or bytes object')
 */
      __pyx_t_1 = PyUnicode_EncodeFSDefault(__pyx_v_cwd); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_cwd, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":129
 * 
 *         if cwd is not None:
 *             if isinstance(cwd, str):             # <<<<<<<<<<<<<<
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):
 */
    }

    /* "uvloop/handles/process.pyx":131
 *             if isinstance(cwd, str):
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):             # <<<<<<<<<<<<<<
 *                 raise ValueError('cwd must be a str or bytes object')
 *             self.__cwd = cwd
 */
    __pyx_t_4 = PyBytes_Check(__pyx_v_cwd); 
    __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0);
    if (__pyx_t_5) {

      /* "uvloop/handles/process.pyx":132
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):
 *                 raise ValueError('cwd must be a str or bytes object')             # <<<<<<<<<<<<<<
 *             self.__cwd = cwd
 *             self.options.cwd = PyBytes_AsString(self.__cwd)
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 132, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(6, 132, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":131
 *             if isinstance(cwd, str):
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):             # <<<<<<<<<<<<<<
 *                 raise ValueError('cwd must be a str or bytes object')
 *             self.__cwd = cwd
 */
    }

    /* "uvloop/handles/process.pyx":133
 *             if not isinstance(cwd, bytes):
 *                 raise ValueError('cwd must be a str or bytes object')
 *             self.__cwd = cwd             # <<<<<<<<<<<<<<
 *             self.options.cwd = PyBytes_AsString(self.__cwd)
 * 
 */
    if (!(likely(PyBytes_CheckExact(__pyx_v_cwd))||((__pyx_v_cwd) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_cwd)->tp_name), 0))) __PYX_ERR(6, 133, __pyx_L1_error)
    __pyx_t_1 = __pyx_v_cwd;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx___cwd);
    __Pyx_DECREF(__pyx_v_self->__pyx___cwd);
    __pyx_v_self->__pyx___cwd = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":134
 *                 raise ValueError('cwd must be a str or bytes object')
 *             self.__cwd = cwd
 *             self.options.cwd = PyBytes_AsString(self.__cwd)             # <<<<<<<<<<<<<<
 * 
 *         self.options.exit_cb = &__uvprocess_on_exit_callback
 */
    __pyx_t_1 = __pyx_v_self->__pyx___cwd;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = PyBytes_AsString(__pyx_t_1); if (unlikely(__pyx_t_3 == NULL)) __PYX_ERR(6, 134, __pyx_L1_error)
    __pyx_v_self->options.cwd = __pyx_t_3;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":128
 *             self.options.flags |= uv.UV_PROCESS_DETACHED
 * 
 *         if cwd is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(cwd, str):
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 */
  }

  /* "uvloop/handles/process.pyx":136
 *             self.options.cwd = PyBytes_AsString(self.__cwd)
 * 
 *         self.options.exit_cb = &__uvprocess_on_exit_callback             # <<<<<<<<<<<<<<
 * 
 *         self._init_files(stdin, stdout, stderr)
 */
  __pyx_v_self->options.exit_cb = (&__pyx_f_6uvloop_4loop___uvprocess_on_exit_callback);

  /* "uvloop/handles/process.pyx":138
 *         self.options.exit_cb = &__uvprocess_on_exit_callback
 * 
 *         self._init_files(stdin, stdout, stderr)             # <<<<<<<<<<<<<<
 * 
 *     cdef _init_args(self, list args):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->_init_files(__pyx_v_self, __pyx_v_stdin, __pyx_v_stdout, __pyx_v_stderr); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":113
 *         return ret
 * 
 *     cdef _init_options(self, list args, dict env, cwd, start_new_session,             # <<<<<<<<<<<<<<
 *                        stdin, stdout, stderr):
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._init_options", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cwd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":140
 *         self._init_files(stdin, stdout, stderr)
 * 
 *     cdef _init_args(self, list args):             # <<<<<<<<<<<<<<
 *         cdef:
 *             bytes path
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_args(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_path = 0;
  int __pyx_v_an;
  int __pyx_v_i;
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  char *__pyx_t_9;
  __Pyx_RefNannySetupContext("_init_args", 0);

  /* "uvloop/handles/process.pyx":143
 *         cdef:
 *             bytes path
 *             int an = len(args)             # <<<<<<<<<<<<<<
 * 
 *         if an < 1:
 */
  if (unlikely(__pyx_v_args == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(6, 143, __pyx_L1_error)
  }
  __pyx_t_1 = PyList_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(6, 143, __pyx_L1_error)
  __pyx_v_an = __pyx_t_1;

  /* "uvloop/handles/process.pyx":145
 *             int an = len(args)
 * 
 *         if an < 1:             # <<<<<<<<<<<<<<
 *             raise ValueError('cannot spawn a process: args are empty')
 * 
 */
  __pyx_t_2 = ((__pyx_v_an < 1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":146
 * 
 *         if an < 1:
 *             raise ValueError('cannot spawn a process: args are empty')             # <<<<<<<<<<<<<<
 * 
 *         self.__args = args.copy()
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(6, 146, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":145
 *             int an = len(args)
 * 
 *         if an < 1:             # <<<<<<<<<<<<<<
 *             raise ValueError('cannot spawn a process: args are empty')
 * 
 */
  }

  /* "uvloop/handles/process.pyx":148
 *             raise ValueError('cannot spawn a process: args are empty')
 * 
 *         self.__args = args.copy()             # <<<<<<<<<<<<<<
 *         for i in range(an):
 *             arg = args[i]
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_args, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 148, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 148, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(6, 148, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->__pyx___args);
  __Pyx_DECREF(__pyx_v_self->__pyx___args);
  __pyx_v_self->__pyx___args = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":149
 * 
 *         self.__args = args.copy()
 *         for i in range(an):             # <<<<<<<<<<<<<<
 *             arg = args[i]
 *             if isinstance(arg, str):
 */
  __pyx_t_6 = __pyx_v_an;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "uvloop/handles/process.pyx":150
 *         self.__args = args.copy()
 *         for i in range(an):
 *             arg = args[i]             # <<<<<<<<<<<<<<
 *             if isinstance(arg, str):
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 */
    if (unlikely(__pyx_v_args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(6, 150, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_args, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/handles/process.pyx":151
 *         for i in range(an):
 *             arg = args[i]
 *             if isinstance(arg, str):             # <<<<<<<<<<<<<<
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):
 */
    __pyx_t_2 = PyUnicode_Check(__pyx_v_arg); 
    __pyx_t_8 = (__pyx_t_2 != 0);
    if (__pyx_t_8) {

      /* "uvloop/handles/process.pyx":152
 *             arg = args[i]
 *             if isinstance(arg, str):
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)             # <<<<<<<<<<<<<<
 *             elif not isinstance(arg, bytes):
 *                 raise TypeError('all args must be str or bytes')
 */
      __pyx_t_3 = PyUnicode_EncodeFSDefault(__pyx_v_arg); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__pyx_v_self->__pyx___args == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(6, 152, __pyx_L1_error)
      }
      if (unlikely(__Pyx_SetItemInt(__pyx_v_self->__pyx___args, __pyx_v_i, __pyx_t_3, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0)) __PYX_ERR(6, 152, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/process.pyx":151
 *         for i in range(an):
 *             arg = args[i]
 *             if isinstance(arg, str):             # <<<<<<<<<<<<<<
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):
 */
      goto __pyx_L6;
    }

    /* "uvloop/handles/process.pyx":153
 *             if isinstance(arg, str):
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):             # <<<<<<<<<<<<<<
 *                 raise TypeError('all args must be str or bytes')
 * 
 */
    __pyx_t_8 = PyBytes_Check(__pyx_v_arg); 
    __pyx_t_2 = ((!(__pyx_t_8 != 0)) != 0);
    if (__pyx_t_2) {

      /* "uvloop/handles/process.pyx":154
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):
 *                 raise TypeError('all args must be str or bytes')             # <<<<<<<<<<<<<<
 * 
 *         path = self.__args[0]
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(6, 154, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":153
 *             if isinstance(arg, str):
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):             # <<<<<<<<<<<<<<
 *                 raise TypeError('all args must be str or bytes')
 * 
 */
    }
    __pyx_L6:;
  }

  /* "uvloop/handles/process.pyx":156
 *                 raise TypeError('all args must be str or bytes')
 * 
 *         path = self.__args[0]             # <<<<<<<<<<<<<<
 *         self.uv_opt_file = PyBytes_AsString(path)
 *         self.uv_opt_args = self.__to_cstring_array(self.__args)
 */
  if (unlikely(__pyx_v_self->__pyx___args == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(6, 156, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_self->__pyx___args, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(6, 156, __pyx_L1_error)
  __pyx_v_path = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":157
 * 
 *         path = self.__args[0]
 *         self.uv_opt_file = PyBytes_AsString(path)             # <<<<<<<<<<<<<<
 *         self.uv_opt_args = self.__to_cstring_array(self.__args)
 * 
 */
  __pyx_t_9 = PyBytes_AsString(__pyx_v_path); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(6, 157, __pyx_L1_error)
  __pyx_v_self->uv_opt_file = __pyx_t_9;

  /* "uvloop/handles/process.pyx":158
 *         path = self.__args[0]
 *         self.uv_opt_file = PyBytes_AsString(path)
 *         self.uv_opt_args = self.__to_cstring_array(self.__args)             # <<<<<<<<<<<<<<
 * 
 *     cdef _init_env(self, dict env):
 */
  __pyx_t_3 = __pyx_v_self->__pyx___args;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_self->uv_opt_args = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx___to_cstring_array(__pyx_v_self, ((PyObject*)__pyx_t_3));
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":140
 *         self._init_files(stdin, stdout, stderr)
 * 
 *     cdef _init_args(self, list args):             # <<<<<<<<<<<<<<
 *         cdef:
 *             bytes path
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._init_args", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":160
 *         self.uv_opt_args = self.__to_cstring_array(self.__args)
 * 
 *     cdef _init_env(self, dict env):             # <<<<<<<<<<<<<<
 *         if env is not None and len(env):
 *             self.__env = list()
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_env(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, PyObject *__pyx_v_env) {
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("_init_env", 0);

  /* "uvloop/handles/process.pyx":161
 * 
 *     cdef _init_env(self, dict env):
 *         if env is not None and len(env):             # <<<<<<<<<<<<<<
 *             self.__env = list()
 *             for key in env:
 */
  __pyx_t_2 = (__pyx_v_env != ((PyObject*)Py_None));
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  if (unlikely(__pyx_v_env == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(6, 161, __pyx_L1_error)
  }
  __pyx_t_4 = PyDict_Size(__pyx_v_env); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(6, 161, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_4 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":162
 *     cdef _init_env(self, dict env):
 *         if env is not None and len(env):
 *             self.__env = list()             # <<<<<<<<<<<<<<
 *             for key in env:
 *                 val = env[key]
 */
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->__pyx___env);
    __Pyx_DECREF(__pyx_v_self->__pyx___env);
    __pyx_v_self->__pyx___env = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "uvloop/handles/process.pyx":163
 *         if env is not None and len(env):
 *             self.__env = list()
 *             for key in env:             # <<<<<<<<<<<<<<
 *                 val = env[key]
 * 
 */
    __pyx_t_4 = 0;
    if (unlikely(__pyx_v_env == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(6, 163, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_dict_iterator(__pyx_v_env, 1, ((PyObject *)NULL), (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_5);
    __pyx_t_5 = __pyx_t_8;
    __pyx_t_8 = 0;
    while (1) {
      __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_4, &__pyx_t_8, NULL, NULL, __pyx_t_7);
      if (unlikely(__pyx_t_9 == 0)) break;
      if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(6, 163, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "uvloop/handles/process.pyx":164
 *             self.__env = list()
 *             for key in env:
 *                 val = env[key]             # <<<<<<<<<<<<<<
 * 
 *                 if isinstance(key, str):
 */
      if (unlikely(__pyx_v_env == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(6, 164, __pyx_L1_error)
      }
      __pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_env, __pyx_v_key); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 164, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "uvloop/handles/process.pyx":166
 *                 val = env[key]
 * 
 *                 if isinstance(key, str):             # <<<<<<<<<<<<<<
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):
 */
      __pyx_t_1 = PyUnicode_Check(__pyx_v_key); 
      __pyx_t_3 = (__pyx_t_1 != 0);
      if (__pyx_t_3) {

        /* "uvloop/handles/process.pyx":167
 * 
 *                 if isinstance(key, str):
 *                     key = PyUnicode_EncodeFSDefault(key)             # <<<<<<<<<<<<<<
 *                 elif not isinstance(key, bytes):
 *                     raise TypeError(
 */
        __pyx_t_8 = PyUnicode_EncodeFSDefault(__pyx_v_key); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 167, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "uvloop/handles/process.pyx":166
 *                 val = env[key]
 * 
 *                 if isinstance(key, str):             # <<<<<<<<<<<<<<
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):
 */
        goto __pyx_L8;
      }

      /* "uvloop/handles/process.pyx":168
 *                 if isinstance(key, str):
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'all environment vars must be bytes or str')
 */
      __pyx_t_3 = PyBytes_Check(__pyx_v_key); 
      __pyx_t_1 = ((!(__pyx_t_3 != 0)) != 0);
      if (__pyx_t_1) {

        /* "uvloop/handles/process.pyx":169
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'all environment vars must be bytes or str')
 * 
 */
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 169, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_Raise(__pyx_t_8, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __PYX_ERR(6, 169, __pyx_L1_error)

        /* "uvloop/handles/process.pyx":168
 *                 if isinstance(key, str):
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'all environment vars must be bytes or str')
 */
      }
      __pyx_L8:;

      /* "uvloop/handles/process.pyx":172
 *                         'all environment vars must be bytes or str')
 * 
 *                 if isinstance(val, str):             # <<<<<<<<<<<<<<
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):
 */
      __pyx_t_1 = PyUnicode_Check(__pyx_v_val); 
      __pyx_t_3 = (__pyx_t_1 != 0);
      if (__pyx_t_3) {

        /* "uvloop/handles/process.pyx":173
 * 
 *                 if isinstance(val, str):
 *                     val = PyUnicode_EncodeFSDefault(val)             # <<<<<<<<<<<<<<
 *                 elif not isinstance(val, bytes):
 *                     raise TypeError(
 */
        __pyx_t_8 = PyUnicode_EncodeFSDefault(__pyx_v_val); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF_SET(__pyx_v_val, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "uvloop/handles/process.pyx":172
 *                         'all environment vars must be bytes or str')
 * 
 *                 if isinstance(val, str):             # <<<<<<<<<<<<<<
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):
 */
        goto __pyx_L9;
      }

      /* "uvloop/handles/process.pyx":174
 *                 if isinstance(val, str):
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'all environment values must be bytes or str')
 */
      __pyx_t_3 = PyBytes_Check(__pyx_v_val); 
      __pyx_t_1 = ((!(__pyx_t_3 != 0)) != 0);
      if (__pyx_t_1) {

        /* "uvloop/handles/process.pyx":175
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'all environment values must be bytes or str')
 * 
 */
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_Raise(__pyx_t_8, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __PYX_ERR(6, 175, __pyx_L1_error)

        /* "uvloop/handles/process.pyx":174
 *                 if isinstance(val, str):
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):             # <<<<<<<<<<<<<<
 *                     raise TypeError(
 *                         'all environment values must be bytes or str')
 */
      }
      __pyx_L9:;

      /* "uvloop/handles/process.pyx":178
 *                         'all environment values must be bytes or str')
 * 
 *                 self.__env.append(key + b'=' + val)             # <<<<<<<<<<<<<<
 * 
 *             self.uv_opt_env = self.__to_cstring_array(self.__env)
 */
      if (unlikely(__pyx_v_self->__pyx___env == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
        __PYX_ERR(6, 178, __pyx_L1_error)
      }
      __pyx_t_8 = PyNumber_Add(__pyx_v_key, __pyx_kp_b__104); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = PyNumber_Add(__pyx_t_8, __pyx_v_val); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->__pyx___env, __pyx_t_10); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(6, 178, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/process.pyx":180
 *                 self.__env.append(key + b'=' + val)
 * 
 *             self.uv_opt_env = self.__to_cstring_array(self.__env)             # <<<<<<<<<<<<<<
 *         else:
 *             self.__env = None
 */
    __pyx_t_5 = __pyx_v_self->__pyx___env;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_v_self->uv_opt_env = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx___to_cstring_array(__pyx_v_self, ((PyObject*)__pyx_t_5));
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/process.pyx":161
 * 
 *     cdef _init_env(self, dict env):
 *         if env is not None and len(env):             # <<<<<<<<<<<<<<
 *             self.__env = list()
 *             for key in env:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":182
 *             self.uv_opt_env = self.__to_cstring_array(self.__env)
 *         else:
 *             self.__env = None             # <<<<<<<<<<<<<<
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->__pyx___env);
    __Pyx_DECREF(__pyx_v_self->__pyx___env);
    __pyx_v_self->__pyx___env = ((PyObject*)Py_None);
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":160
 *         self.uv_opt_args = self.__to_cstring_array(self.__args)
 * 
 *     cdef _init_env(self, dict env):             # <<<<<<<<<<<<<<
 *         if env is not None and len(env):
 *             self.__env = list()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._init_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":184
 *             self.__env = None
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):             # <<<<<<<<<<<<<<
 *         self.options.stdio_count = 0
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__init_files(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_stdin, CYTHON_UNUSED PyObject *__pyx_v_stdout, CYTHON_UNUSED PyObject *__pyx_v_stderr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_files", 0);

  /* "uvloop/handles/process.pyx":185
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):
 *         self.options.stdio_count = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef _kill(self, int signum):
 */
  __pyx_v_self->options.stdio_count = 0;

  /* "uvloop/handles/process.pyx":184
 *             self.__env = None
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):             # <<<<<<<<<<<<<<
 *         self.options.stdio_count = 0
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":187
 *         self.options.stdio_count = 0
 * 
 *     cdef _kill(self, int signum):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__kill(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int __pyx_v_signum) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_kill", 0);

  /* "uvloop/handles/process.pyx":189
 *     cdef _kill(self, int signum):
 *         cdef int err
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 *         err = uv.uv_process_kill(<uv.uv_process_t*>self._handle, signum)
 *         if err < 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":190
 *         cdef int err
 *         self._ensure_alive()
 *         err = uv.uv_process_kill(<uv.uv_process_t*>self._handle, signum)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
  __pyx_v_err = uv_process_kill(((uv_process_t *)__pyx_v_self->__pyx_base._handle), __pyx_v_signum);

  /* "uvloop/handles/process.pyx":191
 *         self._ensure_alive()
 *         err = uv.uv_process_kill(<uv.uv_process_t*>self._handle, signum)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":192
 *         err = uv.uv_process_kill(<uv.uv_process_t*>self._handle, signum)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(6, 192, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":191
 *         self._ensure_alive()
 *         err = uv.uv_process_kill(<uv.uv_process_t*>self._handle, signum)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
  }

  /* "uvloop/handles/process.pyx":187
 *         self.options.stdio_count = 0
 * 
 *     cdef _kill(self, int signum):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         self._ensure_alive()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._kill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":194
 *             raise convert_error(err)
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):             # <<<<<<<<<<<<<<
 *         if term_signal:
 *             # From Python docs:
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVProcess__on_exit(struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_self, int64_t __pyx_v_exit_status, int __pyx_v_term_signal) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_on_exit", 0);

  /* "uvloop/handles/process.pyx":195
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):
 *         if term_signal:             # <<<<<<<<<<<<<<
 *             # From Python docs:
 *             #    A negative value -N indicates that the child was
 */
  __pyx_t_1 = (__pyx_v_term_signal != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":199
 *             #    A negative value -N indicates that the child was
 *             #    terminated by signal N (POSIX only).
 *             self._returncode = -term_signal             # <<<<<<<<<<<<<<
 *         else:
 *             self._returncode = exit_status
 */
    __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_term_signal)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_returncode);
    __Pyx_DECREF(__pyx_v_self->_returncode);
    __pyx_v_self->_returncode = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":195
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):
 *         if term_signal:             # <<<<<<<<<<<<<<
 *             # From Python docs:
 *             #    A negative value -N indicates that the child was
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":201
 *             self._returncode = -term_signal
 *         else:
 *             self._returncode = exit_status             # <<<<<<<<<<<<<<
 * 
 *         self._close()
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_exit_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_returncode);
    __Pyx_DECREF(__pyx_v_self->_returncode);
    __pyx_v_self->_returncode = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":203
 *             self._returncode = exit_status
 * 
 *         self._close()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":194
 *             raise convert_error(err)
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):             # <<<<<<<<<<<<<<
 *         if term_signal:
 *             # From Python docs:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVProcess._on_exit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":214
 * @cython.no_gc_clear
 * cdef class UVProcessTransport(UVProcess):
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._exit_waiters = []
 *         self._protocol = None
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_18UVProcessTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_18UVProcessTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport___cinit__(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_18UVProcessTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/process.pyx":215
 * cdef class UVProcessTransport(UVProcess):
 *     def __cinit__(self):
 *         self._exit_waiters = []             # <<<<<<<<<<<<<<
 *         self._protocol = None
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_exit_waiters);
  __Pyx_DECREF(__pyx_v_self->_exit_waiters);
  __pyx_v_self->_exit_waiters = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":216
 *     def __cinit__(self):
 *         self._exit_waiters = []
 *         self._protocol = None             # <<<<<<<<<<<<<<
 * 
 *         self._init_futs = []
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_protocol);
  __Pyx_DECREF(__pyx_v_self->_protocol);
  __pyx_v_self->_protocol = Py_None;

  /* "uvloop/handles/process.pyx":218
 *         self._protocol = None
 * 
 *         self._init_futs = []             # <<<<<<<<<<<<<<
 *         self._pending_calls = []
 *         self._stdio_ready = 0
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_init_futs);
  __Pyx_DECREF(__pyx_v_self->_init_futs);
  __pyx_v_self->_init_futs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":219
 * 
 *         self._init_futs = []
 *         self._pending_calls = []             # <<<<<<<<<<<<<<
 *         self._stdio_ready = 0
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pending_calls);
  __Pyx_DECREF(__pyx_v_self->_pending_calls);
  __pyx_v_self->_pending_calls = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":220
 *         self._init_futs = []
 *         self._pending_calls = []
 *         self._stdio_ready = 0             # <<<<<<<<<<<<<<
 * 
 *         self.stdin = self.stdout = self.stderr = None
 */
  __pyx_v_self->_stdio_ready = 0;

  /* "uvloop/handles/process.pyx":222
 *         self._stdio_ready = 0
 * 
 *         self.stdin = self.stdout = self.stderr = None             # <<<<<<<<<<<<<<
 *         self.stdin_proto = self.stdout_proto = self.stderr_proto = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stdin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->stdin));
  __pyx_v_self->stdin = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stdout);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->stdout));
  __pyx_v_self->stdout = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stderr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->stderr));
  __pyx_v_self->stderr = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)Py_None);

  /* "uvloop/handles/process.pyx":223
 * 
 *         self.stdin = self.stdout = self.stderr = None
 *         self.stdin_proto = self.stdout_proto = self.stderr_proto = None             # <<<<<<<<<<<<<<
 * 
 *         self._finished = 0
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stdin_proto);
  __Pyx_DECREF(__pyx_v_self->stdin_proto);
  __pyx_v_self->stdin_proto = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stdout_proto);
  __Pyx_DECREF(__pyx_v_self->stdout_proto);
  __pyx_v_self->stdout_proto = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->stderr_proto);
  __Pyx_DECREF(__pyx_v_self->stderr_proto);
  __pyx_v_self->stderr_proto = Py_None;

  /* "uvloop/handles/process.pyx":225
 *         self.stdin_proto = self.stdout_proto = self.stderr_proto = None
 * 
 *         self._finished = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):
 */
  __pyx_v_self->_finished = 0;

  /* "uvloop/handles/process.pyx":214
 * @cython.no_gc_clear
 * cdef class UVProcessTransport(UVProcess):
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._exit_waiters = []
 *         self._protocol = None
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":227
 *         self._finished = 0
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):             # <<<<<<<<<<<<<<
 *         UVProcess._on_exit(self, exit_status, term_signal)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__on_exit(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int64_t __pyx_v_exit_status, int __pyx_v_term_signal) {
  PyObject *__pyx_v_waiter = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("_on_exit", 0);

  /* "uvloop/handles/process.pyx":228
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):
 *         UVProcess._on_exit(self, exit_status, term_signal)             # <<<<<<<<<<<<<<
 * 
 *         if self._stdio_ready:
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_9UVProcess__on_exit(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_v_exit_status, __pyx_v_term_signal); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":230
 *         UVProcess._on_exit(self, exit_status, term_signal)
 * 
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.process_exited)
 *         else:
 */
  __pyx_t_2 = (__pyx_v_self->_stdio_ready != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":231
 * 
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.process_exited)             # <<<<<<<<<<<<<<
 *         else:
 *             self._pending_calls.append((_CALL_PROCESS_EXITED, None, None))
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_process_exited); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 231, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":230
 *         UVProcess._on_exit(self, exit_status, term_signal)
 * 
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.process_exited)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":233
 *             self._loop.call_soon(self._protocol.process_exited)
 *         else:
 *             self._pending_calls.append((_CALL_PROCESS_EXITED, None, None))             # <<<<<<<<<<<<<<
 * 
 *         self._try_finish()
 */
  /*else*/ {
    if (unlikely(__pyx_v_self->_pending_calls == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
      __PYX_ERR(6, 233, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PROCESS_EXITED); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_self->_pending_calls, __pyx_t_3); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(6, 233, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":235
 *             self._pending_calls.append((_CALL_PROCESS_EXITED, None, None))
 * 
 *         self._try_finish()             # <<<<<<<<<<<<<<
 * 
 *         for waiter in self._exit_waiters:
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_try_finish(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":237
 *         self._try_finish()
 * 
 *         for waiter in self._exit_waiters:             # <<<<<<<<<<<<<<
 *             if not waiter.cancelled():
 *                 waiter.set_result(self._returncode)
 */
  if (unlikely(__pyx_v_self->_exit_waiters == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(6, 237, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_v_self->_exit_waiters; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
  for (;;) {
    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(6, 237, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":238
 * 
 *         for waiter in self._exit_waiters:
 *             if not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(self._returncode)
 *         self._exit_waiters.clear()
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 238, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 238, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = ((!__pyx_t_2) != 0);
    if (__pyx_t_9) {

      /* "uvloop/handles/process.pyx":239
 *         for waiter in self._exit_waiters:
 *             if not waiter.cancelled():
 *                 waiter.set_result(self._returncode)             # <<<<<<<<<<<<<<
 *         self._exit_waiters.clear()
 * 
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->__pyx_base._returncode); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_self->__pyx_base._returncode);
        __Pyx_GIVEREF(__pyx_v_self->__pyx_base._returncode);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_self->__pyx_base._returncode);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":238
 * 
 *         for waiter in self._exit_waiters:
 *             if not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(self._returncode)
 *         self._exit_waiters.clear()
 */
    }

    /* "uvloop/handles/process.pyx":237
 *         self._try_finish()
 * 
 *         for waiter in self._exit_waiters:             # <<<<<<<<<<<<<<
 *             if not waiter.cancelled():
 *                 waiter.set_result(self._returncode)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":240
 *             if not waiter.cancelled():
 *                 waiter.set_result(self._returncode)
 *         self._exit_waiters.clear()             # <<<<<<<<<<<<<<
 * 
 *     cdef _check_proc(self):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_exit_waiters, __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 240, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":227
 *         self._finished = 0
 * 
 *     cdef _on_exit(self, int64_t exit_status, int term_signal):             # <<<<<<<<<<<<<<
 *         UVProcess._on_exit(self, exit_status, term_signal)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._on_exit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":242
 *         self._exit_waiters.clear()
 * 
 *     cdef _check_proc(self):             # <<<<<<<<<<<<<<
 *         if not self._is_alive() or self._returncode is not None:
 *             raise ProcessLookupError()
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__check_proc(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_check_proc", 0);

  /* "uvloop/handles/process.pyx":243
 * 
 *     cdef _check_proc(self):
 *         if not self._is_alive() or self._returncode is not None:             # <<<<<<<<<<<<<<
 *             raise ProcessLookupError()
 * 
 */
  __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._is_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)) != 0)) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->__pyx_base._returncode != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":244
 *     cdef _check_proc(self):
 *         if not self._is_alive() or self._returncode is not None:
 *             raise ProcessLookupError()             # <<<<<<<<<<<<<<
 * 
 *     cdef _pipe_connection_lost(self, int fd, exc):
 */
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ProcessLookupError); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(6, 244, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":243
 * 
 *     cdef _check_proc(self):
 *         if not self._is_alive() or self._returncode is not None:             # <<<<<<<<<<<<<<
 *             raise ProcessLookupError()
 * 
 */
  }

  /* "uvloop/handles/process.pyx":242
 *         self._exit_waiters.clear()
 * 
 *     cdef _check_proc(self):             # <<<<<<<<<<<<<<
 *         if not self._is_alive() or self._returncode is not None:
 *             raise ProcessLookupError()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._check_proc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":246
 *             raise ProcessLookupError()
 * 
 *     cdef _pipe_connection_lost(self, int fd, exc):             # <<<<<<<<<<<<<<
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_connection_lost(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("_pipe_connection_lost", 0);

  /* "uvloop/handles/process.pyx":247
 * 
 *     cdef _pipe_connection_lost(self, int fd, exc):
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)
 *             self._try_finish()
 */
  __pyx_t_1 = (__pyx_v_self->_stdio_ready != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":248
 *     cdef _pipe_connection_lost(self, int fd, exc):
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)             # <<<<<<<<<<<<<<
 *             self._try_finish()
 *         else:
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_pipe_connection_lost); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
    __Pyx_INCREF(__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_exc);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":249
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)
 *             self._try_finish()             # <<<<<<<<<<<<<<
 *         else:
 *             self._pending_calls.append((_CALL_PIPE_CONNECTION_LOST, fd, exc))
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_try_finish(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":247
 * 
 *     cdef _pipe_connection_lost(self, int fd, exc):
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)
 *             self._try_finish()
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":251
 *             self._try_finish()
 *         else:
 *             self._pending_calls.append((_CALL_PIPE_CONNECTION_LOST, fd, exc))             # <<<<<<<<<<<<<<
 * 
 *     cdef _pipe_data_received(self, int fd, data):
 */
  /*else*/ {
    if (unlikely(__pyx_v_self->_pending_calls == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
      __PYX_ERR(6, 251, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PIPE_CONNECTION_LOST); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_exc);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_pending_calls, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(6, 251, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":246
 *             raise ProcessLookupError()
 * 
 *     cdef _pipe_connection_lost(self, int fd, exc):             # <<<<<<<<<<<<<<
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_connection_lost, fd, exc)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._pipe_connection_lost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":253
 *             self._pending_calls.append((_CALL_PIPE_CONNECTION_LOST, fd, exc))
 * 
 *     cdef _pipe_data_received(self, int fd, data):             # <<<<<<<<<<<<<<
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_data_received(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("_pipe_data_received", 0);

  /* "uvloop/handles/process.pyx":254
 * 
 *     cdef _pipe_data_received(self, int fd, data):
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_stdio_ready != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":255
 *     cdef _pipe_data_received(self, int fd, data):
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)             # <<<<<<<<<<<<<<
 *         else:
 *             self._pending_calls.append((_CALL_PIPE_DATA_RECEIVED, fd, data))
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_pipe_data_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_data);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":254
 * 
 *     cdef _pipe_data_received(self, int fd, data):
 *         if self._stdio_ready:             # <<<<<<<<<<<<<<
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":257
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)
 *         else:
 *             self._pending_calls.append((_CALL_PIPE_DATA_RECEIVED, fd, data))             # <<<<<<<<<<<<<<
 * 
 *     cdef _file_redirect_stdio(self, int fd):
 */
  /*else*/ {
    if (unlikely(__pyx_v_self->_pending_calls == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
      __PYX_ERR(6, 257, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PIPE_DATA_RECEIVED); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_data);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_pending_calls, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":253
 *             self._pending_calls.append((_CALL_PIPE_CONNECTION_LOST, fd, exc))
 * 
 *     cdef _pipe_data_received(self, int fd, data):             # <<<<<<<<<<<<<<
 *         if self._stdio_ready:
 *             self._loop.call_soon(self._protocol.pipe_data_received, fd, data)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._pipe_data_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":259
 *             self._pending_calls.append((_CALL_PIPE_DATA_RECEIVED, fd, data))
 * 
 *     cdef _file_redirect_stdio(self, int fd):             # <<<<<<<<<<<<<<
 *         fd = os_dup(fd)
 *         os_set_inheritable(fd, True)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_redirect_stdio(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __Pyx_RefNannySetupContext("_file_redirect_stdio", 0);

  /* "uvloop/handles/process.pyx":260
 * 
 *     cdef _file_redirect_stdio(self, int fd):
 *         fd = os_dup(fd)             # <<<<<<<<<<<<<<
 *         os_set_inheritable(fd, True)
 *         self._close_after_spawn(fd)
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 260, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fd = __pyx_t_6;

  /* "uvloop/handles/process.pyx":261
 *     cdef _file_redirect_stdio(self, int fd):
 *         fd = os_dup(fd)
 *         os_set_inheritable(fd, True)             # <<<<<<<<<<<<<<
 *         self._close_after_spawn(fd)
 *         return fd
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_5 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_3);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, Py_True);
  __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":262
 *         fd = os_dup(fd)
 *         os_set_inheritable(fd, True)
 *         self._close_after_spawn(fd)             # <<<<<<<<<<<<<<
 *         return fd
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_after_spawn(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":263
 *         os_set_inheritable(fd, True)
 *         self._close_after_spawn(fd)
 *         return fd             # <<<<<<<<<<<<<<
 * 
 *     cdef _file_devnull(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":259
 *             self._pending_calls.append((_CALL_PIPE_DATA_RECEIVED, fd, data))
 * 
 *     cdef _file_redirect_stdio(self, int fd):             # <<<<<<<<<<<<<<
 *         fd = os_dup(fd)
 *         os_set_inheritable(fd, True)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._file_redirect_stdio", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":265
 *         return fd
 * 
 *     cdef _file_devnull(self):             # <<<<<<<<<<<<<<
 *         dn = os_open(os_devnull, os_O_RDWR)
 *         os_set_inheritable(dn, True)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_devnull(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_v_dn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_file_devnull", 0);

  /* "uvloop/handles/process.pyx":266
 * 
 *     cdef _file_devnull(self):
 *         dn = os_open(os_devnull, os_O_RDWR)             # <<<<<<<<<<<<<<
 *         os_set_inheritable(dn, True)
 *         self._close_after_spawn(dn)
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_open);
  __pyx_t_2 = __pyx_v_6uvloop_4loop_os_open; __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_devnull);
  __Pyx_GIVEREF(__pyx_v_6uvloop_4loop_os_devnull);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_6uvloop_4loop_os_devnull);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_O_RDWR);
  __Pyx_GIVEREF(__pyx_v_6uvloop_4loop_os_O_RDWR);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_6uvloop_4loop_os_O_RDWR);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":267
 *     cdef _file_devnull(self):
 *         dn = os_open(os_devnull, os_O_RDWR)
 *         os_set_inheritable(dn, True)             # <<<<<<<<<<<<<<
 *         self._close_after_spawn(dn)
 *         return dn
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_2 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(__pyx_v_dn);
  __Pyx_GIVEREF(__pyx_v_dn);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_dn);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, Py_True);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":268
 *         dn = os_open(os_devnull, os_O_RDWR)
 *         os_set_inheritable(dn, True)
 *         self._close_after_spawn(dn)             # <<<<<<<<<<<<<<
 *         return dn
 * 
 */
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_dn); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 268, __pyx_L1_error)
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_after_spawn(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":269
 *         os_set_inheritable(dn, True)
 *         self._close_after_spawn(dn)
 *         return dn             # <<<<<<<<<<<<<<
 * 
 *     cdef _file_outpipe(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dn);
  __pyx_r = __pyx_v_dn;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":265
 *         return fd
 * 
 *     cdef _file_devnull(self):             # <<<<<<<<<<<<<<
 *         dn = os_open(os_devnull, os_O_RDWR)
 *         os_set_inheritable(dn, True)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._file_devnull", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dn);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":271
 *         return dn
 * 
 *     cdef _file_outpipe(self):             # <<<<<<<<<<<<<<
 *         r, w = __socketpair()
 *         os_set_inheritable(w, True)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_outpipe(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_v_r = NULL;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_file_outpipe", 0);

  /* "uvloop/handles/process.pyx":272
 * 
 *     cdef _file_outpipe(self):
 *         r, w = __socketpair()             # <<<<<<<<<<<<<<
 *         os_set_inheritable(w, True)
 *         self._close_after_spawn(w)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___socketpair(); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(6, 272, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(6, 272, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(6, 272, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_r = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_w = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":273
 *     cdef _file_outpipe(self):
 *         r, w = __socketpair()
 *         os_set_inheritable(w, True)             # <<<<<<<<<<<<<<
 *         self._close_after_spawn(w)
 *         return r, w
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_w);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, Py_True);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":274
 *         r, w = __socketpair()
 *         os_set_inheritable(w, True)
 *         self._close_after_spawn(w)             # <<<<<<<<<<<<<<
 *         return r, w
 * 
 */
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 274, __pyx_L1_error)
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_after_spawn(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":275
 *         os_set_inheritable(w, True)
 *         self._close_after_spawn(w)
 *         return r, w             # <<<<<<<<<<<<<<
 * 
 *     cdef _file_inpipe(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_r);
  __Pyx_GIVEREF(__pyx_v_r);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_r);
  __Pyx_INCREF(__pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_w);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":271
 *         return dn
 * 
 *     cdef _file_outpipe(self):             # <<<<<<<<<<<<<<
 *         r, w = __socketpair()
 *         os_set_inheritable(w, True)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._file_outpipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_r);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":277
 *         return r, w
 * 
 *     cdef _file_inpipe(self):             # <<<<<<<<<<<<<<
 *         r, w = __socketpair()
 *         os_set_inheritable(r, True)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__file_inpipe(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_v_r = NULL;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_file_inpipe", 0);

  /* "uvloop/handles/process.pyx":278
 * 
 *     cdef _file_inpipe(self):
 *         r, w = __socketpair()             # <<<<<<<<<<<<<<
 *         os_set_inheritable(r, True)
 *         self._close_after_spawn(r)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___socketpair(); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(6, 278, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(6, 278, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(6, 278, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_r = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_w = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":279
 *     cdef _file_inpipe(self):
 *         r, w = __socketpair()
 *         os_set_inheritable(r, True)             # <<<<<<<<<<<<<<
 *         self._close_after_spawn(r)
 *         return r, w
 */
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_3 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_v_r);
  __Pyx_GIVEREF(__pyx_v_r);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_r);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, Py_True);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":280
 *         r, w = __socketpair()
 *         os_set_inheritable(r, True)
 *         self._close_after_spawn(r)             # <<<<<<<<<<<<<<
 *         return r, w
 * 
 */
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_r); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 280, __pyx_L1_error)
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_after_spawn(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":281
 *         os_set_inheritable(r, True)
 *         self._close_after_spawn(r)
 *         return r, w             # <<<<<<<<<<<<<<
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_r);
  __Pyx_GIVEREF(__pyx_v_r);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_r);
  __Pyx_INCREF(__pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_w);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":277
 *         return r, w
 * 
 *     cdef _file_inpipe(self):             # <<<<<<<<<<<<<<
 *         r, w = __socketpair()
 *         os_set_inheritable(r, True)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._file_inpipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_r);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":283
 *         return r, w
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):             # <<<<<<<<<<<<<<
 *         cdef uv.uv_stdio_container_t *iocnt
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__init_files(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr) {
  uv_stdio_container_t *__pyx_v_iocnt;
  PyObject *__pyx_v_io = NULL;
  PyObject *__pyx_v_r = NULL;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_v_waiter = NULL;
  PyObject *__pyx_v_newfd = NULL;
  long __pyx_v_idx;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uv_stdio_container_t *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  long __pyx_t_13;
  __Pyx_RefNannySetupContext("_init_files", 0);

  /* "uvloop/handles/process.pyx":286
 *         cdef uv.uv_stdio_container_t *iocnt
 * 
 *         UVProcess._init_files(self, stdin, stdout, stderr)             # <<<<<<<<<<<<<<
 * 
 *         io = [None, None, None]
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_9UVProcess__init_files(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_v_stdin, __pyx_v_stdout, __pyx_v_stderr); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":288
 *         UVProcess._init_files(self, stdin, stdout, stderr)
 * 
 *         io = [None, None, None]             # <<<<<<<<<<<<<<
 * 
 *         self.options.stdio_count = 3
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyList_SET_ITEM(__pyx_t_1, 0, Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyList_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyList_SET_ITEM(__pyx_t_1, 2, Py_None);
  __pyx_v_io = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":290
 *         io = [None, None, None]
 * 
 *         self.options.stdio_count = 3             # <<<<<<<<<<<<<<
 *         self.options.stdio = self.iocnt
 * 
 */
  __pyx_v_self->__pyx_base.options.stdio_count = 3;

  /* "uvloop/handles/process.pyx":291
 * 
 *         self.options.stdio_count = 3
 *         self.options.stdio = self.iocnt             # <<<<<<<<<<<<<<
 * 
 *         if stdin is not None:
 */
  __pyx_t_2 = __pyx_v_self->__pyx_base.iocnt;
  __pyx_v_self->__pyx_base.options.stdio = __pyx_t_2;

  /* "uvloop/handles/process.pyx":293
 *         self.options.stdio = self.iocnt
 * 
 *         if stdin is not None:             # <<<<<<<<<<<<<<
 *             if stdin == subprocess_PIPE:
 *                 r, w  = self._file_inpipe()
 */
  __pyx_t_3 = (__pyx_v_stdin != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "uvloop/handles/process.pyx":294
 * 
 *         if stdin is not None:
 *             if stdin == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 r, w  = self._file_inpipe()
 *                 io[0] = r
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_stdin, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 294, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 294, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":295
 *         if stdin is not None:
 *             if stdin == subprocess_PIPE:
 *                 r, w  = self._file_inpipe()             # <<<<<<<<<<<<<<
 *                 io[0] = r
 * 
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_inpipe(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
        PyObject* sequence = __pyx_t_5;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 295, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_1);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(6, 295, __pyx_L1_error)
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L6_unpacking_done;
        __pyx_L5_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 295, __pyx_L1_error)
        __pyx_L6_unpacking_done:;
      }
      __pyx_v_r = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_v_w = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":296
 *             if stdin == subprocess_PIPE:
 *                 r, w  = self._file_inpipe()
 *                 io[0] = r             # <<<<<<<<<<<<<<
 * 
 *                 self.stdin_proto = WriteSubprocessPipeProto(self, 0)
 */
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 0, __pyx_v_r, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 296, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":298
 *                 io[0] = r
 * 
 *                 self.stdin_proto = WriteSubprocessPipeProto(self, 0)             # <<<<<<<<<<<<<<
 *                 waiter = self._loop._new_future()
 *                 self.stdin = WriteUnixTransport.new(
 */
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_WriteSubprocessPipeProto); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_1) {
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, ((PyObject *)__pyx_v_self));
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_int_0);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_v_self->stdin_proto);
      __Pyx_DECREF(__pyx_v_self->stdin_proto);
      __pyx_v_self->stdin_proto = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "uvloop/handles/process.pyx":299
 * 
 *                 self.stdin_proto = WriteSubprocessPipeProto(self, 0)
 *                 waiter = self._loop._new_future()             # <<<<<<<<<<<<<<
 *                 self.stdin = WriteUnixTransport.new(
 *                     self._loop, self.stdin_proto, None, waiter)
 */
      __pyx_t_5 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self->__pyx_base.__pyx_base._loop); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_waiter = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "uvloop/handles/process.pyx":301
 *                 waiter = self._loop._new_future()
 *                 self.stdin = WriteUnixTransport.new(
 *                     self._loop, self.stdin_proto, None, waiter)             # <<<<<<<<<<<<<<
 *                 self._init_futs.append(waiter)
 *                 self.stdin.open(w)
 */
      __pyx_t_5 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_6 = __pyx_v_self->stdin_proto;
      __Pyx_INCREF(__pyx_t_6);

      /* "uvloop/handles/process.pyx":300
 *                 self.stdin_proto = WriteSubprocessPipeProto(self, 0)
 *                 waiter = self._loop._new_future()
 *                 self.stdin = WriteUnixTransport.new(             # <<<<<<<<<<<<<<
 *                     self._loop, self.stdin_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 */
      __pyx_t_7 = ((PyObject *)__pyx_f_6uvloop_4loop_18WriteUnixTransport_new(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_5), __pyx_t_6, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_v_waiter)); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_v_self->stdin);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->stdin));
      __pyx_v_self->stdin = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":302
 *                 self.stdin = WriteUnixTransport.new(
 *                     self._loop, self.stdin_proto, None, waiter)
 *                 self._init_futs.append(waiter)             # <<<<<<<<<<<<<<
 *                 self.stdin.open(w)
 *                 self.stdin._init_protocol()
 */
      if (unlikely(__pyx_v_self->_init_futs == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
        __PYX_ERR(6, 302, __pyx_L1_error)
      }
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->_init_futs, __pyx_v_waiter); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(6, 302, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":303
 *                     self._loop, self.stdin_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 *                 self.stdin.open(w)             # <<<<<<<<<<<<<<
 *                 self.stdin._init_protocol()
 *             elif stdin == subprocess_DEVNULL:
 */
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 303, __pyx_L1_error)
      __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_v_self->stdin->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_v_self->stdin, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":304
 *                 self._init_futs.append(waiter)
 *                 self.stdin.open(w)
 *                 self.stdin._init_protocol()             # <<<<<<<<<<<<<<
 *             elif stdin == subprocess_DEVNULL:
 *                 io[0] = self._file_devnull()
 */
      __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport *)__pyx_v_self->stdin->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->stdin)); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 304, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":294
 * 
 *         if stdin is not None:
 *             if stdin == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 r, w  = self._file_inpipe()
 *                 io[0] = r
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/process.pyx":305
 *                 self.stdin.open(w)
 *                 self.stdin._init_protocol()
 *             elif stdin == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 */
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_DEVNULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_stdin, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 305, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 305, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":306
 *                 self.stdin._init_protocol()
 *             elif stdin == subprocess_DEVNULL:
 *                 io[0] = self._file_devnull()             # <<<<<<<<<<<<<<
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(
 */
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_devnull(__pyx_v_self); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 306, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 0, __pyx_t_6, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 306, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":305
 *                 self.stdin.open(w)
 *                 self.stdin._init_protocol()
 *             elif stdin == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/process.pyx":307
 *             elif stdin == subprocess_DEVNULL:
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 */
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_STDOUT); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_RichCompare(__pyx_v_stdout, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 307, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 307, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":308
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 */
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(6, 308, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":307
 *             elif stdin == subprocess_DEVNULL:
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 */
    }

    /* "uvloop/handles/process.pyx":311
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stdin argument value {!r}'.format(stdin))
 *         else:
 */
    /*else*/ {

      /* "uvloop/handles/process.pyx":312
 *             else:
 *                 raise ValueError(
 *                     'invalid stdin argument value {!r}'.format(stdin))             # <<<<<<<<<<<<<<
 *         else:
 *             io[0] = self._file_redirect_stdio(sys.stdin.fileno())
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid_stdin_argument_value_r, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_stdin); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 312, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 312, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_stdin);
        __Pyx_GIVEREF(__pyx_v_stdin);
        PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_stdin);
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 312, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":311
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stdin argument value {!r}'.format(stdin))
 *         else:
 */
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(6, 311, __pyx_L1_error)
    }
    __pyx_L4:;

    /* "uvloop/handles/process.pyx":293
 *         self.options.stdio = self.iocnt
 * 
 *         if stdin is not None:             # <<<<<<<<<<<<<<
 *             if stdin == subprocess_PIPE:
 *                 r, w  = self._file_inpipe()
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":314
 *                     'invalid stdin argument value {!r}'.format(stdin))
 *         else:
 *             io[0] = self._file_redirect_stdio(sys.stdin.fileno())             # <<<<<<<<<<<<<<
 * 
 *         if stdout is not None:
 */
  /*else*/ {
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_stdin); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fileno); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 314, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 314, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_redirect_stdio(__pyx_v_self, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 0, __pyx_t_7, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":316
 *             io[0] = self._file_redirect_stdio(sys.stdin.fileno())
 * 
 *         if stdout is not None:             # <<<<<<<<<<<<<<
 *             if stdout == subprocess_PIPE:
 *                 # We can't use UV_CREATE_PIPE here, since 'stderr' might be
 */
  __pyx_t_4 = (__pyx_v_stdout != Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/process.pyx":317
 * 
 *         if stdout is not None:
 *             if stdout == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 # We can't use UV_CREATE_PIPE here, since 'stderr' might be
 *                 # set to 'subprocess.STDOUT', and there is no way to
 */
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_stdout, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 317, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 317, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "uvloop/handles/process.pyx":324
 *                 # stderr manually.
 * 
 *                 r, w  = self._file_outpipe()             # <<<<<<<<<<<<<<
 *                 io[1] = w
 * 
 */
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_outpipe(__pyx_v_self); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 324, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
        PyObject* sequence = __pyx_t_6;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 324, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_1);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_1 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(6, 324, __pyx_L1_error)
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 324, __pyx_L1_error)
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_r, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":325
 * 
 *                 r, w  = self._file_outpipe()
 *                 io[1] = w             # <<<<<<<<<<<<<<
 * 
 *                 self.stdout_proto = ReadSubprocessPipeProto(self, 1)
 */
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 1, __pyx_v_w, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 325, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":327
 *                 io[1] = w
 * 
 *                 self.stdout_proto = ReadSubprocessPipeProto(self, 1)             # <<<<<<<<<<<<<<
 *                 waiter = self._loop._new_future()
 *                 self.stdout = ReadUnixTransport.new(
 */
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ReadSubprocessPipeProto); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, ((PyObject *)__pyx_v_self));
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_int_1);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_v_self->stdout_proto);
      __Pyx_DECREF(__pyx_v_self->stdout_proto);
      __pyx_v_self->stdout_proto = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":328
 * 
 *                 self.stdout_proto = ReadSubprocessPipeProto(self, 1)
 *                 waiter = self._loop._new_future()             # <<<<<<<<<<<<<<
 *                 self.stdout = ReadUnixTransport.new(
 *                     self._loop, self.stdout_proto, None, waiter)
 */
      __pyx_t_6 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self->__pyx_base.__pyx_base._loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":330
 *                 waiter = self._loop._new_future()
 *                 self.stdout = ReadUnixTransport.new(
 *                     self._loop, self.stdout_proto, None, waiter)             # <<<<<<<<<<<<<<
 *                 self._init_futs.append(waiter)
 *                 self.stdout.open(r)
 */
      __pyx_t_6 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_1 = __pyx_v_self->stdout_proto;
      __Pyx_INCREF(__pyx_t_1);

      /* "uvloop/handles/process.pyx":329
 *                 self.stdout_proto = ReadSubprocessPipeProto(self, 1)
 *                 waiter = self._loop._new_future()
 *                 self.stdout = ReadUnixTransport.new(             # <<<<<<<<<<<<<<
 *                     self._loop, self.stdout_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 */
      __pyx_t_5 = ((PyObject *)__pyx_f_6uvloop_4loop_17ReadUnixTransport_new(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_6), __pyx_t_1, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_v_waiter)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_v_self->stdout);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->stdout));
      __pyx_v_self->stdout = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/handles/process.pyx":331
 *                 self.stdout = ReadUnixTransport.new(
 *                     self._loop, self.stdout_proto, None, waiter)
 *                 self._init_futs.append(waiter)             # <<<<<<<<<<<<<<
 *                 self.stdout.open(r)
 *                 self.stdout._init_protocol()
 */
      if (unlikely(__pyx_v_self->_init_futs == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
        __PYX_ERR(6, 331, __pyx_L1_error)
      }
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->_init_futs, __pyx_v_waiter); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(6, 331, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":332
 *                     self._loop, self.stdout_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 *                 self.stdout.open(r)             # <<<<<<<<<<<<<<
 *                 self.stdout._init_protocol()
 *             elif stdout == subprocess_DEVNULL:
 */
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_r); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 332, __pyx_L1_error)
      __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self->stdout->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_v_self->stdout, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 332, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/handles/process.pyx":333
 *                 self._init_futs.append(waiter)
 *                 self.stdout.open(r)
 *                 self.stdout._init_protocol()             # <<<<<<<<<<<<<<
 *             elif stdout == subprocess_DEVNULL:
 *                 io[1] = self._file_devnull()
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self->stdout->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->stdout)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "uvloop/handles/process.pyx":317
 * 
 *         if stdout is not None:
 *             if stdout == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 # We can't use UV_CREATE_PIPE here, since 'stderr' might be
 *                 # set to 'subprocess.STDOUT', and there is no way to
 */
      goto __pyx_L8;
    }

    /* "uvloop/handles/process.pyx":334
 *                 self.stdout.open(r)
 *                 self.stdout._init_protocol()
 *             elif stdout == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 */
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_DEVNULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_stdout, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 334, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 334, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {

      /* "uvloop/handles/process.pyx":335
 *                 self.stdout._init_protocol()
 *             elif stdout == subprocess_DEVNULL:
 *                 io[1] = self._file_devnull()             # <<<<<<<<<<<<<<
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_devnull(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 1, __pyx_t_1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 335, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":334
 *                 self.stdout.open(r)
 *                 self.stdout._init_protocol()
 *             elif stdout == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 */
      goto __pyx_L8;
    }

    /* "uvloop/handles/process.pyx":336
 *             elif stdout == subprocess_DEVNULL:
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_STDOUT); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_stdout, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 336, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 336, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_3) {

      /* "uvloop/handles/process.pyx":337
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 337, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(6, 337, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":336
 *             elif stdout == subprocess_DEVNULL:
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 */
    }

    /* "uvloop/handles/process.pyx":340
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stdout argument value {!r}'.format(stdin))
 *         else:
 */
    /*else*/ {

      /* "uvloop/handles/process.pyx":341
 *             else:
 *                 raise ValueError(
 *                     'invalid stdout argument value {!r}'.format(stdin))             # <<<<<<<<<<<<<<
 *         else:
 *             io[1] = self._file_redirect_stdio(sys.stdout.fileno())
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid_stdout_argument_value_r, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_stdin); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_stdin);
        __Pyx_GIVEREF(__pyx_v_stdin);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_stdin);
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":340
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stdout argument value {!r}'.format(stdin))
 *         else:
 */
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 340, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 340, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(6, 340, __pyx_L1_error)
    }
    __pyx_L8:;

    /* "uvloop/handles/process.pyx":316
 *             io[0] = self._file_redirect_stdio(sys.stdin.fileno())
 * 
 *         if stdout is not None:             # <<<<<<<<<<<<<<
 *             if stdout == subprocess_PIPE:
 *                 # We can't use UV_CREATE_PIPE here, since 'stderr' might be
 */
    goto __pyx_L7;
  }

  /* "uvloop/handles/process.pyx":343
 *                     'invalid stdout argument value {!r}'.format(stdin))
 *         else:
 *             io[1] = self._file_redirect_stdio(sys.stdout.fileno())             # <<<<<<<<<<<<<<
 * 
 *         if stderr is not None:
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_stdout); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_fileno); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 343, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 343, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_redirect_stdio(__pyx_v_self, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 1, __pyx_t_5, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_L7:;

  /* "uvloop/handles/process.pyx":345
 *             io[1] = self._file_redirect_stdio(sys.stdout.fileno())
 * 
 *         if stderr is not None:             # <<<<<<<<<<<<<<
 *             if stderr == subprocess_PIPE:
 *                 r, w  = self._file_outpipe()
 */
  __pyx_t_3 = (__pyx_v_stderr != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "uvloop/handles/process.pyx":346
 * 
 *         if stderr is not None:
 *             if stderr == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 r, w  = self._file_outpipe()
 *                 io[2] = w
 */
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_stderr, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":347
 *         if stderr is not None:
 *             if stderr == subprocess_PIPE:
 *                 r, w  = self._file_outpipe()             # <<<<<<<<<<<<<<
 *                 io[2] = w
 * 
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_outpipe(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 347, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 347, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 347, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 347, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) __PYX_ERR(6, 347, __pyx_L1_error)
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L14_unpacking_done;
        __pyx_L13_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 347, __pyx_L1_error)
        __pyx_L14_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_r, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":348
 *             if stderr == subprocess_PIPE:
 *                 r, w  = self._file_outpipe()
 *                 io[2] = w             # <<<<<<<<<<<<<<
 * 
 *                 self.stderr_proto = ReadSubprocessPipeProto(self, 2)
 */
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 2, __pyx_v_w, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 348, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":350
 *                 io[2] = w
 * 
 *                 self.stderr_proto = ReadSubprocessPipeProto(self, 2)             # <<<<<<<<<<<<<<
 *                 waiter = self._loop._new_future()
 *                 self.stderr = ReadUnixTransport.new(
 */
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ReadSubprocessPipeProto); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, ((PyObject *)__pyx_v_self));
      __Pyx_INCREF(__pyx_int_2);
      __Pyx_GIVEREF(__pyx_int_2);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_int_2);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->stderr_proto);
      __Pyx_DECREF(__pyx_v_self->stderr_proto);
      __pyx_v_self->stderr_proto = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":351
 * 
 *                 self.stderr_proto = ReadSubprocessPipeProto(self, 2)
 *                 waiter = self._loop._new_future()             # <<<<<<<<<<<<<<
 *                 self.stderr = ReadUnixTransport.new(
 *                     self._loop, self.stderr_proto, None, waiter)
 */
      __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self->__pyx_base.__pyx_base._loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":353
 *                 waiter = self._loop._new_future()
 *                 self.stderr = ReadUnixTransport.new(
 *                     self._loop, self.stderr_proto, None, waiter)             # <<<<<<<<<<<<<<
 *                 self._init_futs.append(waiter)
 *                 self.stderr.open(r)
 */
      __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_7 = __pyx_v_self->stderr_proto;
      __Pyx_INCREF(__pyx_t_7);

      /* "uvloop/handles/process.pyx":352
 *                 self.stderr_proto = ReadSubprocessPipeProto(self, 2)
 *                 waiter = self._loop._new_future()
 *                 self.stderr = ReadUnixTransport.new(             # <<<<<<<<<<<<<<
 *                     self._loop, self.stderr_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 */
      __pyx_t_6 = ((PyObject *)__pyx_f_6uvloop_4loop_17ReadUnixTransport_new(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_t_7, ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None), __pyx_v_waiter)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_v_self->stderr);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->stderr));
      __pyx_v_self->stderr = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)__pyx_t_6);
      __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":354
 *                 self.stderr = ReadUnixTransport.new(
 *                     self._loop, self.stderr_proto, None, waiter)
 *                 self._init_futs.append(waiter)             # <<<<<<<<<<<<<<
 *                 self.stderr.open(r)
 *                 self.stderr._init_protocol()
 */
      if (unlikely(__pyx_v_self->_init_futs == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
        __PYX_ERR(6, 354, __pyx_L1_error)
      }
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->_init_futs, __pyx_v_waiter); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(6, 354, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":355
 *                     self._loop, self.stderr_proto, None, waiter)
 *                 self._init_futs.append(waiter)
 *                 self.stderr.open(r)             # <<<<<<<<<<<<<<
 *                 self.stderr._init_protocol()
 *             elif stderr == subprocess_STDOUT:
 */
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_r); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 355, __pyx_L1_error)
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self->stderr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->open(__pyx_v_self->stderr, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":356
 *                 self._init_futs.append(waiter)
 *                 self.stderr.open(r)
 *                 self.stderr._init_protocol()             # <<<<<<<<<<<<<<
 *             elif stderr == subprocess_STDOUT:
 *                 if io[1] is None:
 */
      __pyx_t_6 = ((struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport *)__pyx_v_self->stderr->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._init_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self->stderr)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 356, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "uvloop/handles/process.pyx":346
 * 
 *         if stderr is not None:
 *             if stderr == subprocess_PIPE:             # <<<<<<<<<<<<<<
 *                 r, w  = self._file_outpipe()
 *                 io[2] = w
 */
      goto __pyx_L12;
    }

    /* "uvloop/handles/process.pyx":357
 *                 self.stderr.open(r)
 *                 self.stderr._init_protocol()
 *             elif stderr == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 if io[1] is None:
 *                     # shouldn't ever happen
 */
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_STDOUT); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_RichCompare(__pyx_v_stderr, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 357, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 357, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":358
 *                 self.stderr._init_protocol()
 *             elif stderr == subprocess_STDOUT:
 *                 if io[1] is None:             # <<<<<<<<<<<<<<
 *                     # shouldn't ever happen
 *                     raise RuntimeError('cannot apply subprocess.STDOUT')
 */
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_io, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 358, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = (__pyx_t_7 == Py_None);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = (__pyx_t_4 != 0);
      if (__pyx_t_3) {

        /* "uvloop/handles/process.pyx":360
 *                 if io[1] is None:
 *                     # shouldn't ever happen
 *                     raise RuntimeError('cannot apply subprocess.STDOUT')             # <<<<<<<<<<<<<<
 * 
 *                 newfd = os_dup(io[1])
 */
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 360, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(6, 360, __pyx_L1_error)

        /* "uvloop/handles/process.pyx":358
 *                 self.stderr._init_protocol()
 *             elif stderr == subprocess_STDOUT:
 *                 if io[1] is None:             # <<<<<<<<<<<<<<
 *                     # shouldn't ever happen
 *                     raise RuntimeError('cannot apply subprocess.STDOUT')
 */
      }

      /* "uvloop/handles/process.pyx":362
 *                     raise RuntimeError('cannot apply subprocess.STDOUT')
 * 
 *                 newfd = os_dup(io[1])             # <<<<<<<<<<<<<<
 *                 os_set_inheritable(newfd, True)
 *                 self._close_after_spawn(newfd)
 */
      __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_io, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_dup);
      __pyx_t_1 = __pyx_v_6uvloop_4loop_os_dup; __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 362, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_newfd = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":363
 * 
 *                 newfd = os_dup(io[1])
 *                 os_set_inheritable(newfd, True)             # <<<<<<<<<<<<<<
 *                 self._close_after_spawn(newfd)
 *                 io[2] = newfd
 */
      __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
      __pyx_t_1 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_12 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_12) {
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12); __pyx_t_12 = NULL;
      }
      __Pyx_INCREF(__pyx_v_newfd);
      __Pyx_GIVEREF(__pyx_v_newfd);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_v_newfd);
      __Pyx_INCREF(Py_True);
      __Pyx_GIVEREF(Py_True);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, Py_True);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":364
 *                 newfd = os_dup(io[1])
 *                 os_set_inheritable(newfd, True)
 *                 self._close_after_spawn(newfd)             # <<<<<<<<<<<<<<
 *                 io[2] = newfd
 *             elif stdout == subprocess_DEVNULL:
 */
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_newfd); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 364, __pyx_L1_error)
      __pyx_t_7 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._close_after_spawn(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":365
 *                 os_set_inheritable(newfd, True)
 *                 self._close_after_spawn(newfd)
 *                 io[2] = newfd             # <<<<<<<<<<<<<<
 *             elif stdout == subprocess_DEVNULL:
 *                 io[2] = self._file_devnull()
 */
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 2, __pyx_v_newfd, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 365, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":357
 *                 self.stderr.open(r)
 *                 self.stderr._init_protocol()
 *             elif stderr == subprocess_STDOUT:             # <<<<<<<<<<<<<<
 *                 if io[1] is None:
 *                     # shouldn't ever happen
 */
      goto __pyx_L12;
    }

    /* "uvloop/handles/process.pyx":366
 *                 self._close_after_spawn(newfd)
 *                 io[2] = newfd
 *             elif stdout == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[2] = self._file_devnull()
 *             else:
 */
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_DEVNULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_stdout, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 366, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 366, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {

      /* "uvloop/handles/process.pyx":367
 *                 io[2] = newfd
 *             elif stdout == subprocess_DEVNULL:
 *                 io[2] = self._file_devnull()             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_devnull(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 367, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 2, __pyx_t_1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 367, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/handles/process.pyx":366
 *                 self._close_after_spawn(newfd)
 *                 io[2] = newfd
 *             elif stdout == subprocess_DEVNULL:             # <<<<<<<<<<<<<<
 *                 io[2] = self._file_devnull()
 *             else:
 */
      goto __pyx_L12;
    }

    /* "uvloop/handles/process.pyx":369
 *                 io[2] = self._file_devnull()
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stderr argument value {!r}'.format(stdin))
 *         else:
 */
    /*else*/ {

      /* "uvloop/handles/process.pyx":370
 *             else:
 *                 raise ValueError(
 *                     'invalid stderr argument value {!r}'.format(stdin))             # <<<<<<<<<<<<<<
 *         else:
 *             io[2] = self._file_redirect_stdio(sys.stderr.fileno())
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid_stderr_argument_value_r, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 370, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_stdin); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 370, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 370, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_stdin);
        __Pyx_GIVEREF(__pyx_v_stdin);
        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_stdin);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 370, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "uvloop/handles/process.pyx":369
 *                 io[2] = self._file_devnull()
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'invalid stderr argument value {!r}'.format(stdin))
 *         else:
 */
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(6, 369, __pyx_L1_error)
    }
    __pyx_L12:;

    /* "uvloop/handles/process.pyx":345
 *             io[1] = self._file_redirect_stdio(sys.stdout.fileno())
 * 
 *         if stderr is not None:             # <<<<<<<<<<<<<<
 *             if stderr == subprocess_PIPE:
 *                 r, w  = self._file_outpipe()
 */
    goto __pyx_L11;
  }

  /* "uvloop/handles/process.pyx":372
 *                     'invalid stderr argument value {!r}'.format(stdin))
 *         else:
 *             io[2] = self._file_redirect_stdio(sys.stderr.fileno())             # <<<<<<<<<<<<<<
 * 
 *         assert len(io) == 3
 */
  /*else*/ {
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_stderr); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_fileno); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (__pyx_t_12) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 372, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 372, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_file_redirect_stdio(__pyx_v_self, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely(__Pyx_SetItemInt(__pyx_v_io, 2, __pyx_t_1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(6, 372, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L11:;

  /* "uvloop/handles/process.pyx":374
 *             io[2] = self._file_redirect_stdio(sys.stderr.fileno())
 * 
 *         assert len(io) == 3             # <<<<<<<<<<<<<<
 *         for idx in range(3):
 *             if io[idx] is not None:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_9 = PyList_GET_SIZE(__pyx_v_io); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(6, 374, __pyx_L1_error)
    if (unlikely(!((__pyx_t_9 == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(6, 374, __pyx_L1_error)
    }
  }
  #endif

  /* "uvloop/handles/process.pyx":375
 * 
 *         assert len(io) == 3
 *         for idx in range(3):             # <<<<<<<<<<<<<<
 *             if io[idx] is not None:
 *                 iocnt = &self.iocnt[idx]
 */
  for (__pyx_t_13 = 0; __pyx_t_13 < 3; __pyx_t_13+=1) {
    __pyx_v_idx = __pyx_t_13;

    /* "uvloop/handles/process.pyx":376
 *         assert len(io) == 3
 *         for idx in range(3):
 *             if io[idx] is not None:             # <<<<<<<<<<<<<<
 *                 iocnt = &self.iocnt[idx]
 *                 iocnt.flags = uv.UV_INHERIT_FD
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_io, __pyx_v_idx, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":377
 *         for idx in range(3):
 *             if io[idx] is not None:
 *                 iocnt = &self.iocnt[idx]             # <<<<<<<<<<<<<<
 *                 iocnt.flags = uv.UV_INHERIT_FD
 *                 iocnt.data.fd = io[idx]
 */
      __pyx_v_iocnt = (&(__pyx_v_self->__pyx_base.iocnt[__pyx_v_idx]));

      /* "uvloop/handles/process.pyx":378
 *             if io[idx] is not None:
 *                 iocnt = &self.iocnt[idx]
 *                 iocnt.flags = uv.UV_INHERIT_FD             # <<<<<<<<<<<<<<
 *                 iocnt.data.fd = io[idx]
 * 
 */
      __pyx_v_iocnt->flags = UV_INHERIT_FD;

      /* "uvloop/handles/process.pyx":379
 *                 iocnt = &self.iocnt[idx]
 *                 iocnt.flags = uv.UV_INHERIT_FD
 *                 iocnt.data.fd = io[idx]             # <<<<<<<<<<<<<<
 * 
 *     cdef _call_connection_made(self, waiter):
 */
      __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_io, __pyx_v_idx, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 379, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_iocnt->data.fd = __pyx_t_11;

      /* "uvloop/handles/process.pyx":376
 *         assert len(io) == 3
 *         for idx in range(3):
 *             if io[idx] is not None:             # <<<<<<<<<<<<<<
 *                 iocnt = &self.iocnt[idx]
 *                 iocnt.flags = uv.UV_INHERIT_FD
 */
    }
  }

  /* "uvloop/handles/process.pyx":283
 *         return r, w
 * 
 *     cdef _init_files(self, stdin, stdout, stderr):             # <<<<<<<<<<<<<<
 *         cdef uv.uv_stdio_container_t *iocnt
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._init_files", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_io);
  __Pyx_XDECREF(__pyx_v_r);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_XDECREF(__pyx_v_newfd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":381
 *                 iocnt.data.fd = io[idx]
 * 
 *     cdef _call_connection_made(self, waiter):             # <<<<<<<<<<<<<<
 *         try:
 *             self._protocol.connection_made(self)
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__call_connection_made(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_waiter) {
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_pending_calls = NULL;
  PyObject *__pyx_v_type = NULL;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  Py_ssize_t __pyx_t_23;
  PyObject *(*__pyx_t_24)(PyObject *);
  PyObject *(*__pyx_t_25)(PyObject *);
  Py_ssize_t __pyx_t_26;
  __Pyx_RefNannySetupContext("_call_connection_made", 0);

  /* "uvloop/handles/process.pyx":382
 * 
 *     cdef _call_connection_made(self, waiter):
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol.connection_made(self)
 *         except Exception as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "uvloop/handles/process.pyx":383
 *     cdef _call_connection_made(self, waiter):
 *         try:
 *             self._protocol.connection_made(self)             # <<<<<<<<<<<<<<
 *         except Exception as ex:
 *             if waiter is not None and not waiter.cancelled():
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_connection_made); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 383, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 383, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 383, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 383, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/handles/process.pyx":382
 * 
 *     cdef _call_connection_made(self, waiter):
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol.connection_made(self)
 *         except Exception as ex:
 */
    }

    /* "uvloop/handles/process.pyx":390
 *                 raise
 *         else:
 *             if waiter is not None and not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(True)
 * 
 */
    /*else:*/ {
      __pyx_t_9 = (__pyx_v_waiter != Py_None);
      __pyx_t_10 = (__pyx_t_9 != 0);
      if (__pyx_t_10) {
      } else {
        __pyx_t_8 = __pyx_t_10;
        goto __pyx_L12_bool_binop_done;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 390, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 390, __pyx_L5_except_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 390, __pyx_L5_except_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(6, 390, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = ((!__pyx_t_10) != 0);
      __pyx_t_8 = __pyx_t_9;
      __pyx_L12_bool_binop_done:;
      if (__pyx_t_8) {

        /* "uvloop/handles/process.pyx":391
 *         else:
 *             if waiter is not None and not waiter.cancelled():
 *                 waiter.set_result(True)             # <<<<<<<<<<<<<<
 * 
 *         self._stdio_ready = 1
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 391, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 391, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "uvloop/handles/process.pyx":390
 *                 raise
 *         else:
 *             if waiter is not None and not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(True)
 * 
 */
      }
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/handles/process.pyx":384
 *         try:
 *             self._protocol.connection_made(self)
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             if waiter is not None and not waiter.cancelled():
 *                 waiter.set_exception(ex)
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._call_connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(6, 384, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_ex = __pyx_t_4;
      /*try:*/ {

        /* "uvloop/handles/process.pyx":385
 *             self._protocol.connection_made(self)
 *         except Exception as ex:
 *             if waiter is not None and not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_exception(ex)
 *             else:
 */
        __pyx_t_9 = (__pyx_v_waiter != Py_None);
        __pyx_t_10 = (__pyx_t_9 != 0);
        if (__pyx_t_10) {
        } else {
          __pyx_t_8 = __pyx_t_10;
          goto __pyx_L22_bool_binop_done;
        }
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 385, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
          }
        }
        if (__pyx_t_13) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 385, __pyx_L19_error)
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        } else {
          __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 385, __pyx_L19_error)
        }
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(6, 385, __pyx_L19_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_9 = ((!__pyx_t_10) != 0);
        __pyx_t_8 = __pyx_t_9;
        __pyx_L22_bool_binop_done:;
        if (__pyx_t_8) {

          /* "uvloop/handles/process.pyx":386
 *         except Exception as ex:
 *             if waiter is not None and not waiter.cancelled():
 *                 waiter.set_exception(ex)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise
 */
          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 386, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
            }
          }
          if (!__pyx_t_13) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_ex); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 386, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 386, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_INCREF(__pyx_v_ex);
            __Pyx_GIVEREF(__pyx_v_ex);
            PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_ex);
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 386, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "uvloop/handles/process.pyx":385
 *             self._protocol.connection_made(self)
 *         except Exception as ex:
 *             if waiter is not None and not waiter.cancelled():             # <<<<<<<<<<<<<<
 *                 waiter.set_exception(ex)
 *             else:
 */
          goto __pyx_L21;
        }

        /* "uvloop/handles/process.pyx":388
 *                 waiter.set_exception(ex)
 *             else:
 *                 raise             # <<<<<<<<<<<<<<
 *         else:
 *             if waiter is not None and not waiter.cancelled():
 */
        /*else*/ {
          __Pyx_GIVEREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_4);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_4, __pyx_t_7);
          __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; 
          __PYX_ERR(6, 388, __pyx_L19_error)
        }
        __pyx_L21:;
      }

      /* "uvloop/handles/process.pyx":384
 *         try:
 *             self._protocol.connection_made(self)
 *         except Exception as ex:             # <<<<<<<<<<<<<<
 *             if waiter is not None and not waiter.cancelled():
 *                 waiter.set_exception(ex)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L20;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L19_error:;
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          __pyx_t_11 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          }
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
          goto __pyx_L5_except_error;
        }
        __pyx_L20:;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "uvloop/handles/process.pyx":382
 * 
 *     cdef _call_connection_made(self, waiter):
 *         try:             # <<<<<<<<<<<<<<
 *             self._protocol.connection_made(self)
 *         except Exception as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "uvloop/handles/process.pyx":393
 *                 waiter.set_result(True)
 * 
 *         self._stdio_ready = 1             # <<<<<<<<<<<<<<
 *         if self._pending_calls:
 *             pending_calls = self._pending_calls.copy()
 */
  __pyx_v_self->_stdio_ready = 1;

  /* "uvloop/handles/process.pyx":394
 * 
 *         self._stdio_ready = 1
 *         if self._pending_calls:             # <<<<<<<<<<<<<<
 *             pending_calls = self._pending_calls.copy()
 *             self._pending_calls.clear()
 */
  __pyx_t_8 = (__pyx_v_self->_pending_calls != Py_None) && (PyList_GET_SIZE(__pyx_v_self->_pending_calls) != 0);
  if (__pyx_t_8) {

    /* "uvloop/handles/process.pyx":395
 *         self._stdio_ready = 1
 *         if self._pending_calls:
 *             pending_calls = self._pending_calls.copy()             # <<<<<<<<<<<<<<
 *             self._pending_calls.clear()
 *             for (type, fd, arg) in pending_calls:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_pending_calls, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 395, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 395, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_pending_calls = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "uvloop/handles/process.pyx":396
 *         if self._pending_calls:
 *             pending_calls = self._pending_calls.copy()
 *             self._pending_calls.clear()             # <<<<<<<<<<<<<<
 *             for (type, fd, arg) in pending_calls:
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_pending_calls, __pyx_n_s_clear); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 396, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 396, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "uvloop/handles/process.pyx":397
 *             pending_calls = self._pending_calls.copy()
 *             self._pending_calls.clear()
 *             for (type, fd, arg) in pending_calls:             # <<<<<<<<<<<<<<
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 *                     self._pipe_connection_lost(fd, arg)
 */
    if (likely(PyList_CheckExact(__pyx_v_pending_calls)) || PyTuple_CheckExact(__pyx_v_pending_calls)) {
      __pyx_t_7 = __pyx_v_pending_calls; __Pyx_INCREF(__pyx_t_7); __pyx_t_23 = 0;
      __pyx_t_24 = NULL;
    } else {
      __pyx_t_23 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_pending_calls); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 397, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_24 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_24)) __PYX_ERR(6, 397, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_24)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_23); __Pyx_INCREF(__pyx_t_4); __pyx_t_23++; if (unlikely(0 < 0)) __PYX_ERR(6, 397, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 397, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_23); __Pyx_INCREF(__pyx_t_4); __pyx_t_23++; if (unlikely(0 < 0)) __PYX_ERR(6, 397, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 397, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_24(__pyx_t_7);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(6, 397, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 3)) {
          if (size > 3) __Pyx_RaiseTooManyValuesError(3);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 397, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_12 = PyTuple_GET_ITEM(sequence, 2); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_12 = PyList_GET_ITEM(sequence, 2); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_12 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_14 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_25 = Py_TYPE(__pyx_t_14)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_25(__pyx_t_14); if (unlikely(!__pyx_t_5)) goto __pyx_L31_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_6 = __pyx_t_25(__pyx_t_14); if (unlikely(!__pyx_t_6)) goto __pyx_L31_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 2; __pyx_t_12 = __pyx_t_25(__pyx_t_14); if (unlikely(!__pyx_t_12)) goto __pyx_L31_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_12);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_25(__pyx_t_14), 3) < 0) __PYX_ERR(6, 397, __pyx_L1_error)
        __pyx_t_25 = NULL;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        goto __pyx_L32_unpacking_done;
        __pyx_L31_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_t_25 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 397, __pyx_L1_error)
        __pyx_L32_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_type, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fd, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_12);
      __pyx_t_12 = 0;

      /* "uvloop/handles/process.pyx":398
 *             self._pending_calls.clear()
 *             for (type, fd, arg) in pending_calls:
 *                 if type == _CALL_PIPE_CONNECTION_LOST:             # <<<<<<<<<<<<<<
 *                     self._pipe_connection_lost(fd, arg)
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 */
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PIPE_CONNECTION_LOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_type, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 398, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(6, 398, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_8) {

        /* "uvloop/handles/process.pyx":399
 *             for (type, fd, arg) in pending_calls:
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 *                     self._pipe_connection_lost(fd, arg)             # <<<<<<<<<<<<<<
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 *                     self._pipe_data_received(fd, arg)
 */
        __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 399, __pyx_L1_error)
        __pyx_t_12 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_pipe_connection_lost(__pyx_v_self, __pyx_t_15, __pyx_v_arg); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 399, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

        /* "uvloop/handles/process.pyx":398
 *             self._pending_calls.clear()
 *             for (type, fd, arg) in pending_calls:
 *                 if type == _CALL_PIPE_CONNECTION_LOST:             # <<<<<<<<<<<<<<
 *                     self._pipe_connection_lost(fd, arg)
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 */
        goto __pyx_L33;
      }

      /* "uvloop/handles/process.pyx":400
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 *                     self._pipe_connection_lost(fd, arg)
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:             # <<<<<<<<<<<<<<
 *                     self._pipe_data_received(fd, arg)
 *                 elif type == _CALL_PROCESS_EXITED:
 */
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PIPE_DATA_RECEIVED); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 400, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 400, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(6, 400, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_8) {

        /* "uvloop/handles/process.pyx":401
 *                     self._pipe_connection_lost(fd, arg)
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 *                     self._pipe_data_received(fd, arg)             # <<<<<<<<<<<<<<
 *                 elif type == _CALL_PROCESS_EXITED:
 *                     self._loop.call_soon(self._protocol.process_exited)
 */
        __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 401, __pyx_L1_error)
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_pipe_data_received(__pyx_v_self, __pyx_t_15, __pyx_v_arg); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/handles/process.pyx":400
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 *                     self._pipe_connection_lost(fd, arg)
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:             # <<<<<<<<<<<<<<
 *                     self._pipe_data_received(fd, arg)
 *                 elif type == _CALL_PROCESS_EXITED:
 */
        goto __pyx_L33;
      }

      /* "uvloop/handles/process.pyx":402
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 *                     self._pipe_data_received(fd, arg)
 *                 elif type == _CALL_PROCESS_EXITED:             # <<<<<<<<<<<<<<
 *                     self._loop.call_soon(self._protocol.process_exited)
 *                 elif type == _CALL_CONNECTION_LOST:
 */
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_PROCESS_EXITED); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_type, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 402, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(6, 402, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_8) {

        /* "uvloop/handles/process.pyx":403
 *                     self._pipe_data_received(fd, arg)
 *                 elif type == _CALL_PROCESS_EXITED:
 *                     self._loop.call_soon(self._protocol.process_exited)             # <<<<<<<<<<<<<<
 *                 elif type == _CALL_CONNECTION_LOST:
 *                     self._loop.call_soon(self._protocol.connection_lost, None)
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 403, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_process_exited); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 403, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 403, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_12);
        } else {
          __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 403, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 403, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

        /* "uvloop/handles/process.pyx":402
 *                 elif type == _CALL_PIPE_DATA_RECEIVED:
 *                     self._pipe_data_received(fd, arg)
 *                 elif type == _CALL_PROCESS_EXITED:             # <<<<<<<<<<<<<<
 *                     self._loop.call_soon(self._protocol.process_exited)
 *                 elif type == _CALL_CONNECTION_LOST:
 */
        goto __pyx_L33;
      }

      /* "uvloop/handles/process.pyx":404
 *                 elif type == _CALL_PROCESS_EXITED:
 *                     self._loop.call_soon(self._protocol.process_exited)
 *                 elif type == _CALL_CONNECTION_LOST:             # <<<<<<<<<<<<<<
 *                     self._loop.call_soon(self._protocol.connection_lost, None)
 * 
 */
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_CONNECTION_LOST); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 404, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 404, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(6, 404, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_8) {

        /* "uvloop/handles/process.pyx":405
 *                     self._loop.call_soon(self._protocol.process_exited)
 *                 elif type == _CALL_CONNECTION_LOST:
 *                     self._loop.call_soon(self._protocol.connection_lost, None)             # <<<<<<<<<<<<<<
 * 
 *     cdef _try_finish(self):
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_connection_lost); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_6 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_14);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_14);
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, Py_None);
        __pyx_t_14 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "uvloop/handles/process.pyx":404
 *                 elif type == _CALL_PROCESS_EXITED:
 *                     self._loop.call_soon(self._protocol.process_exited)
 *                 elif type == _CALL_CONNECTION_LOST:             # <<<<<<<<<<<<<<
 *                     self._loop.call_soon(self._protocol.connection_lost, None)
 * 
 */
      }
      __pyx_L33:;

      /* "uvloop/handles/process.pyx":397
 *             pending_calls = self._pending_calls.copy()
 *             self._pending_calls.clear()
 *             for (type, fd, arg) in pending_calls:             # <<<<<<<<<<<<<<
 *                 if type == _CALL_PIPE_CONNECTION_LOST:
 *                     self._pipe_connection_lost(fd, arg)
 */
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "uvloop/handles/process.pyx":394
 * 
 *         self._stdio_ready = 1
 *         if self._pending_calls:             # <<<<<<<<<<<<<<
 *             pending_calls = self._pending_calls.copy()
 *             self._pending_calls.clear()
 */
  }

  /* "uvloop/handles/process.pyx":381
 *                 iocnt.data.fd = io[idx]
 * 
 *     cdef _call_connection_made(self, waiter):             # <<<<<<<<<<<<<<
 *         try:
 *             self._protocol.connection_made(self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._call_connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_pending_calls);
  __Pyx_XDECREF(__pyx_v_type);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":407
 *                     self._loop.call_soon(self._protocol.connection_lost, None)
 * 
 *     cdef _try_finish(self):             # <<<<<<<<<<<<<<
 *         if self._returncode is None or self._finished:
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_18UVProcessTransport__try_finish(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("_try_finish", 0);

  /* "uvloop/handles/process.pyx":408
 * 
 *     cdef _try_finish(self):
 *         if self._returncode is None or self._finished:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base._returncode == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_self->_finished != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":409
 *     cdef _try_finish(self):
 *         if self._returncode is None or self._finished:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":408
 * 
 *     cdef _try_finish(self):
 *         if self._returncode is None or self._finished:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/process.pyx":411
 *             return
 * 
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and             # <<<<<<<<<<<<<<
 *             (self.stdout_proto is None or self.stdout_proto.disconnected) and
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):
 */
  __pyx_t_3 = (__pyx_v_self->stdin_proto == Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (!__pyx_t_2) {
  } else {
    goto __pyx_L8_next_and;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->stdin_proto, __pyx_n_s_disconnected); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_L8_next_and:;

  /* "uvloop/handles/process.pyx":412
 * 
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and
 *             (self.stdout_proto is None or self.stdout_proto.disconnected) and             # <<<<<<<<<<<<<<
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):
 * 
 */
  __pyx_t_2 = (__pyx_v_self->stdout_proto == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    goto __pyx_L10_next_and;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->stdout_proto, __pyx_n_s_disconnected); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 412, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_L10_next_and:;

  /* "uvloop/handles/process.pyx":413
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and
 *             (self.stdout_proto is None or self.stdout_proto.disconnected) and
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):             # <<<<<<<<<<<<<<
 * 
 *             self._finished = 1
 */
  __pyx_t_3 = (__pyx_v_self->stderr_proto == Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->stderr_proto, __pyx_n_s_disconnected); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L7_bool_binop_done:;

  /* "uvloop/handles/process.pyx":411
 *             return
 * 
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and             # <<<<<<<<<<<<<<
 *             (self.stdout_proto is None or self.stdout_proto.disconnected) and
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":415
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):
 * 
 *             self._finished = 1             # <<<<<<<<<<<<<<
 * 
 *             if self._stdio_ready:
 */
    __pyx_v_self->_finished = 1;

    /* "uvloop/handles/process.pyx":417
 *             self._finished = 1
 * 
 *             if self._stdio_ready:             # <<<<<<<<<<<<<<
 *                 self._loop.call_soon(self._protocol.connection_lost, None)
 *             else:
 */
    __pyx_t_1 = (__pyx_v_self->_stdio_ready != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/process.pyx":418
 * 
 *             if self._stdio_ready:
 *                 self._loop.call_soon(self._protocol.connection_lost, None)             # <<<<<<<<<<<<<<
 *             else:
 *                 self._pending_calls.append((_CALL_CONNECTION_LOST, None, None))
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop), __pyx_n_s_call_soon); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_protocol, __pyx_n_s_connection_lost); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6);
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, Py_None);
      __pyx_t_6 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "uvloop/handles/process.pyx":417
 *             self._finished = 1
 * 
 *             if self._stdio_ready:             # <<<<<<<<<<<<<<
 *                 self._loop.call_soon(self._protocol.connection_lost, None)
 *             else:
 */
      goto __pyx_L13;
    }

    /* "uvloop/handles/process.pyx":420
 *                 self._loop.call_soon(self._protocol.connection_lost, None)
 *             else:
 *                 self._pending_calls.append((_CALL_CONNECTION_LOST, None, None))             # <<<<<<<<<<<<<<
 * 
 *     def __stdio_inited(self, waiter, stdio_fut):
 */
    /*else*/ {
      if (unlikely(__pyx_v_self->_pending_calls == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
        __PYX_ERR(6, 420, __pyx_L1_error)
      }
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CALL_CONNECTION_LOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_5, 1, Py_None);
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_5, 2, Py_None);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->_pending_calls, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(6, 420, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_L13:;

    /* "uvloop/handles/process.pyx":411
 *             return
 * 
 *         if ((self.stdin_proto is None or self.stdin_proto.disconnected) and             # <<<<<<<<<<<<<<
 *             (self.stdout_proto is None or self.stdout_proto.disconnected) and
 *             (self.stderr_proto is None or self.stderr_proto.disconnected)):
 */
  }

  /* "uvloop/handles/process.pyx":407
 *                     self._loop.call_soon(self._protocol.connection_lost, None)
 * 
 *     cdef _try_finish(self):             # <<<<<<<<<<<<<<
 *         if self._returncode is None or self._finished:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._try_finish", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":422
 *                 self._pending_calls.append((_CALL_CONNECTION_LOST, None, None))
 * 
 *     def __stdio_inited(self, waiter, stdio_fut):             # <<<<<<<<<<<<<<
 *         exc = stdio_fut.exception()
 *         if exc is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_3__stdio_inited(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_3__stdio_inited(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_waiter = 0;
  PyObject *__pyx_v_stdio_fut = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__stdio_inited (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_waiter,&__pyx_n_s_stdio_fut,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waiter)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stdio_fut)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__stdio_inited", 1, 2, 2, 1); __PYX_ERR(6, 422, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__stdio_inited") < 0)) __PYX_ERR(6, 422, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_waiter = values[0];
    __pyx_v_stdio_fut = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__stdio_inited", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 422, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.__stdio_inited", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_2__stdio_inited(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self), __pyx_v_waiter, __pyx_v_stdio_fut);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_2__stdio_inited(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_waiter, PyObject *__pyx_v_stdio_fut) {
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__stdio_inited", 0);

  /* "uvloop/handles/process.pyx":423
 * 
 *     def __stdio_inited(self, waiter, stdio_fut):
 *         exc = stdio_fut.exception()             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             if waiter is None:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_stdio_fut, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 423, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 423, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":424
 *     def __stdio_inited(self, waiter, stdio_fut):
 *         exc = stdio_fut.exception()
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             if waiter is None:
 *                 raise exc
 */
  __pyx_t_4 = (__pyx_v_exc != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "uvloop/handles/process.pyx":425
 *         exc = stdio_fut.exception()
 *         if exc is not None:
 *             if waiter is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 *             else:
 */
    __pyx_t_5 = (__pyx_v_waiter == Py_None);
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "uvloop/handles/process.pyx":426
 *         if exc is not None:
 *             if waiter is None:
 *                 raise exc             # <<<<<<<<<<<<<<
 *             else:
 *                 waiter.set_exception(exc)
 */
      __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
      __PYX_ERR(6, 426, __pyx_L1_error)

      /* "uvloop/handles/process.pyx":425
 *         exc = stdio_fut.exception()
 *         if exc is not None:
 *             if waiter is None:             # <<<<<<<<<<<<<<
 *                 raise exc
 *             else:
 */
    }

    /* "uvloop/handles/process.pyx":428
 *                 raise exc
 *             else:
 *                 waiter.set_exception(exc)             # <<<<<<<<<<<<<<
 *         else:
 *             self._loop._call_soon_handle(
 */
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 428, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 428, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 428, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_exc);
        __Pyx_GIVEREF(__pyx_v_exc);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_exc);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 428, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "uvloop/handles/process.pyx":424
 *     def __stdio_inited(self, waiter, stdio_fut):
 *         exc = stdio_fut.exception()
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             if waiter is None:
 *                 raise exc
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":430
 *                 waiter.set_exception(exc)
 *         else:
 *             self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *                 new_MethodHandle1(self._loop,
 *                                   "UVProcessTransport._call_connection_made",
 */
  /*else*/ {

    /* "uvloop/handles/process.pyx":431
 *         else:
 *             self._loop._call_soon_handle(
 *                 new_MethodHandle1(self._loop,             # <<<<<<<<<<<<<<
 *                                   "UVProcessTransport._call_connection_made",
 *                                   <method1_t*>&self._call_connection_made,
 */
    __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._loop);
    __Pyx_INCREF(__pyx_t_1);

    /* "uvloop/handles/process.pyx":434
 *                                   "UVProcessTransport._call_connection_made",
 *                                   <method1_t*>&self._call_connection_made,
 *                                   self, waiter))             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_new_MethodHandle1(((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1), __pyx_kp_u_UVProcessTransport__call_connect, ((__pyx_t_6uvloop_4loop_method1_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_call_connection_made)), ((PyObject *)__pyx_v_self), __pyx_v_waiter); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":431
 *         else:
 *             self._loop._call_soon_handle(
 *                 new_MethodHandle1(self._loop,             # <<<<<<<<<<<<<<
 *                                   "UVProcessTransport._call_connection_made",
 *                                   <method1_t*>&self._call_connection_made,
 */
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(6, 431, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":430
 *                 waiter.set_exception(exc)
 *         else:
 *             self._loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *                 new_MethodHandle1(self._loop,
 *                                   "UVProcessTransport._call_connection_made",
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_self->__pyx_base.__pyx_base._loop, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":422
 *                 self._pending_calls.append((_CALL_CONNECTION_LOST, None, None))
 * 
 *     def __stdio_inited(self, waiter, stdio_fut):             # <<<<<<<<<<<<<<
 *         exc = stdio_fut.exception()
 *         if exc is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.__stdio_inited", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":437
 * 
 *     @staticmethod
 *     cdef UVProcessTransport new(Loop loop, protocol, args, env,             # <<<<<<<<<<<<<<
 *                                 cwd, start_new_session,
 *                                 stdin, stdout, stderr, pass_fds,
 */

static struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_f_6uvloop_4loop_18UVProcessTransport_new(struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_protocol, PyObject *__pyx_v_args, PyObject *__pyx_v_env, PyObject *__pyx_v_cwd, PyObject *__pyx_v_start_new_session, PyObject *__pyx_v_stdin, PyObject *__pyx_v_stdout, PyObject *__pyx_v_stderr, PyObject *__pyx_v_pass_fds, PyObject *__pyx_v_waiter, PyObject *__pyx_v_debug_flags) {
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_handle = 0;
  PyObject *__pyx_v_init_fut = NULL;
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/process.pyx":444
 * 
 *         cdef UVProcessTransport handle
 *         handle = UVProcessTransport.__new__(UVProcessTransport)             # <<<<<<<<<<<<<<
 *         handle._protocol = protocol
 *         handle._init(loop, args, env, cwd, start_new_session,
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop_UVProcessTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UVProcessTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop_UVProcessTransport)))) __PYX_ERR(6, 444, __pyx_L1_error)
  __pyx_v_handle = ((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":445
 *         cdef UVProcessTransport handle
 *         handle = UVProcessTransport.__new__(UVProcessTransport)
 *         handle._protocol = protocol             # <<<<<<<<<<<<<<
 *         handle._init(loop, args, env, cwd, start_new_session,
 *                      __process_convert_fileno(stdin),
 */
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_v_protocol);
  __Pyx_GOTREF(__pyx_v_handle->_protocol);
  __Pyx_DECREF(__pyx_v_handle->_protocol);
  __pyx_v_handle->_protocol = __pyx_v_protocol;

  /* "uvloop/handles/process.pyx":446
 *         handle = UVProcessTransport.__new__(UVProcessTransport)
 *         handle._protocol = protocol
 *         handle._init(loop, args, env, cwd, start_new_session,             # <<<<<<<<<<<<<<
 *                      __process_convert_fileno(stdin),
 *                      __process_convert_fileno(stdout),
 */
  if (!(likely(PyList_CheckExact(__pyx_v_args))||((__pyx_v_args) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_args)->tp_name), 0))) __PYX_ERR(6, 446, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_v_env))||((__pyx_v_env) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_env)->tp_name), 0))) __PYX_ERR(6, 446, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":447
 *         handle._protocol = protocol
 *         handle._init(loop, args, env, cwd, start_new_session,
 *                      __process_convert_fileno(stdin),             # <<<<<<<<<<<<<<
 *                      __process_convert_fileno(stdout),
 *                      __process_convert_fileno(stderr),
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop___process_convert_fileno(__pyx_v_stdin); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "uvloop/handles/process.pyx":448
 *         handle._init(loop, args, env, cwd, start_new_session,
 *                      __process_convert_fileno(stdin),
 *                      __process_convert_fileno(stdout),             # <<<<<<<<<<<<<<
 *                      __process_convert_fileno(stderr),
 *                      pass_fds,
 */
  __pyx_t_2 = __pyx_f_6uvloop_4loop___process_convert_fileno(__pyx_v_stdout); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "uvloop/handles/process.pyx":449
 *                      __process_convert_fileno(stdin),
 *                      __process_convert_fileno(stdout),
 *                      __process_convert_fileno(stderr),             # <<<<<<<<<<<<<<
 *                      pass_fds,
 *                      debug_flags)
 */
  __pyx_t_3 = __pyx_f_6uvloop_4loop___process_convert_fileno(__pyx_v_stderr); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "uvloop/handles/process.pyx":446
 *         handle = UVProcessTransport.__new__(UVProcessTransport)
 *         handle._protocol = protocol
 *         handle._init(loop, args, env, cwd, start_new_session,             # <<<<<<<<<<<<<<
 *                      __process_convert_fileno(stdin),
 *                      __process_convert_fileno(stdout),
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_handle), __pyx_v_loop, ((PyObject*)__pyx_v_args), ((PyObject*)__pyx_v_env), __pyx_v_cwd, __pyx_v_start_new_session, __pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_v_pass_fds, __pyx_v_debug_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "uvloop/handles/process.pyx":453
 *                      debug_flags)
 * 
 *         if handle._init_futs:             # <<<<<<<<<<<<<<
 *             handle._stdio_ready = 0
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)
 */
  __pyx_t_5 = (__pyx_v_handle->_init_futs != Py_None) && (PyList_GET_SIZE(__pyx_v_handle->_init_futs) != 0);
  if (__pyx_t_5) {

    /* "uvloop/handles/process.pyx":454
 * 
 *         if handle._init_futs:
 *             handle._stdio_ready = 0             # <<<<<<<<<<<<<<
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)
 *             init_fut.add_done_callback(
 */
    __pyx_v_handle->_stdio_ready = 0;

    /* "uvloop/handles/process.pyx":455
 *         if handle._init_futs:
 *             handle._stdio_ready = 0
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)             # <<<<<<<<<<<<<<
 *             init_fut.add_done_callback(
 *                 ft_partial(handle.__stdio_inited, waiter))
 */
    __pyx_t_4 = PySequence_Tuple(__pyx_v_handle->_init_futs); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_loop, ((PyObject *)__pyx_v_loop)) < 0) __PYX_ERR(6, 455, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_6uvloop_4loop_aio_gather, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_init_fut = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":456
 *             handle._stdio_ready = 0
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)
 *             init_fut.add_done_callback(             # <<<<<<<<<<<<<<
 *                 ft_partial(handle.__stdio_inited, waiter))
 *         else:
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_init_fut, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/process.pyx":457
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)
 *             init_fut.add_done_callback(
 *                 ft_partial(handle.__stdio_inited, waiter))             # <<<<<<<<<<<<<<
 *         else:
 *             handle._stdio_ready = 1
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_handle), __pyx_n_s_stdio_inited); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_ft_partial);
    __pyx_t_6 = __pyx_v_6uvloop_4loop_ft_partial; __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_waiter);
    __Pyx_GIVEREF(__pyx_v_waiter);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_waiter);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 456, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 456, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 456, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":453
 *                      debug_flags)
 * 
 *         if handle._init_futs:             # <<<<<<<<<<<<<<
 *             handle._stdio_ready = 0
 *             init_fut = aio_gather(*handle._init_futs, loop=loop)
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/process.pyx":459
 *                 ft_partial(handle.__stdio_inited, waiter))
 *         else:
 *             handle._stdio_ready = 1             # <<<<<<<<<<<<<<
 *             loop._call_soon_handle(
 *                 new_MethodHandle1(loop,
 */
  /*else*/ {
    __pyx_v_handle->_stdio_ready = 1;

    /* "uvloop/handles/process.pyx":461
 *             handle._stdio_ready = 1
 *             loop._call_soon_handle(
 *                 new_MethodHandle1(loop,             # <<<<<<<<<<<<<<
 *                                   "UVProcessTransport._call_connection_made",
 *                                   <method1_t*>&handle._call_connection_made,
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_new_MethodHandle1(__pyx_v_loop, __pyx_kp_u_UVProcessTransport__call_connect, ((__pyx_t_6uvloop_4loop_method1_t *)(&((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_handle->__pyx_base.__pyx_base.__pyx_vtab)->_call_connection_made)), ((PyObject *)__pyx_v_handle), __pyx_v_waiter); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6uvloop_4loop_Handle))))) __PYX_ERR(6, 461, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":460
 *         else:
 *             handle._stdio_ready = 1
 *             loop._call_soon_handle(             # <<<<<<<<<<<<<<
 *                 new_MethodHandle1(loop,
 *                                   "UVProcessTransport._call_connection_made",
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_4Loop__call_soon_handle(__pyx_v_loop, ((struct __pyx_obj_6uvloop_4loop_Handle *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/process.pyx":466
 *                                   handle, waiter))
 * 
 *         return handle             # <<<<<<<<<<<<<<
 * 
 *     def get_pid(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_handle));
  __pyx_r = __pyx_v_handle;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":437
 * 
 *     @staticmethod
 *     cdef UVProcessTransport new(Loop loop, protocol, args, env,             # <<<<<<<<<<<<<<
 *                                 cwd, start_new_session,
 *                                 stdin, stdout, stderr, pass_fds,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_init_fut);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":468
 *         return handle
 * 
 *     def get_pid(self):             # <<<<<<<<<<<<<<
 *         return self._pid
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_5get_pid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_5get_pid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_pid (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_4get_pid(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_4get_pid(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_pid", 0);

  /* "uvloop/handles/process.pyx":469
 * 
 *     def get_pid(self):
 *         return self._pid             # <<<<<<<<<<<<<<
 * 
 *     def get_returncode(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->__pyx_base._pid);
  __pyx_r = __pyx_v_self->__pyx_base._pid;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":468
 *         return handle
 * 
 *     def get_pid(self):             # <<<<<<<<<<<<<<
 *         return self._pid
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":471
 *         return self._pid
 * 
 *     def get_returncode(self):             # <<<<<<<<<<<<<<
 *         return self._returncode
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_7get_returncode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_7get_returncode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_returncode (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_6get_returncode(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_6get_returncode(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_returncode", 0);

  /* "uvloop/handles/process.pyx":472
 * 
 *     def get_returncode(self):
 *         return self._returncode             # <<<<<<<<<<<<<<
 * 
 *     def get_pipe_transport(self, fd):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->__pyx_base._returncode);
  __pyx_r = __pyx_v_self->__pyx_base._returncode;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":471
 *         return self._pid
 * 
 *     def get_returncode(self):             # <<<<<<<<<<<<<<
 *         return self._returncode
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":474
 *         return self._returncode
 * 
 *     def get_pipe_transport(self, fd):             # <<<<<<<<<<<<<<
 *         if fd == 0:
 *             return self.stdin
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_9get_pipe_transport(PyObject *__pyx_v_self, PyObject *__pyx_v_fd); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_9get_pipe_transport(PyObject *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_pipe_transport (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_8get_pipe_transport(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self), ((PyObject *)__pyx_v_fd));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_8get_pipe_transport(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("get_pipe_transport", 0);

  /* "uvloop/handles/process.pyx":475
 * 
 *     def get_pipe_transport(self, fd):
 *         if fd == 0:             # <<<<<<<<<<<<<<
 *             return self.stdin
 *         elif fd == 1:
 */
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_fd, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 475, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":476
 *     def get_pipe_transport(self, fd):
 *         if fd == 0:
 *             return self.stdin             # <<<<<<<<<<<<<<
 *         elif fd == 1:
 *             return self.stdout
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_self->stdin));
    __pyx_r = ((PyObject *)__pyx_v_self->stdin);
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":475
 * 
 *     def get_pipe_transport(self, fd):
 *         if fd == 0:             # <<<<<<<<<<<<<<
 *             return self.stdin
 *         elif fd == 1:
 */
  }

  /* "uvloop/handles/process.pyx":477
 *         if fd == 0:
 *             return self.stdin
 *         elif fd == 1:             # <<<<<<<<<<<<<<
 *             return self.stdout
 *         elif fd == 2:
 */
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_fd, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":478
 *             return self.stdin
 *         elif fd == 1:
 *             return self.stdout             # <<<<<<<<<<<<<<
 *         elif fd == 2:
 *             return self.stderr
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_self->stdout));
    __pyx_r = ((PyObject *)__pyx_v_self->stdout);
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":477
 *         if fd == 0:
 *             return self.stdin
 *         elif fd == 1:             # <<<<<<<<<<<<<<
 *             return self.stdout
 *         elif fd == 2:
 */
  }

  /* "uvloop/handles/process.pyx":479
 *         elif fd == 1:
 *             return self.stdout
 *         elif fd == 2:             # <<<<<<<<<<<<<<
 *             return self.stderr
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_fd, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 479, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":480
 *             return self.stdout
 *         elif fd == 2:
 *             return self.stderr             # <<<<<<<<<<<<<<
 * 
 *     def terminate(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_self->stderr));
    __pyx_r = ((PyObject *)__pyx_v_self->stderr);
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":479
 *         elif fd == 1:
 *             return self.stdout
 *         elif fd == 2:             # <<<<<<<<<<<<<<
 *             return self.stderr
 * 
 */
  }

  /* "uvloop/handles/process.pyx":474
 *         return self._returncode
 * 
 *     def get_pipe_transport(self, fd):             # <<<<<<<<<<<<<<
 *         if fd == 0:
 *             return self.stdin
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.get_pipe_transport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":482
 *             return self.stderr
 * 
 *     def terminate(self):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(uv.SIGTERM)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_11terminate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_11terminate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("terminate (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_10terminate(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_10terminate(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("terminate", 0);

  /* "uvloop/handles/process.pyx":483
 * 
 *     def terminate(self):
 *         self._check_proc()             # <<<<<<<<<<<<<<
 *         self._kill(uv.SIGTERM)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_check_proc(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":484
 *     def terminate(self):
 *         self._check_proc()
 *         self._kill(uv.SIGTERM)             # <<<<<<<<<<<<<<
 * 
 *     def kill(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._kill(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), SIGTERM); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":482
 *             return self.stderr
 * 
 *     def terminate(self):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(uv.SIGTERM)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.terminate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":486
 *         self._kill(uv.SIGTERM)
 * 
 *     def kill(self):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(uv.SIGKILL)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_13kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_13kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("kill (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_12kill(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_12kill(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("kill", 0);

  /* "uvloop/handles/process.pyx":487
 * 
 *     def kill(self):
 *         self._check_proc()             # <<<<<<<<<<<<<<
 *         self._kill(uv.SIGKILL)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_check_proc(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":488
 *     def kill(self):
 *         self._check_proc()
 *         self._kill(uv.SIGKILL)             # <<<<<<<<<<<<<<
 * 
 *     def send_signal(self, int signal):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._kill(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), SIGKILL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":486
 *         self._kill(uv.SIGTERM)
 * 
 *     def kill(self):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(uv.SIGKILL)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.kill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":490
 *         self._kill(uv.SIGKILL)
 * 
 *     def send_signal(self, int signal):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(signal)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_15send_signal(PyObject *__pyx_v_self, PyObject *__pyx_arg_signal); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_15send_signal(PyObject *__pyx_v_self, PyObject *__pyx_arg_signal) {
  int __pyx_v_signal;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_signal (wrapper)", 0);
  assert(__pyx_arg_signal); {
    __pyx_v_signal = __Pyx_PyInt_As_int(__pyx_arg_signal); if (unlikely((__pyx_v_signal == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 490, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.send_signal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_14send_signal(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self), ((int)__pyx_v_signal));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_14send_signal(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, int __pyx_v_signal) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("send_signal", 0);

  /* "uvloop/handles/process.pyx":491
 * 
 *     def send_signal(self, int signal):
 *         self._check_proc()             # <<<<<<<<<<<<<<
 *         self._kill(signal)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_check_proc(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":492
 *     def send_signal(self, int signal):
 *         self._check_proc()
 *         self._kill(signal)             # <<<<<<<<<<<<<<
 * 
 *     def is_closing(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._kill(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), __pyx_v_signal); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":490
 *         self._kill(uv.SIGKILL)
 * 
 *     def send_signal(self, int signal):             # <<<<<<<<<<<<<<
 *         self._check_proc()
 *         self._kill(signal)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.send_signal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":494
 *         self._kill(signal)
 * 
 *     def is_closing(self):             # <<<<<<<<<<<<<<
 *         return self._closed
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_17is_closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_17is_closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_closing (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_16is_closing(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_16is_closing(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("is_closing", 0);

  /* "uvloop/handles/process.pyx":495
 * 
 *     def is_closing(self):
 *         return self._closed             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->__pyx_base.__pyx_base._closed); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":494
 *         self._kill(signal)
 * 
 *     def is_closing(self):             # <<<<<<<<<<<<<<
 *         return self._closed
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.is_closing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":497
 *         return self._closed
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._returncode is None:
 *             self._kill(uv.SIGKILL)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_18close(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_18close(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/handles/process.pyx":498
 * 
 *     def close(self):
 *         if self._returncode is None:             # <<<<<<<<<<<<<<
 *             self._kill(uv.SIGKILL)
 * 
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base._returncode == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":499
 *     def close(self):
 *         if self._returncode is None:
 *             self._kill(uv.SIGKILL)             # <<<<<<<<<<<<<<
 * 
 *         if self.stdin is not None:
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._kill(((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_v_self), SIGKILL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/process.pyx":498
 * 
 *     def close(self):
 *         if self._returncode is None:             # <<<<<<<<<<<<<<
 *             self._kill(uv.SIGKILL)
 * 
 */
  }

  /* "uvloop/handles/process.pyx":501
 *             self._kill(uv.SIGKILL)
 * 
 *         if self.stdin is not None:             # <<<<<<<<<<<<<<
 *             self.stdin.close()
 *         if self.stdout is not None:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->stdin) != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":502
 * 
 *         if self.stdin is not None:
 *             self.stdin.close()             # <<<<<<<<<<<<<<
 *         if self.stdout is not None:
 *             self.stdout.close()
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->stdin), __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 502, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 502, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/process.pyx":501
 *             self._kill(uv.SIGKILL)
 * 
 *         if self.stdin is not None:             # <<<<<<<<<<<<<<
 *             self.stdin.close()
 *         if self.stdout is not None:
 */
  }

  /* "uvloop/handles/process.pyx":503
 *         if self.stdin is not None:
 *             self.stdin.close()
 *         if self.stdout is not None:             # <<<<<<<<<<<<<<
 *             self.stdout.close()
 *         if self.stderr is not None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->stdout) != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":504
 *             self.stdin.close()
 *         if self.stdout is not None:
 *             self.stdout.close()             # <<<<<<<<<<<<<<
 *         if self.stderr is not None:
 *             self.stderr.close()
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->stdout), __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 504, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 504, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/process.pyx":503
 *         if self.stdin is not None:
 *             self.stdin.close()
 *         if self.stdout is not None:             # <<<<<<<<<<<<<<
 *             self.stdout.close()
 *         if self.stderr is not None:
 */
  }

  /* "uvloop/handles/process.pyx":505
 *         if self.stdout is not None:
 *             self.stdout.close()
 *         if self.stderr is not None:             # <<<<<<<<<<<<<<
 *             self.stderr.close()
 * 
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->stderr) != Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":506
 *             self.stdout.close()
 *         if self.stderr is not None:
 *             self.stderr.close()             # <<<<<<<<<<<<<<
 * 
 *         self._close()
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->stderr), __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 506, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 506, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/process.pyx":505
 *         if self.stdout is not None:
 *             self.stdout.close()
 *         if self.stderr is not None:             # <<<<<<<<<<<<<<
 *             self.stderr.close()
 * 
 */
  }

  /* "uvloop/handles/process.pyx":508
 *             self.stderr.close()
 * 
 *         self._close()             # <<<<<<<<<<<<<<
 * 
 *     def get_extra_info(self, name, default=None):
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/process.pyx":497
 *         return self._closed
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._returncode is None:
 *             self._kill(uv.SIGKILL)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":510
 *         self._close()
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         return default
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_21get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_21get_extra_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_extra_info (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_default,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_default);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_extra_info") < 0)) __PYX_ERR(6, 510, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_extra_info", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 510, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport.get_extra_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_20get_extra_info(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self), __pyx_v_name, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_20get_extra_info(CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name, PyObject *__pyx_v_default) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_extra_info", 0);

  /* "uvloop/handles/process.pyx":511
 * 
 *     def get_extra_info(self, name, default=None):
 *         return default             # <<<<<<<<<<<<<<
 * 
 *     def _wait(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_r = __pyx_v_default;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":510
 *         self._close()
 * 
 *     def get_extra_info(self, name, default=None):             # <<<<<<<<<<<<<<
 *         return default
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":513
 *         return default
 * 
 *     def _wait(self):             # <<<<<<<<<<<<<<
 *         fut = self._loop._new_future()
 *         if self._returncode is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_23_wait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_18UVProcessTransport_23_wait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_wait (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_18UVProcessTransport_22_wait(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_18UVProcessTransport_22_wait(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *__pyx_v_self) {
  PyObject *__pyx_v_fut = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_wait", 0);

  /* "uvloop/handles/process.pyx":514
 * 
 *     def _wait(self):
 *         fut = self._loop._new_future()             # <<<<<<<<<<<<<<
 *         if self._returncode is not None:
 *             fut.set_result(self._returncode)
 */
  __pyx_t_1 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_v_self->__pyx_base.__pyx_base._loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fut = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":515
 *     def _wait(self):
 *         fut = self._loop._new_future()
 *         if self._returncode is not None:             # <<<<<<<<<<<<<<
 *             fut.set_result(self._returncode)
 *             return fut
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base._returncode != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/process.pyx":516
 *         fut = self._loop._new_future()
 *         if self._returncode is not None:
 *             fut.set_result(self._returncode)             # <<<<<<<<<<<<<<
 *             return fut
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fut, __pyx_n_s_set_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->__pyx_base._returncode); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 516, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 516, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_self->__pyx_base._returncode);
      __Pyx_GIVEREF(__pyx_v_self->__pyx_base._returncode);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->__pyx_base._returncode);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 516, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/process.pyx":517
 *         if self._returncode is not None:
 *             fut.set_result(self._returncode)
 *             return fut             # <<<<<<<<<<<<<<
 * 
 *         self._exit_waiters.append(fut)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_fut);
    __pyx_r = __pyx_v_fut;
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":515
 *     def _wait(self):
 *         fut = self._loop._new_future()
 *         if self._returncode is not None:             # <<<<<<<<<<<<<<
 *             fut.set_result(self._returncode)
 *             return fut
 */
  }

  /* "uvloop/handles/process.pyx":519
 *             return fut
 * 
 *         self._exit_waiters.append(fut)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  if (unlikely(__pyx_v_self->_exit_waiters == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
    __PYX_ERR(6, 519, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_self->_exit_waiters, __pyx_v_fut); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(6, 519, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":520
 * 
 *         self._exit_waiters.append(fut)
 *         return fut             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fut);
  __pyx_r = __pyx_v_fut;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":513
 *         return default
 * 
 *     def _wait(self):             # <<<<<<<<<<<<<<
 *         fut = self._loop._new_future()
 *         if self._returncode is not None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UVProcessTransport._wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fut);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":525
 * class WriteSubprocessPipeProto(aio_BaseProtocol):
 * 
 *     def __init__(self, proc, fd):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if type(proc) is not UVProcessTransport:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_proc = 0;
  PyObject *__pyx_v_fd = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_proc,&__pyx_n_s_fd,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_proc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(6, 525, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(6, 525, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(6, 525, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_proc = values[1];
    __pyx_v_fd = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 525, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto___init__(__pyx_self, __pyx_v_self, __pyx_v_proc, __pyx_v_fd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_proc, PyObject *__pyx_v_fd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "uvloop/handles/process.pyx":531
 *             if not isinstance(fd, int):
 *                 raise TypeError
 *         self.proc = proc             # <<<<<<<<<<<<<<
 *         self.fd = fd
 *         self.pipe = None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_proc, __pyx_v_proc) < 0) __PYX_ERR(6, 531, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":532
 *                 raise TypeError
 *         self.proc = proc
 *         self.fd = fd             # <<<<<<<<<<<<<<
 *         self.pipe = None
 *         self.disconnected = False
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fd, __pyx_v_fd) < 0) __PYX_ERR(6, 532, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":533
 *         self.proc = proc
 *         self.fd = fd
 *         self.pipe = None             # <<<<<<<<<<<<<<
 *         self.disconnected = False
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pipe, Py_None) < 0) __PYX_ERR(6, 533, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":534
 *         self.fd = fd
 *         self.pipe = None
 *         self.disconnected = False             # <<<<<<<<<<<<<<
 * 
 *     def connection_made(self, transport):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_disconnected, Py_False) < 0) __PYX_ERR(6, 534, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":525
 * class WriteSubprocessPipeProto(aio_BaseProtocol):
 * 
 *     def __init__(self, proc, fd):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if type(proc) is not UVProcessTransport:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":536
 *         self.disconnected = False
 * 
 *     def connection_made(self, transport):             # <<<<<<<<<<<<<<
 *         self.pipe = transport
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_3connection_made(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_3connection_made = {"connection_made", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_3connection_made, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_3connection_made(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_transport = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connection_made (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_transport,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transport)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("connection_made", 1, 2, 2, 1); __PYX_ERR(6, 536, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "connection_made") < 0)) __PYX_ERR(6, 536, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_transport = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("connection_made", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 536, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_2connection_made(__pyx_self, __pyx_v_self, __pyx_v_transport);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_2connection_made(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_transport) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connection_made", 0);

  /* "uvloop/handles/process.pyx":537
 * 
 *     def connection_made(self, transport):
 *         self.pipe = transport             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pipe, __pyx_v_transport) < 0) __PYX_ERR(6, 537, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":536
 *         self.disconnected = False
 * 
 *     def connection_made(self, transport):             # <<<<<<<<<<<<<<
 *         self.pipe = transport
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.connection_made", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":539
 *         self.pipe = transport
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return ('<%s fd=%s pipe=%r>'
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_5__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_5__repr__ = {"__repr__", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_5__repr__, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_5__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_4__repr__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/handles/process.pyx":540
 * 
 *     def __repr__(self):
 *         return ('<%s fd=%s pipe=%r>'             # <<<<<<<<<<<<<<
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "uvloop/handles/process.pyx":541
 *     def __repr__(self):
 *         return ('<%s fd=%s pipe=%r>'
 *                 % (self.__class__.__name__, self.fd, self.pipe))             # <<<<<<<<<<<<<<
 * 
 *     def connection_lost(self, exc):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pipe); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_fd_s_pipe_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":539
 *         self.pipe = transport
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return ('<%s fd=%s pipe=%r>'
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":543
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 * 
 *     def connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_7connection_lost(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_7connection_lost = {"connection_lost", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_7connection_lost, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_7connection_lost(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_exc = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("connection_lost (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_exc,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("connection_lost", 1, 2, 2, 1); __PYX_ERR(6, 543, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "connection_lost") < 0)) __PYX_ERR(6, 543, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_exc = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("connection_lost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 543, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.connection_lost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_6connection_lost(__pyx_self, __pyx_v_self, __pyx_v_exc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_6connection_lost(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("connection_lost", 0);

  /* "uvloop/handles/process.pyx":544
 * 
 *     def connection_lost(self, exc):
 *         self.disconnected = True             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 *         self.proc = None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_disconnected, Py_True) < 0) __PYX_ERR(6, 544, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":545
 *     def connection_lost(self, exc):
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)             # <<<<<<<<<<<<<<
 *         self.proc = None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_proc); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 545, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_1)->__pyx_base.__pyx_base.__pyx_vtab)->_pipe_connection_lost(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_1), __pyx_t_3, __pyx_v_exc); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":546
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 *         self.proc = None             # <<<<<<<<<<<<<<
 * 
 *     def pause_writing(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_proc, Py_None) < 0) __PYX_ERR(6, 546, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":543
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 * 
 *     def connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.connection_lost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":548
 *         self.proc = None
 * 
 *     def pause_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_9pause_writing(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_9pause_writing = {"pause_writing", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_9pause_writing, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_9pause_writing(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pause_writing (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_8pause_writing(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_8pause_writing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("pause_writing", 0);

  /* "uvloop/handles/process.pyx":549
 * 
 *     def pause_writing(self):
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()             # <<<<<<<<<<<<<<
 * 
 *     def resume_writing(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_proc); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_2)->_protocol, __pyx_n_s_pause_writing); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 549, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 549, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":548
 *         self.proc = None
 * 
 *     def pause_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.pause_writing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":551
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 *     def resume_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.resume_writing()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_11resume_writing(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_11resume_writing = {"resume_writing", (PyCFunction)__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_11resume_writing, METH_O, 0};
static PyObject *__pyx_pw_6uvloop_4loop_24WriteSubprocessPipeProto_11resume_writing(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resume_writing (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_10resume_writing(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_24WriteSubprocessPipeProto_10resume_writing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("resume_writing", 0);

  /* "uvloop/handles/process.pyx":552
 * 
 *     def resume_writing(self):
 *         (<UVProcessTransport>self.proc)._protocol.resume_writing()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_proc); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_2)->_protocol, __pyx_n_s_resume_writing); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 552, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 552, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":551
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 *     def resume_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.resume_writing()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.WriteSubprocessPipeProto.resume_writing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":558
 *                               aio_Protocol):
 * 
 *     def data_received(self, data):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._pipe_data_received(self.fd, data)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_23ReadSubprocessPipeProto_1data_received(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6uvloop_4loop_23ReadSubprocessPipeProto_1data_received = {"data_received", (PyCFunction)__pyx_pw_6uvloop_4loop_23ReadSubprocessPipeProto_1data_received, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6uvloop_4loop_23ReadSubprocessPipeProto_1data_received(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("data_received (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("data_received", 1, 2, 2, 1); __PYX_ERR(6, 558, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "data_received") < 0)) __PYX_ERR(6, 558, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_data = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("data_received", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 558, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.ReadSubprocessPipeProto.data_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_23ReadSubprocessPipeProto_data_received(__pyx_self, __pyx_v_self, __pyx_v_data);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_23ReadSubprocessPipeProto_data_received(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("data_received", 0);

  /* "uvloop/handles/process.pyx":559
 * 
 *     def data_received(self, data):
 *         (<UVProcessTransport>self.proc)._pipe_data_received(self.fd, data)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_proc); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport *)((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_1)->__pyx_base.__pyx_base.__pyx_vtab)->_pipe_data_received(((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)__pyx_t_1), __pyx_t_3, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":558
 *                               aio_Protocol):
 * 
 *     def data_received(self, data):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._pipe_data_received(self.fd, data)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.ReadSubprocessPipeProto.data_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":562
 * 
 * 
 * cdef __process_convert_fileno(object obj):             # <<<<<<<<<<<<<<
 *     if obj is None or isinstance(obj, int):
 *         return obj
 */

static PyObject *__pyx_f_6uvloop_4loop___process_convert_fileno(PyObject *__pyx_v_obj) {
  PyObject *__pyx_v_fileno = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("__process_convert_fileno", 0);

  /* "uvloop/handles/process.pyx":563
 * 
 * cdef __process_convert_fileno(object obj):
 *     if obj is None or isinstance(obj, int):             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
  __pyx_t_2 = (__pyx_v_obj == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = PyInt_Check(__pyx_v_obj); 
  __pyx_t_2 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":564
 * cdef __process_convert_fileno(object obj):
 *     if obj is None or isinstance(obj, int):
 *         return obj             # <<<<<<<<<<<<<<
 * 
 *     fileno = obj.fileno()
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_obj);
    __pyx_r = __pyx_v_obj;
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":563
 * 
 * cdef __process_convert_fileno(object obj):
 *     if obj is None or isinstance(obj, int):             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
  }

  /* "uvloop/handles/process.pyx":566
 *         return obj
 * 
 *     fileno = obj.fileno()             # <<<<<<<<<<<<<<
 *     if not isinstance(fileno, int):
 *         raise TypeError(
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fileno); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 566, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 566, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_fileno = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/handles/process.pyx":567
 * 
 *     fileno = obj.fileno()
 *     if not isinstance(fileno, int):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{!r}.fileno() returned non-integer'.format(obj))
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_fileno); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/process.pyx":569
 *     if not isinstance(fileno, int):
 *         raise TypeError(
 *             '{!r}.fileno() returned non-integer'.format(obj))             # <<<<<<<<<<<<<<
 *     return fileno
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_r_fileno_returned_non_integer, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_obj);
      __Pyx_GIVEREF(__pyx_v_obj);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_obj);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/process.pyx":568
 *     fileno = obj.fileno()
 *     if not isinstance(fileno, int):
 *         raise TypeError(             # <<<<<<<<<<<<<<
 *             '{!r}.fileno() returned non-integer'.format(obj))
 *     return fileno
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(6, 568, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":567
 * 
 *     fileno = obj.fileno()
 *     if not isinstance(fileno, int):             # <<<<<<<<<<<<<<
 *         raise TypeError(
 *             '{!r}.fileno() returned non-integer'.format(obj))
 */
  }

  /* "uvloop/handles/process.pyx":570
 *         raise TypeError(
 *             '{!r}.fileno() returned non-integer'.format(obj))
 *     return fileno             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fileno);
  __pyx_r = __pyx_v_fileno;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":562
 * 
 * 
 * cdef __process_convert_fileno(object obj):             # <<<<<<<<<<<<<<
 *     if obj is None or isinstance(obj, int):
 *         return obj
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.__process_convert_fileno", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fileno);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/process.pyx":573
 * 
 * 
 * cdef void __uvprocess_on_exit_callback(uv.uv_process_t *handle,             # <<<<<<<<<<<<<<
 *                                        int64_t exit_status,
 *                                        int term_signal) with gil:
 */

static void __pyx_f_6uvloop_4loop___uvprocess_on_exit_callback(uv_process_t *__pyx_v_handle, int64_t __pyx_v_exit_status, int __pyx_v_term_signal) {
  struct __pyx_obj_6uvloop_4loop_UVProcess *__pyx_v_proc = 0;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uvprocess_on_exit_callback", 0);

  /* "uvloop/handles/process.pyx":578
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UVProcess exit callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UVProcess exit callback")) == 0) != 0);

  /* "uvloop/handles/process.pyx":577
 *                                        int term_signal) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UVProcess exit callback") == 0:
 *         return
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":579
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UVProcess exit callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef UVProcess proc = <UVProcess> handle.data
 */
    goto __pyx_L0;

    /* "uvloop/handles/process.pyx":577
 *                                        int term_signal) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UVProcess exit callback") == 0:
 *         return
 */
  }

  /* "uvloop/handles/process.pyx":581
 *         return
 * 
 *     cdef UVProcess proc = <UVProcess> handle.data             # <<<<<<<<<<<<<<
 *     try:
 *         proc._on_exit(exit_status, term_signal)
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_proc = ((struct __pyx_obj_6uvloop_4loop_UVProcess *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":582
 * 
 *     cdef UVProcess proc = <UVProcess> handle.data
 *     try:             # <<<<<<<<<<<<<<
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "uvloop/handles/process.pyx":583
 *     cdef UVProcess proc = <UVProcess> handle.data
 *     try:
 *         proc._on_exit(exit_status, term_signal)             # <<<<<<<<<<<<<<
 *     except BaseException as ex:
 *         proc._error(ex, False)
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_proc->__pyx_base.__pyx_vtab)->_on_exit(__pyx_v_proc, __pyx_v_exit_status, __pyx_v_term_signal); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 583, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/process.pyx":582
 * 
 *     cdef UVProcess proc = <UVProcess> handle.data
 *     try:             # <<<<<<<<<<<<<<
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":584
 *     try:
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         proc._error(ex, False)
 * 
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("uvloop.loop.__uvprocess_on_exit_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(6, 584, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_ex = __pyx_t_7;
      /*try:*/ {

        /* "uvloop/handles/process.pyx":585
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:
 *         proc._error(ex, False)             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVProcess *)__pyx_v_proc->__pyx_base.__pyx_vtab)->__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_proc), __pyx_v_ex, Py_False); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 585, __pyx_L17_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }

      /* "uvloop/handles/process.pyx":584
 *     try:
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:             # <<<<<<<<<<<<<<
 *         proc._error(ex, False)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_ex);
          __pyx_v_ex = NULL;
          goto __pyx_L18;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L17_error:;
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_6 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L6_except_error;
        }
        __pyx_L18:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "uvloop/handles/process.pyx":582
 * 
 *     cdef UVProcess proc = <UVProcess> handle.data
 *     try:             # <<<<<<<<<<<<<<
 *         proc._on_exit(exit_status, term_signal)
 *     except BaseException as ex:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "uvloop/handles/process.pyx":573
 * 
 * 
 * cdef void __uvprocess_on_exit_callback(uv.uv_process_t *handle,             # <<<<<<<<<<<<<<
 *                                        int64_t exit_status,
 *                                        int term_signal) with gil:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__uvprocess_on_exit_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_proc);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/process.pyx":588
 * 
 * 
 * cdef __socketpair():             # <<<<<<<<<<<<<<
 *     cdef:
 *         int fds[2]
 */

static PyObject *__pyx_f_6uvloop_4loop___socketpair(void) {
  int __pyx_v_fds[2];
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("__socketpair", 0);

  /* "uvloop/handles/process.pyx":593
 *         int err
 * 
 *     err = system.socketpair(uv.AF_UNIX, uv.SOCK_STREAM, 0, fds)             # <<<<<<<<<<<<<<
 *     if err:
 *         exc = convert_error(-err)
 */
  __pyx_v_err = socketpair(AF_UNIX, SOCK_STREAM, 0, __pyx_v_fds);

  /* "uvloop/handles/process.pyx":594
 * 
 *     err = system.socketpair(uv.AF_UNIX, uv.SOCK_STREAM, 0, fds)
 *     if err:             # <<<<<<<<<<<<<<
 *         exc = convert_error(-err)
 *         raise exc
 */
  __pyx_t_1 = (__pyx_v_err != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/process.pyx":595
 *     err = system.socketpair(uv.AF_UNIX, uv.SOCK_STREAM, 0, fds)
 *     if err:
 *         exc = convert_error(-err)             # <<<<<<<<<<<<<<
 *         raise exc
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error((-__pyx_v_err)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/process.pyx":596
 *     if err:
 *         exc = convert_error(-err)
 *         raise exc             # <<<<<<<<<<<<<<
 * 
 *     os_set_inheritable(fds[0], False)
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(6, 596, __pyx_L1_error)

    /* "uvloop/handles/process.pyx":594
 * 
 *     err = system.socketpair(uv.AF_UNIX, uv.SOCK_STREAM, 0, fds)
 *     if err:             # <<<<<<<<<<<<<<
 *         exc = convert_error(-err)
 *         raise exc
 */
  }

  /* "uvloop/handles/process.pyx":598
 *         raise exc
 * 
 *     os_set_inheritable(fds[0], False)             # <<<<<<<<<<<<<<
 *     os_set_inheritable(fds[1], False)
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_fds[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_4 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_False);
  __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":599
 * 
 *     os_set_inheritable(fds[0], False)
 *     os_set_inheritable(fds[1], False)             # <<<<<<<<<<<<<<
 * 
 *     return fds[0], fds[1]
 */
  __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_fds[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __pyx_t_7 = __pyx_v_6uvloop_4loop_os_set_inheritable; __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_4);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, Py_False);
  __pyx_t_4 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/process.pyx":601
 *     os_set_inheritable(fds[1], False)
 * 
 *     return fds[0], fds[1]             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_fds[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyInt_From_int((__pyx_v_fds[1])); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7);
  __pyx_t_2 = 0;
  __pyx_t_7 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/process.pyx":588
 * 
 * 
 * cdef __socketpair():             # <<<<<<<<<<<<<<
 *     cdef:
 *         int fds[2]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.__socketpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/request.pyx":10
 *     """
 * 
 *     def __cinit__(self, Loop loop, *_):             # <<<<<<<<<<<<<<
 *         self.request = NULL
 *         self.loop = loop
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_9UVRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_9UVRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  CYTHON_UNUSED PyObject *__pyx_v__ = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v__ = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v__)) {
      __Pyx_RefNannyFinishContext();
      return -1;
    }
    __Pyx_GOTREF(__pyx_v__);
  } else {
    __pyx_v__ = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "__cinit__") < 0)) __PYX_ERR(18, 10, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 10, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__); __pyx_v__ = 0;
  __Pyx_AddTraceback("uvloop.loop.UVRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6uvloop_4loop_Loop, 1, "loop", 0))) __PYX_ERR(18, 10, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_9UVRequest___cinit__(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self), __pyx_v_loop, __pyx_v__);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_9UVRequest___cinit__(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v__) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/request.pyx":11
 * 
 *     def __cinit__(self, Loop loop, *_):
 *         self.request = NULL             # <<<<<<<<<<<<<<
 *         self.loop = loop
 *         self.done = 0
 */
  __pyx_v_self->request = NULL;

  /* "uvloop/request.pyx":12
 *     def __cinit__(self, Loop loop, *_):
 *         self.request = NULL
 *         self.loop = loop             # <<<<<<<<<<<<<<
 *         self.done = 0
 *         Py_INCREF(self)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_loop));
  __Pyx_GOTREF(__pyx_v_self->loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->loop));
  __pyx_v_self->loop = __pyx_v_loop;

  /* "uvloop/request.pyx":13
 *         self.request = NULL
 *         self.loop = loop
 *         self.done = 0             # <<<<<<<<<<<<<<
 *         Py_INCREF(self)
 * 
 */
  __pyx_v_self->done = 0;

  /* "uvloop/request.pyx":14
 *         self.loop = loop
 *         self.done = 0
 *         Py_INCREF(self)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/request.pyx":10
 *     """
 * 
 *     def __cinit__(self, Loop loop, *_):             # <<<<<<<<<<<<<<
 *         self.request = NULL
 *         self.loop = loop
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/request.pyx":16
 *         Py_INCREF(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.request is not NULL:
 *             if self.done == 0:
 */

/* Python wrapper */
static void __pyx_pw_6uvloop_4loop_9UVRequest_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6uvloop_4loop_9UVRequest_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_6uvloop_4loop_9UVRequest_2__dealloc__(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6uvloop_4loop_9UVRequest_2__dealloc__(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "uvloop/request.pyx":17
 * 
 *     def __dealloc__(self):
 *         if self.request is not NULL:             # <<<<<<<<<<<<<<
 *             if self.done == 0:
 *                 raise RuntimeError(
 */
  __pyx_t_1 = ((__pyx_v_self->request != NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/request.pyx":18
 *     def __dealloc__(self):
 *         if self.request is not NULL:
 *             if self.done == 0:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(
 *                     'Unable to deallocate request for {!r} (not done)'
 */
    __pyx_t_1 = ((__pyx_v_self->done == 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/request.pyx":21
 *                 raise RuntimeError(
 *                     'Unable to deallocate request for {!r} (not done)'
 *                     .format(self))             # <<<<<<<<<<<<<<
 *             PyMem_Free(self.request)
 *             self.request = NULL
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Unable_to_deallocate_request_for, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 21, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 21, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_self));
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 21, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/request.pyx":19
 *         if self.request is not NULL:
 *             if self.done == 0:
 *                 raise RuntimeError(             # <<<<<<<<<<<<<<
 *                     'Unable to deallocate request for {!r} (not done)'
 *                     .format(self))
 */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 19, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 19, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(18, 19, __pyx_L1_error)

      /* "uvloop/request.pyx":18
 *     def __dealloc__(self):
 *         if self.request is not NULL:
 *             if self.done == 0:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(
 *                     'Unable to deallocate request for {!r} (not done)'
 */
    }

    /* "uvloop/request.pyx":22
 *                     'Unable to deallocate request for {!r} (not done)'
 *                     .format(self))
 *             PyMem_Free(self.request)             # <<<<<<<<<<<<<<
 *             self.request = NULL
 * 
 */
    PyMem_Free(__pyx_v_self->request);

    /* "uvloop/request.pyx":23
 *                     .format(self))
 *             PyMem_Free(self.request)
 *             self.request = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef on_done(self):
 */
    __pyx_v_self->request = NULL;

    /* "uvloop/request.pyx":17
 * 
 *     def __dealloc__(self):
 *         if self.request is not NULL:             # <<<<<<<<<<<<<<
 *             if self.done == 0:
 *                 raise RuntimeError(
 */
  }

  /* "uvloop/request.pyx":16
 *         Py_INCREF(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.request is not NULL:
 *             if self.done == 0:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("uvloop.loop.UVRequest.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/request.pyx":25
 *             self.request = NULL
 * 
 *     cdef on_done(self):             # <<<<<<<<<<<<<<
 *         self.done = 1
 *         Py_DECREF(self)
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVRequest_on_done(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_done", 0);

  /* "uvloop/request.pyx":26
 * 
 *     cdef on_done(self):
 *         self.done = 1             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 * 
 */
  __pyx_v_self->done = 1;

  /* "uvloop/request.pyx":27
 *     cdef on_done(self):
 *         self.done = 1
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef cancel(self):
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/request.pyx":25
 *             self.request = NULL
 * 
 *     cdef on_done(self):             # <<<<<<<<<<<<<<
 *         self.done = 1
 *         Py_DECREF(self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/request.pyx":29
 *         Py_DECREF(self)
 * 
 *     cdef cancel(self):             # <<<<<<<<<<<<<<
 *         # Most requests are implemented using a threadpool.  It's only
 *         # possible to cancel a request when it's still in a threadpool's
 */

static PyObject *__pyx_f_6uvloop_4loop_9UVRequest_cancel(struct __pyx_obj_6uvloop_4loop_UVRequest *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "uvloop/request.pyx":38
 *         cdef int err
 * 
 *         if self.done == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->done == 1) != 0);
  if (__pyx_t_1) {

    /* "uvloop/request.pyx":39
 * 
 *         if self.done == 1:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         IF DEBUG:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/request.pyx":38
 *         cdef int err
 * 
 *         if self.done == 1:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/request.pyx":58
 * 
 *         # We only can cancel pending requests.  Let's try.
 *         err = uv.uv_cancel(self.request)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             if err == uv.UV_EBUSY:
 */
  __pyx_v_err = uv_cancel(__pyx_v_self->request);

  /* "uvloop/request.pyx":59
 *         # We only can cancel pending requests.  Let's try.
 *         err = uv.uv_cancel(self.request)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             if err == uv.UV_EBUSY:
 *                 # Can't close the request -- it's executing (see the first
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/request.pyx":60
 *         err = uv.uv_cancel(self.request)
 *         if err < 0:
 *             if err == uv.UV_EBUSY:             # <<<<<<<<<<<<<<
 *                 # Can't close the request -- it's executing (see the first
 *                 # comment).  Loop will have to wait until the callback
 */
    __pyx_t_1 = ((__pyx_v_err == UV_EBUSY) != 0);
    if (__pyx_t_1) {
      goto __pyx_L5;
    }

    /* "uvloop/request.pyx":65
 *                 # fires.
 *                 pass
 *             elif err == uv.UV_EINVAL:             # <<<<<<<<<<<<<<
 *                 # From libuv docs:
 *                 #
 */
    __pyx_t_1 = ((__pyx_v_err == UV_EINVAL) != 0);
    if (__pyx_t_1) {

      /* "uvloop/request.pyx":71
 *                 #     uv_getnameinfo_t and uv_work_t requests is currently
 *                 #     supported.
 *                 return             # <<<<<<<<<<<<<<
 *             else:
 *                 ex = convert_error(err)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "uvloop/request.pyx":65
 *                 # fires.
 *                 pass
 *             elif err == uv.UV_EINVAL:             # <<<<<<<<<<<<<<
 *                 # From libuv docs:
 *                 #
 */
    }

    /* "uvloop/request.pyx":73
 *                 return
 *             else:
 *                 ex = convert_error(err)             # <<<<<<<<<<<<<<
 *                 self.loop._handle_exception(ex)
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_ex = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "uvloop/request.pyx":74
 *             else:
 *                 ex = convert_error(err)
 *                 self.loop._handle_exception(ex)             # <<<<<<<<<<<<<<
 */
      ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_self->loop->__pyx_vtab)->_handle_exception(__pyx_v_self->loop, __pyx_v_ex);
    }
    __pyx_L5:;

    /* "uvloop/request.pyx":59
 *         # We only can cancel pending requests.  Let's try.
 *         err = uv.uv_cancel(self.request)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             if err == uv.UV_EBUSY:
 *                 # Can't close the request -- it's executing (see the first
 */
  }

  /* "uvloop/request.pyx":29
 *         Py_DECREF(self)
 * 
 *     cdef cancel(self):             # <<<<<<<<<<<<<<
 *         # Most requests are implemented using a threadpool.  It's only
 *         # possible to cancel a request when it's still in a threadpool's
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UVRequest.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":1
 * cdef __convert_sockaddr_to_pyaddr(system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *     # Converts sockaddr structs into what Python socket
 *     # module can understand:
 */

static PyObject *__pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(struct sockaddr *__pyx_v_addr) {
  char __pyx_v_buf[0x80];
  int __pyx_v_err;
  struct sockaddr_in *__pyx_v_addr4;
  struct sockaddr_in6 *__pyx_v_addr6;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__convert_sockaddr_to_pyaddr", 0);

  /* "uvloop/dns.pyx":13
 *         system.sockaddr_in6 *addr6
 * 
 *     if addr.sa_family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *         addr4 = <system.sockaddr_in*>addr
 * 
 */
  __pyx_t_1 = ((__pyx_v_addr->sa_family == AF_INET) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":14
 * 
 *     if addr.sa_family == uv.AF_INET:
 *         addr4 = <system.sockaddr_in*>addr             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_ip4_name(addr4, buf, sizeof(buf))
 */
    __pyx_v_addr4 = ((struct sockaddr_in *)__pyx_v_addr);

    /* "uvloop/dns.pyx":16
 *         addr4 = <system.sockaddr_in*>addr
 * 
 *         err = uv.uv_ip4_name(addr4, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
    __pyx_v_err = uv_ip4_name(__pyx_v_addr4, __pyx_v_buf, (sizeof(__pyx_v_buf)));

    /* "uvloop/dns.pyx":17
 * 
 *         err = uv.uv_ip4_name(addr4, buf, sizeof(buf))
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":18
 *         err = uv.uv_ip4_name(addr4, buf, sizeof(buf))
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         return (
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 18, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(19, 18, __pyx_L1_error)

      /* "uvloop/dns.pyx":17
 * 
 *         err = uv.uv_ip4_name(addr4, buf, sizeof(buf))
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    }

    /* "uvloop/dns.pyx":20
 *             raise convert_error(err)
 * 
 *         return (             # <<<<<<<<<<<<<<
 *             (<bytes>buf).decode(),
 *             system.ntohs(addr4.sin_port)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "uvloop/dns.pyx":21
 * 
 *         return (
 *             (<bytes>buf).decode(),             # <<<<<<<<<<<<<<
 *             system.ntohs(addr4.sin_port)
 *         )
 */
    __pyx_t_2 = __Pyx_PyObject_FromString(__pyx_v_buf); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__pyx_t_2 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
      __PYX_ERR(19, 21, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_t_2), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/dns.pyx":22
 *         return (
 *             (<bytes>buf).decode(),
 *             system.ntohs(addr4.sin_port)             # <<<<<<<<<<<<<<
 *         )
 * 
 */
    __pyx_t_2 = __Pyx_PyInt_From_int(ntohs(__pyx_v_addr4->sin_port)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "uvloop/dns.pyx":21
 * 
 *         return (
 *             (<bytes>buf).decode(),             # <<<<<<<<<<<<<<
 *             system.ntohs(addr4.sin_port)
 *         )
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "uvloop/dns.pyx":13
 *         system.sockaddr_in6 *addr6
 * 
 *     if addr.sa_family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *         addr4 = <system.sockaddr_in*>addr
 * 
 */
  }

  /* "uvloop/dns.pyx":25
 *         )
 * 
 *     elif addr.sa_family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *         addr6 = <system.sockaddr_in6*>addr
 * 
 */
  __pyx_t_1 = ((__pyx_v_addr->sa_family == AF_INET6) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":26
 * 
 *     elif addr.sa_family == uv.AF_INET6:
 *         addr6 = <system.sockaddr_in6*>addr             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_ip6_name(addr6, buf, sizeof(buf))
 */
    __pyx_v_addr6 = ((struct sockaddr_in6 *)__pyx_v_addr);

    /* "uvloop/dns.pyx":28
 *         addr6 = <system.sockaddr_in6*>addr
 * 
 *         err = uv.uv_ip6_name(addr6, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
    __pyx_v_err = uv_ip6_name(__pyx_v_addr6, __pyx_v_buf, (sizeof(__pyx_v_buf)));

    /* "uvloop/dns.pyx":29
 * 
 *         err = uv.uv_ip6_name(addr6, buf, sizeof(buf))
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":30
 *         err = uv.uv_ip6_name(addr6, buf, sizeof(buf))
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         return (
 */
      __pyx_t_4 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 30, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(19, 30, __pyx_L1_error)

      /* "uvloop/dns.pyx":29
 * 
 *         err = uv.uv_ip6_name(addr6, buf, sizeof(buf))
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    }

    /* "uvloop/dns.pyx":32
 *             raise convert_error(err)
 * 
 *         return (             # <<<<<<<<<<<<<<
 *             (<bytes>buf).decode(),
 *             system.ntohs(addr6.sin6_port),
 */
    __Pyx_XDECREF(__pyx_r);

    /* "uvloop/dns.pyx":33
 * 
 *         return (
 *             (<bytes>buf).decode(),             # <<<<<<<<<<<<<<
 *             system.ntohs(addr6.sin6_port),
 *             system.ntohl(addr6.sin6_flowinfo),
 */
    __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_buf); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__pyx_t_4 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
      __PYX_ERR(19, 33, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_t_4), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":34
 *         return (
 *             (<bytes>buf).decode(),
 *             system.ntohs(addr6.sin6_port),             # <<<<<<<<<<<<<<
 *             system.ntohl(addr6.sin6_flowinfo),
 *             addr6.sin6_scope_id
 */
    __pyx_t_4 = __Pyx_PyInt_From_int(ntohs(__pyx_v_addr6->sin6_port)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "uvloop/dns.pyx":35
 *             (<bytes>buf).decode(),
 *             system.ntohs(addr6.sin6_port),
 *             system.ntohl(addr6.sin6_flowinfo),             # <<<<<<<<<<<<<<
 *             addr6.sin6_scope_id
 *         )
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(ntohl(__pyx_v_addr6->sin6_flowinfo)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/dns.pyx":36
 *             system.ntohs(addr6.sin6_port),
 *             system.ntohl(addr6.sin6_flowinfo),
 *             addr6.sin6_scope_id             # <<<<<<<<<<<<<<
 *         )
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_From_unsigned_long(__pyx_v_addr6->sin6_scope_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "uvloop/dns.pyx":33
 * 
 *         return (
 *             (<bytes>buf).decode(),             # <<<<<<<<<<<<<<
 *             system.ntohs(addr6.sin6_port),
 *             system.ntohl(addr6.sin6_flowinfo),
 */
    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
    __pyx_t_2 = 0;
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "uvloop/dns.pyx":25
 *         )
 * 
 *     elif addr.sa_family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *         addr6 = <system.sockaddr_in6*>addr
 * 
 */
  }

  /* "uvloop/dns.pyx":39
 *         )
 * 
 *     raise RuntimeError("cannot convert sockaddr into Python object")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_Raise(__pyx_t_6, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __PYX_ERR(19, 39, __pyx_L1_error)

  /* "uvloop/dns.pyx":1
 * cdef __convert_sockaddr_to_pyaddr(system.sockaddr* addr):             # <<<<<<<<<<<<<<
 *     # Converts sockaddr structs into what Python socket
 *     # module can understand:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.__convert_sockaddr_to_pyaddr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":42
 * 
 * 
 * cdef __convert_pyaddr_to_sockaddr(int family, object addr,             # <<<<<<<<<<<<<<
 *                                   system.sockaddr* res):
 *     cdef:
 */

static PyObject *__pyx_f_6uvloop_4loop___convert_pyaddr_to_sockaddr(int __pyx_v_family, PyObject *__pyx_v_addr, struct sockaddr *__pyx_v_res) {
  int __pyx_v_err;
  int __pyx_v_addr_len;
  int __pyx_v_scope_id;
  int __pyx_v_flowinfo;
  PyObject *__pyx_v_host = NULL;
  PyObject *__pyx_v_port = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  char const *__pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  __Pyx_RefNannySetupContext("__convert_pyaddr_to_sockaddr", 0);

  /* "uvloop/dns.pyx":47
 *         int err
 *         int addr_len
 *         int scope_id = 0             # <<<<<<<<<<<<<<
 *         int flowinfo = 0
 * 
 */
  __pyx_v_scope_id = 0;

  /* "uvloop/dns.pyx":48
 *         int addr_len
 *         int scope_id = 0
 *         int flowinfo = 0             # <<<<<<<<<<<<<<
 * 
 *     if family == uv.AF_INET:
 */
  __pyx_v_flowinfo = 0;

  /* "uvloop/dns.pyx":50
 *         int flowinfo = 0
 * 
 *     if family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')
 */
  __pyx_t_1 = ((__pyx_v_family == AF_INET) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":51
 * 
 *     if family == uv.AF_INET:
 *         if not isinstance(addr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:
 */
    __pyx_t_1 = PyTuple_Check(__pyx_v_addr); 
    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":52
 *     if family == uv.AF_INET:
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')             # <<<<<<<<<<<<<<
 *         if len(addr) != 2:
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 52, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(19, 52, __pyx_L1_error)

      /* "uvloop/dns.pyx":51
 * 
 *     if family == uv.AF_INET:
 *         if not isinstance(addr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:
 */
    }

    /* "uvloop/dns.pyx":53
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:             # <<<<<<<<<<<<<<
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 *         host, port = addr
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_addr); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(19, 53, __pyx_L1_error)
    __pyx_t_2 = ((__pyx_t_4 != 2) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":54
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:
 *             raise ValueError('AF_INET address must be tuple of (host, port)')             # <<<<<<<<<<<<<<
 *         host, port = addr
 *         if isinstance(host, str):
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(19, 54, __pyx_L1_error)

      /* "uvloop/dns.pyx":53
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:             # <<<<<<<<<<<<<<
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 *         host, port = addr
 */
    }

    /* "uvloop/dns.pyx":55
 *         if len(addr) != 2:
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 *         host, port = addr             # <<<<<<<<<<<<<<
 *         if isinstance(host, str):
 *             host = host.encode()
 */
    if ((likely(PyTuple_CheckExact(__pyx_v_addr))) || (PyList_CheckExact(__pyx_v_addr))) {
      PyObject* sequence = __pyx_v_addr;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(19, 55, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(19, 55, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(19, 55, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __pyx_v_host = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_v_port = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "uvloop/dns.pyx":56
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 *         host, port = addr
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):
 */
    __pyx_t_2 = PyUnicode_Check(__pyx_v_host); 
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":57
 *         host, port = addr
 *         if isinstance(host, str):
 *             host = host.encode()             # <<<<<<<<<<<<<<
 *         if not isinstance(host, (bytes, bytearray)):
 *             raise TypeError('host must be a string or bytes object')
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_host, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 57, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 57, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 57, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF_SET(__pyx_v_host, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/dns.pyx":56
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 *         host, port = addr
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):
 */
    }

    /* "uvloop/dns.pyx":58
 *         if isinstance(host, str):
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):             # <<<<<<<<<<<<<<
 *             raise TypeError('host must be a string or bytes object')
 *         if isinstance(port, bytes):
 */
    __pyx_t_2 = PyBytes_Check(__pyx_v_host); 
    __pyx_t_8 = (__pyx_t_2 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_1 = __pyx_t_8;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_8 = PyByteArray_Check(__pyx_v_host); 
    __pyx_t_2 = (__pyx_t_8 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L10_bool_binop_done:;
    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":59
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):
 *             raise TypeError('host must be a string or bytes object')             # <<<<<<<<<<<<<<
 *         if isinstance(port, bytes):
 *             port = port.decode()
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(19, 59, __pyx_L1_error)

      /* "uvloop/dns.pyx":58
 *         if isinstance(host, str):
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):             # <<<<<<<<<<<<<<
 *             raise TypeError('host must be a string or bytes object')
 *         if isinstance(port, bytes):
 */
    }

    /* "uvloop/dns.pyx":60
 *         if not isinstance(host, (bytes, bytearray)):
 *             raise TypeError('host must be a string or bytes object')
 *         if isinstance(port, bytes):             # <<<<<<<<<<<<<<
 *             port = port.decode()
 *         if isinstance(port, str):
 */
    __pyx_t_2 = PyBytes_Check(__pyx_v_port); 
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":61
 *             raise TypeError('host must be a string or bytes object')
 *         if isinstance(port, bytes):
 *             port = port.decode()             # <<<<<<<<<<<<<<
 *         if isinstance(port, str):
 *             port = int(port)
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_port, __pyx_n_s_decode); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 61, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 61, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 61, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF_SET(__pyx_v_port, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/dns.pyx":60
 *         if not isinstance(host, (bytes, bytearray)):
 *             raise TypeError('host must be a string or bytes object')
 *         if isinstance(port, bytes):             # <<<<<<<<<<<<<<
 *             port = port.decode()
 *         if isinstance(port, str):
 */
    }

    /* "uvloop/dns.pyx":62
 *         if isinstance(port, bytes):
 *             port = port.decode()
 *         if isinstance(port, str):             # <<<<<<<<<<<<<<
 *             port = int(port)
 * 
 */
    __pyx_t_1 = PyUnicode_Check(__pyx_v_port); 
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":63
 *             port = port.decode()
 *         if isinstance(port, str):
 *             port = int(port)             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>res)
 */
      __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_port); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 63, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF_SET(__pyx_v_port, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/dns.pyx":62
 *         if isinstance(port, bytes):
 *             port = port.decode()
 *         if isinstance(port, str):             # <<<<<<<<<<<<<<
 *             port = int(port)
 * 
 */
    }

    /* "uvloop/dns.pyx":65
 *             port = int(port)
 * 
 *         err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>res)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
    __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_v_host); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(19, 65, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_port); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 65, __pyx_L1_error)
    __pyx_v_err = uv_ip4_addr(__pyx_t_9, ((int)__pyx_t_10), ((struct sockaddr_in *)__pyx_v_res));

    /* "uvloop/dns.pyx":66
 * 
 *         err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>res)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_2 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":67
 *         err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>res)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *     elif family == uv.AF_INET6:
 */
      __pyx_t_5 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(19, 67, __pyx_L1_error)

      /* "uvloop/dns.pyx":66
 * 
 *         err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>res)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    }

    /* "uvloop/dns.pyx":50
 *         int flowinfo = 0
 * 
 *     if family == uv.AF_INET:             # <<<<<<<<<<<<<<
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')
 */
    goto __pyx_L3;
  }

  /* "uvloop/dns.pyx":69
 *             raise convert_error(err)
 * 
 *     elif family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET6 address must be tuple')
 */
  __pyx_t_2 = ((__pyx_v_family == AF_INET6) != 0);
  if (__pyx_t_2) {

    /* "uvloop/dns.pyx":70
 * 
 *     elif family == uv.AF_INET6:
 *         if not isinstance(addr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('AF_INET6 address must be tuple')
 * 
 */
    __pyx_t_2 = PyTuple_Check(__pyx_v_addr); 
    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":71
 *     elif family == uv.AF_INET6:
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET6 address must be tuple')             # <<<<<<<<<<<<<<
 * 
 *         addr_len = len(addr)
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__113, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 71, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(19, 71, __pyx_L1_error)

      /* "uvloop/dns.pyx":70
 * 
 *     elif family == uv.AF_INET6:
 *         if not isinstance(addr, tuple):             # <<<<<<<<<<<<<<
 *             raise TypeError('AF_INET6 address must be tuple')
 * 
 */
    }

    /* "uvloop/dns.pyx":73
 *             raise TypeError('AF_INET6 address must be tuple')
 * 
 *         addr_len = len(addr)             # <<<<<<<<<<<<<<
 *         if addr_len < 2 or addr_len > 4:
 *             raise ValueError(
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_addr); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(19, 73, __pyx_L1_error)
    __pyx_v_addr_len = __pyx_t_4;

    /* "uvloop/dns.pyx":74
 * 
 *         addr_len = len(addr)
 *         if addr_len < 2 or addr_len > 4:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 'AF_INET6 must be a tuple of 2-4 parameters: '
 */
    __pyx_t_2 = ((__pyx_v_addr_len < 2) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_addr_len > 4) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L17_bool_binop_done:;
    if (__pyx_t_1) {

      /* "uvloop/dns.pyx":75
 *         addr_len = len(addr)
 *         if addr_len < 2 or addr_len > 4:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 'AF_INET6 must be a tuple of 2-4 parameters: '
 *                 '(host, port, flowinfo?, scope_id?)')
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(19, 75, __pyx_L1_error)

      /* "uvloop/dns.pyx":74
 * 
 *         addr_len = len(addr)
 *         if addr_len < 2 or addr_len > 4:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 'AF_INET6 must be a tuple of 2-4 parameters: '
 */
    }

    /* "uvloop/dns.pyx":79
 *                 '(host, port, flowinfo?, scope_id?)')
 * 
 *         host = addr[0]             # <<<<<<<<<<<<<<
 *         if isinstance(host, str):
 *             host = host.encode()
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_addr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_host = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "uvloop/dns.pyx":80
 * 
 *         host = addr[0]
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode()
 * 
 */
    __pyx_t_1 = PyUnicode_Check(__pyx_v_host); 
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":81
 *         host = addr[0]
 *         if isinstance(host, str):
 *             host = host.encode()             # <<<<<<<<<<<<<<
 * 
 *         port = addr[1]
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_host, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 81, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 81, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF_SET(__pyx_v_host, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "uvloop/dns.pyx":80
 * 
 *         host = addr[0]
 *         if isinstance(host, str):             # <<<<<<<<<<<<<<
 *             host = host.encode()
 * 
 */
    }

    /* "uvloop/dns.pyx":83
 *             host = host.encode()
 * 
 *         port = addr[1]             # <<<<<<<<<<<<<<
 *         if addr_len > 2:
 *             flowinfo = addr[2]
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_addr, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_port = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "uvloop/dns.pyx":84
 * 
 *         port = addr[1]
 *         if addr_len > 2:             # <<<<<<<<<<<<<<
 *             flowinfo = addr[2]
 *         if addr_len > 3:
 */
    __pyx_t_2 = ((__pyx_v_addr_len > 2) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":85
 *         port = addr[1]
 *         if addr_len > 2:
 *             flowinfo = addr[2]             # <<<<<<<<<<<<<<
 *         if addr_len > 3:
 *             scope_id = addr[3]
 */
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_addr, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 85, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_flowinfo = __pyx_t_10;

      /* "uvloop/dns.pyx":84
 * 
 *         port = addr[1]
 *         if addr_len > 2:             # <<<<<<<<<<<<<<
 *             flowinfo = addr[2]
 *         if addr_len > 3:
 */
    }

    /* "uvloop/dns.pyx":86
 *         if addr_len > 2:
 *             flowinfo = addr[2]
 *         if addr_len > 3:             # <<<<<<<<<<<<<<
 *             scope_id = addr[3]
 * 
 */
    __pyx_t_2 = ((__pyx_v_addr_len > 3) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":87
 *             flowinfo = addr[2]
 *         if addr_len > 3:
 *             scope_id = addr[3]             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_ip6_addr(host, port, <system.sockaddr_in6*>res)
 */
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_addr, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 87, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_scope_id = __pyx_t_10;

      /* "uvloop/dns.pyx":86
 *         if addr_len > 2:
 *             flowinfo = addr[2]
 *         if addr_len > 3:             # <<<<<<<<<<<<<<
 *             scope_id = addr[3]
 * 
 */
    }

    /* "uvloop/dns.pyx":89
 *             scope_id = addr[3]
 * 
 *         err = uv.uv_ip6_addr(host, port, <system.sockaddr_in6*>res)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             raise convert_error(err)
 */
    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_host); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(19, 89, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_port); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 89, __pyx_L1_error)
    __pyx_v_err = uv_ip6_addr(__pyx_t_11, __pyx_t_10, ((struct sockaddr_in6 *)__pyx_v_res));

    /* "uvloop/dns.pyx":90
 * 
 *         err = uv.uv_ip6_addr(host, port, <system.sockaddr_in6*>res)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_2 = ((__pyx_v_err < 0) != 0);
    if (__pyx_t_2) {

      /* "uvloop/dns.pyx":91
 *         err = uv.uv_ip6_addr(host, port, <system.sockaddr_in6*>res)
 *         if err < 0:
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         (<system.sockaddr_in6*>res).sin6_flowinfo = flowinfo
 */
      __pyx_t_5 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(19, 91, __pyx_L1_error)

      /* "uvloop/dns.pyx":90
 * 
 *         err = uv.uv_ip6_addr(host, port, <system.sockaddr_in6*>res)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    }

    /* "uvloop/dns.pyx":93
 *             raise convert_error(err)
 * 
 *         (<system.sockaddr_in6*>res).sin6_flowinfo = flowinfo             # <<<<<<<<<<<<<<
 *         (<system.sockaddr_in6*>res).sin6_scope_id = scope_id
 * 
 */
    ((struct sockaddr_in6 *)__pyx_v_res)->sin6_flowinfo = __pyx_v_flowinfo;

    /* "uvloop/dns.pyx":94
 * 
 *         (<system.sockaddr_in6*>res).sin6_flowinfo = flowinfo
 *         (<system.sockaddr_in6*>res).sin6_scope_id = scope_id             # <<<<<<<<<<<<<<
 * 
 *     else:
 */
    ((struct sockaddr_in6 *)__pyx_v_res)->sin6_scope_id = __pyx_v_scope_id;

    /* "uvloop/dns.pyx":69
 *             raise convert_error(err)
 * 
 *     elif family == uv.AF_INET6:             # <<<<<<<<<<<<<<
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET6 address must be tuple')
 */
    goto __pyx_L3;
  }

  /* "uvloop/dns.pyx":97
 * 
 *     else:
 *         raise ValueError(             # <<<<<<<<<<<<<<
 *             'epected AF_INET or AF_INET6 family, got {}'.format(family))
 * 
 */
  /*else*/ {

    /* "uvloop/dns.pyx":98
 *     else:
 *         raise ValueError(
 *             'epected AF_INET or AF_INET6 family, got {}'.format(family))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_epected_AF_INET_or_AF_INET6_fami, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_family); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_12) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 98, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(19, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/dns.pyx":97
 * 
 *     else:
 *         raise ValueError(             # <<<<<<<<<<<<<<
 *             'epected AF_INET or AF_INET6 family, got {}'.format(family))
 * 
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(19, 97, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "uvloop/dns.pyx":42
 * 
 * 
 * cdef __convert_pyaddr_to_sockaddr(int family, object addr,             # <<<<<<<<<<<<<<
 *                                   system.sockaddr* res):
 *     cdef:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("uvloop.loop.__convert_pyaddr_to_sockaddr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_host);
  __Pyx_XDECREF(__pyx_v_port);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":106
 *         system.addrinfo *data
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.data = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_8AddrInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_8AddrInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_8AddrInfo___cinit__(((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_8AddrInfo___cinit__(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/dns.pyx":107
 * 
 *     def __cinit__(self):
 *         self.data = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_v_self->data = NULL;

  /* "uvloop/dns.pyx":106
 *         system.addrinfo *data
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.data = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":109
 *         self.data = NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.data is not NULL:
 *             uv.uv_freeaddrinfo(self.data) # returns void
 */

/* Python wrapper */
static void __pyx_pw_6uvloop_4loop_8AddrInfo_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6uvloop_4loop_8AddrInfo_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_6uvloop_4loop_8AddrInfo_2__dealloc__(((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6uvloop_4loop_8AddrInfo_2__dealloc__(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "uvloop/dns.pyx":110
 * 
 *     def __dealloc__(self):
 *         if self.data is not NULL:             # <<<<<<<<<<<<<<
 *             uv.uv_freeaddrinfo(self.data) # returns void
 *             self.data = NULL
 */
  __pyx_t_1 = ((__pyx_v_self->data != NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":111
 *     def __dealloc__(self):
 *         if self.data is not NULL:
 *             uv.uv_freeaddrinfo(self.data) # returns void             # <<<<<<<<<<<<<<
 *             self.data = NULL
 * 
 */
    uv_freeaddrinfo(__pyx_v_self->data);

    /* "uvloop/dns.pyx":112
 *         if self.data is not NULL:
 *             uv.uv_freeaddrinfo(self.data) # returns void
 *             self.data = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef void set_data(self, system.addrinfo *data):
 */
    __pyx_v_self->data = NULL;

    /* "uvloop/dns.pyx":110
 * 
 *     def __dealloc__(self):
 *         if self.data is not NULL:             # <<<<<<<<<<<<<<
 *             uv.uv_freeaddrinfo(self.data) # returns void
 *             self.data = NULL
 */
  }

  /* "uvloop/dns.pyx":109
 *         self.data = NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.data is not NULL:
 *             uv.uv_freeaddrinfo(self.data) # returns void
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/dns.pyx":114
 *             self.data = NULL
 * 
 *     cdef void set_data(self, system.addrinfo *data):             # <<<<<<<<<<<<<<
 *         self.data = data
 * 
 */

static void __pyx_f_6uvloop_4loop_8AddrInfo_set_data(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self, struct addrinfo *__pyx_v_data) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_data", 0);

  /* "uvloop/dns.pyx":115
 * 
 *     cdef void set_data(self, system.addrinfo *data):
 *         self.data = data             # <<<<<<<<<<<<<<
 * 
 *     cdef unpack(self):
 */
  __pyx_v_self->data = __pyx_v_data;

  /* "uvloop/dns.pyx":114
 *             self.data = NULL
 * 
 *     cdef void set_data(self, system.addrinfo *data):             # <<<<<<<<<<<<<<
 *         self.data = data
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "uvloop/dns.pyx":117
 *         self.data = data
 * 
 *     cdef unpack(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             list result = []
 */

static PyObject *__pyx_f_6uvloop_4loop_8AddrInfo_unpack(struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_self) {
  PyObject *__pyx_v_result = 0;
  struct addrinfo *__pyx_v_ptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct addrinfo *__pyx_t_3;
  unsigned short __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("unpack", 0);

  /* "uvloop/dns.pyx":119
 *     cdef unpack(self):
 *         cdef:
 *             list result = []             # <<<<<<<<<<<<<<
 *             system.addrinfo *ptr
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/dns.pyx":122
 *             system.addrinfo *ptr
 * 
 *         if self.data is NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('AddrInfo.data is NULL')
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->data == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/dns.pyx":123
 * 
 *         if self.data is NULL:
 *             raise RuntimeError('AddrInfo.data is NULL')             # <<<<<<<<<<<<<<
 * 
 *         ptr = self.data
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(19, 123, __pyx_L1_error)

    /* "uvloop/dns.pyx":122
 *             system.addrinfo *ptr
 * 
 *         if self.data is NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('AddrInfo.data is NULL')
 * 
 */
  }

  /* "uvloop/dns.pyx":125
 *             raise RuntimeError('AddrInfo.data is NULL')
 * 
 *         ptr = self.data             # <<<<<<<<<<<<<<
 *         while ptr != NULL:
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):
 */
  __pyx_t_3 = __pyx_v_self->data;
  __pyx_v_ptr = __pyx_t_3;

  /* "uvloop/dns.pyx":126
 * 
 *         ptr = self.data
 *         while ptr != NULL:             # <<<<<<<<<<<<<<
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):
 *                 result.append((
 */
  while (1) {
    __pyx_t_2 = ((__pyx_v_ptr != NULL) != 0);
    if (!__pyx_t_2) break;

    /* "uvloop/dns.pyx":127
 *         ptr = self.data
 *         while ptr != NULL:
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *                 result.append((
 *                     ptr.ai_family,
 */
    __pyx_t_4 = __pyx_v_ptr->ai_addr->sa_family;
    __pyx_t_5 = ((__pyx_t_4 == AF_INET) != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_2 = __pyx_t_5;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_5 = ((__pyx_t_4 == AF_INET6) != 0);
    __pyx_t_2 = __pyx_t_5;
    __pyx_L7_bool_binop_done:;
    __pyx_t_5 = (__pyx_t_2 != 0);
    if (__pyx_t_5) {

      /* "uvloop/dns.pyx":129
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):
 *                 result.append((
 *                     ptr.ai_family,             # <<<<<<<<<<<<<<
 *                     ptr.ai_socktype,
 *                     ptr.ai_protocol,
 */
      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ptr->ai_family); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 129, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);

      /* "uvloop/dns.pyx":130
 *                 result.append((
 *                     ptr.ai_family,
 *                     ptr.ai_socktype,             # <<<<<<<<<<<<<<
 *                     ptr.ai_protocol,
 *                     '' if ptr.ai_canonname is NULL else
 */
      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_ptr->ai_socktype); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);

      /* "uvloop/dns.pyx":131
 *                     ptr.ai_family,
 *                     ptr.ai_socktype,
 *                     ptr.ai_protocol,             # <<<<<<<<<<<<<<
 *                     '' if ptr.ai_canonname is NULL else
 *                         (<bytes>ptr.ai_canonname).decode(),
 */
      __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_ptr->ai_protocol); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 131, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);

      /* "uvloop/dns.pyx":132
 *                     ptr.ai_socktype,
 *                     ptr.ai_protocol,
 *                     '' if ptr.ai_canonname is NULL else             # <<<<<<<<<<<<<<
 *                         (<bytes>ptr.ai_canonname).decode(),
 *                     __convert_sockaddr_to_pyaddr(ptr.ai_addr)
 */
      if (((__pyx_v_ptr->ai_canonname == NULL) != 0)) {
        __Pyx_INCREF(__pyx_kp_u__34);
        __pyx_t_8 = __pyx_kp_u__34;
      } else {

        /* "uvloop/dns.pyx":133
 *                     ptr.ai_protocol,
 *                     '' if ptr.ai_canonname is NULL else
 *                         (<bytes>ptr.ai_canonname).decode(),             # <<<<<<<<<<<<<<
 *                     __convert_sockaddr_to_pyaddr(ptr.ai_addr)
 *                 ))
 */
        __pyx_t_9 = __Pyx_PyBytes_FromString(__pyx_v_ptr->ai_canonname); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 133, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (unlikely(__pyx_t_9 == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
          __PYX_ERR(19, 133, __pyx_L1_error)
        }
        __pyx_t_10 = __Pyx_decode_bytes(((PyObject*)__pyx_t_9), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 133, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_8 = __pyx_t_10;
        __pyx_t_10 = 0;
      }

      /* "uvloop/dns.pyx":134
 *                     '' if ptr.ai_canonname is NULL else
 *                         (<bytes>ptr.ai_canonname).decode(),
 *                     __convert_sockaddr_to_pyaddr(ptr.ai_addr)             # <<<<<<<<<<<<<<
 *                 ))
 * 
 */
      __pyx_t_10 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(__pyx_v_ptr->ai_addr); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 134, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);

      /* "uvloop/dns.pyx":129
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):
 *                 result.append((
 *                     ptr.ai_family,             # <<<<<<<<<<<<<<
 *                     ptr.ai_socktype,
 *                     ptr.ai_protocol,
 */
      __pyx_t_9 = PyTuple_New(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 129, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_10);
      __pyx_t_1 = 0;
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_10 = 0;

      /* "uvloop/dns.pyx":128
 *         while ptr != NULL:
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):
 *                 result.append((             # <<<<<<<<<<<<<<
 *                     ptr.ai_family,
 *                     ptr.ai_socktype,
 */
      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_9); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(19, 128, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "uvloop/dns.pyx":127
 *         ptr = self.data
 *         while ptr != NULL:
 *             if ptr.ai_addr.sa_family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *                 result.append((
 *                     ptr.ai_family,
 */
    }

    /* "uvloop/dns.pyx":137
 *                 ))
 * 
 *             ptr = ptr.ai_next             # <<<<<<<<<<<<<<
 * 
 *         return result
 */
    __pyx_t_3 = __pyx_v_ptr->ai_next;
    __pyx_v_ptr = __pyx_t_3;
  }

  /* "uvloop/dns.pyx":139
 *             ptr = ptr.ai_next
 * 
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "uvloop/dns.pyx":117
 *         self.data = data
 * 
 *     cdef unpack(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             list result = []
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.AddrInfo.unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":142
 * 
 *     @staticmethod
 *     cdef int isinstance(object other):             # <<<<<<<<<<<<<<
 *         return type(other) is AddrInfo
 * 
 */

static int __pyx_f_6uvloop_4loop_8AddrInfo_isinstance(PyObject *__pyx_v_other) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("isinstance", 0);

  /* "uvloop/dns.pyx":143
 *     @staticmethod
 *     cdef int isinstance(object other):
 *         return type(other) is AddrInfo             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_ptype_6uvloop_4loop_AddrInfo));
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "uvloop/dns.pyx":142
 * 
 *     @staticmethod
 *     cdef int isinstance(object other):             # <<<<<<<<<<<<<<
 *         return type(other) is AddrInfo
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":151
 *         object callback
 * 
 *     def __cinit__(self, Loop loop,             # <<<<<<<<<<<<<<
 *                   bytes host, bytes port,
 *                   int family, int type, int proto, int flags,
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_15AddrInfoRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_15AddrInfoRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_port = 0;
  int __pyx_v_family;
  int __pyx_v_type;
  int __pyx_v_proto;
  int __pyx_v_flags;
  PyObject *__pyx_v_callback = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_host,&__pyx_n_s_port,&__pyx_n_s_family,&__pyx_n_s_type,&__pyx_n_s_proto,&__pyx_n_s_flags,&__pyx_n_s_callback,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_host)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 1); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 2); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_family)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 3); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 4); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_proto)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 5); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 6); __PYX_ERR(19, 151, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, 7); __PYX_ERR(19, 151, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 151, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)values[0]);
    __pyx_v_host = ((PyObject*)values[1]);
    __pyx_v_port = ((PyObject*)values[2]);
    __pyx_v_family = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_family == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 153, __pyx_L3_error)
    __pyx_v_type = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 153, __pyx_L3_error)
    __pyx_v_proto = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_proto == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 153, __pyx_L3_error)
    __pyx_v_flags = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 153, __pyx_L3_error)
    __pyx_v_callback = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 151, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.AddrInfoRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6uvloop_4loop_Loop, 1, "loop", 0))) __PYX_ERR(19, 151, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_host), (&PyBytes_Type), 1, "host", 1))) __PYX_ERR(19, 152, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_port), (&PyBytes_Type), 1, "port", 1))) __PYX_ERR(19, 152, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_15AddrInfoRequest___cinit__(((struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)__pyx_v_self), __pyx_v_loop, __pyx_v_host, __pyx_v_port, __pyx_v_family, __pyx_v_type, __pyx_v_proto, __pyx_v_flags, __pyx_v_callback);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_15AddrInfoRequest___cinit__(struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_host, PyObject *__pyx_v_port, int __pyx_v_family, int __pyx_v_type, int __pyx_v_proto, int __pyx_v_flags, PyObject *__pyx_v_callback) {
  int __pyx_v_err;
  char *__pyx_v_chost;
  char *__pyx_v_cport;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_ex = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/dns.pyx":161
 *             char *cport
 * 
 *         if host is None:             # <<<<<<<<<<<<<<
 *             chost = NULL
 *         else:
 */
  __pyx_t_1 = (__pyx_v_host == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/dns.pyx":162
 * 
 *         if host is None:
 *             chost = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             chost = <char*>host
 */
    __pyx_v_chost = NULL;

    /* "uvloop/dns.pyx":161
 *             char *cport
 * 
 *         if host is None:             # <<<<<<<<<<<<<<
 *             chost = NULL
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/dns.pyx":164
 *             chost = NULL
 *         else:
 *             chost = <char*>host             # <<<<<<<<<<<<<<
 * 
 *         if port is None:
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_host); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(19, 164, __pyx_L1_error)
    __pyx_v_chost = ((char *)__pyx_t_3);
  }
  __pyx_L3:;

  /* "uvloop/dns.pyx":166
 *             chost = <char*>host
 * 
 *         if port is None:             # <<<<<<<<<<<<<<
 *             cport = NULL
 *         else:
 */
  __pyx_t_2 = (__pyx_v_port == ((PyObject*)Py_None));
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":167
 * 
 *         if port is None:
 *             cport = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             cport = <char*>port
 */
    __pyx_v_cport = NULL;

    /* "uvloop/dns.pyx":166
 *             chost = <char*>host
 * 
 *         if port is None:             # <<<<<<<<<<<<<<
 *             cport = NULL
 *         else:
 */
    goto __pyx_L4;
  }

  /* "uvloop/dns.pyx":169
 *             cport = NULL
 *         else:
 *             cport = <char*>port             # <<<<<<<<<<<<<<
 * 
 *         if cport is NULL and chost is NULL:
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_port); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(19, 169, __pyx_L1_error)
    __pyx_v_cport = ((char *)__pyx_t_3);
  }
  __pyx_L4:;

  /* "uvloop/dns.pyx":171
 *             cport = <char*>port
 * 
 *         if cport is NULL and chost is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')
 */
  __pyx_t_2 = ((__pyx_v_cport == NULL) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_2 = ((__pyx_v_chost == NULL) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":172
 * 
 *         if cport is NULL and chost is NULL:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')
 *             ex = socket_gaierror(socket_EAI_NONAME, msg)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":173
 *         if cport is NULL and chost is NULL:
 *             self.on_done()
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')             # <<<<<<<<<<<<<<
 *             ex = socket_gaierror(socket_EAI_NONAME, msg)
 *             callback(ex)
 */
    __pyx_t_5 = gai_strerror(__pyx_v_6uvloop_4loop_socket_EAI_NONAME);
    __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_v_msg = __pyx_t_4;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":174
 *             self.on_done()
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')
 *             ex = socket_gaierror(socket_EAI_NONAME, msg)             # <<<<<<<<<<<<<<
 *             callback(ex)
 *             return
 */
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_socket_EAI_NONAME); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_6uvloop_4loop_socket_gaierror);
    __pyx_t_7 = __pyx_v_6uvloop_4loop_socket_gaierror; __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_GIVEREF(__pyx_v_msg);
    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_msg);
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_ex = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":175
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')
 *             ex = socket_gaierror(socket_EAI_NONAME, msg)
 *             callback(ex)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __Pyx_INCREF(__pyx_v_callback);
    __pyx_t_7 = __pyx_v_callback; __pyx_t_10 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_10) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_ex); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL;
      __Pyx_INCREF(__pyx_v_ex);
      __Pyx_GIVEREF(__pyx_v_ex);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_ex);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":176
 *             ex = socket_gaierror(socket_EAI_NONAME, msg)
 *             callback(ex)
 *             return             # <<<<<<<<<<<<<<
 * 
 *         memset(&self.hints, 0, sizeof(system.addrinfo))
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "uvloop/dns.pyx":171
 *             cport = <char*>port
 * 
 *         if cport is NULL and chost is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             msg = system.gai_strerror(socket_EAI_NONAME).decode('utf-8')
 */
  }

  /* "uvloop/dns.pyx":178
 *             return
 * 
 *         memset(&self.hints, 0, sizeof(system.addrinfo))             # <<<<<<<<<<<<<<
 *         self.hints.ai_flags = flags
 *         self.hints.ai_family = family
 */
  memset((&__pyx_v_self->hints), 0, (sizeof(struct addrinfo)));

  /* "uvloop/dns.pyx":179
 * 
 *         memset(&self.hints, 0, sizeof(system.addrinfo))
 *         self.hints.ai_flags = flags             # <<<<<<<<<<<<<<
 *         self.hints.ai_family = family
 *         self.hints.ai_socktype = type
 */
  __pyx_v_self->hints.ai_flags = __pyx_v_flags;

  /* "uvloop/dns.pyx":180
 *         memset(&self.hints, 0, sizeof(system.addrinfo))
 *         self.hints.ai_flags = flags
 *         self.hints.ai_family = family             # <<<<<<<<<<<<<<
 *         self.hints.ai_socktype = type
 *         self.hints.ai_protocol = proto
 */
  __pyx_v_self->hints.ai_family = __pyx_v_family;

  /* "uvloop/dns.pyx":181
 *         self.hints.ai_flags = flags
 *         self.hints.ai_family = family
 *         self.hints.ai_socktype = type             # <<<<<<<<<<<<<<
 *         self.hints.ai_protocol = proto
 * 
 */
  __pyx_v_self->hints.ai_socktype = __pyx_v_type;

  /* "uvloop/dns.pyx":182
 *         self.hints.ai_family = family
 *         self.hints.ai_socktype = type
 *         self.hints.ai_protocol = proto             # <<<<<<<<<<<<<<
 * 
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 */
  __pyx_v_self->hints.ai_protocol = __pyx_v_proto;

  /* "uvloop/dns.pyx":184
 *         self.hints.ai_protocol = proto
 * 
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(             # <<<<<<<<<<<<<<
 *             sizeof(uv.uv_getaddrinfo_t))
 *         if self.request is NULL:
 */
  __pyx_v_self->__pyx_base.request = ((uv_req_t *)PyMem_Malloc((sizeof(uv_getaddrinfo_t))));

  /* "uvloop/dns.pyx":186
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getaddrinfo_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.request == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":187
 *             sizeof(uv.uv_getaddrinfo_t))
 *         if self.request is NULL:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":188
 *         if self.request is NULL:
 *             self.on_done()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         self.callback = callback
 */
    PyErr_NoMemory(); __PYX_ERR(19, 188, __pyx_L1_error)

    /* "uvloop/dns.pyx":186
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getaddrinfo_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  }

  /* "uvloop/dns.pyx":190
 *             raise MemoryError()
 * 
 *         self.callback = callback             # <<<<<<<<<<<<<<
 *         self.request.data = <void*>self
 * 
 */
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  __Pyx_GOTREF(__pyx_v_self->callback);
  __Pyx_DECREF(__pyx_v_self->callback);
  __pyx_v_self->callback = __pyx_v_callback;

  /* "uvloop/dns.pyx":191
 * 
 *         self.callback = callback
 *         self.request.data = <void*>self             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_getaddrinfo(loop.uvloop,
 */
  __pyx_v_self->__pyx_base.request->data = ((void *)__pyx_v_self);

  /* "uvloop/dns.pyx":193
 *         self.request.data = <void*>self
 * 
 *         err = uv.uv_getaddrinfo(loop.uvloop,             # <<<<<<<<<<<<<<
 *                                 <uv.uv_getaddrinfo_t*>self.request,
 *                                 __on_addrinfo_resolved,
 */
  __pyx_v_err = uv_getaddrinfo(__pyx_v_loop->uvloop, ((uv_getaddrinfo_t *)__pyx_v_self->__pyx_base.request), __pyx_f_6uvloop_4loop___on_addrinfo_resolved, __pyx_v_chost, __pyx_v_cport, (&__pyx_v_self->hints));

  /* "uvloop/dns.pyx":200
 *                                 &self.hints)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             callback(convert_error(err))
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":201
 * 
 *         if err < 0:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             callback(convert_error(err))
 * 
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":202
 *         if err < 0:
 *             self.on_done()
 *             callback(convert_error(err))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_7 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_callback);
    __pyx_t_6 = __pyx_v_callback; __pyx_t_10 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_10) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 202, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/dns.pyx":200
 *                                 &self.hints)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             callback(convert_error(err))
 */
  }

  /* "uvloop/dns.pyx":151
 *         object callback
 * 
 *     def __cinit__(self, Loop loop,             # <<<<<<<<<<<<<<
 *                   bytes host, bytes port,
 *                   int family, int type, int proto, int flags,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.AddrInfoRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":209
 *         object callback
 * 
 *     def __cinit__(self, Loop loop, callback):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getnameinfo_t))
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_15NameInfoRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_15NameInfoRequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_callback = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_callback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(19, 209, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 209, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)values[0]);
    __pyx_v_callback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 209, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.NameInfoRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6uvloop_4loop_Loop, 1, "loop", 0))) __PYX_ERR(19, 209, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_15NameInfoRequest___cinit__(((struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)__pyx_v_self), __pyx_v_loop, __pyx_v_callback);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_15NameInfoRequest___cinit__(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, PyObject *__pyx_v_callback) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/dns.pyx":210
 * 
 *     def __cinit__(self, Loop loop, callback):
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(             # <<<<<<<<<<<<<<
 *             sizeof(uv.uv_getnameinfo_t))
 *         if self.request is NULL:
 */
  __pyx_v_self->__pyx_base.request = ((uv_req_t *)PyMem_Malloc((sizeof(uv_getnameinfo_t))));

  /* "uvloop/dns.pyx":212
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getnameinfo_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.request == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":213
 *             sizeof(uv.uv_getnameinfo_t))
 *         if self.request is NULL:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/dns.pyx":214
 *         if self.request is NULL:
 *             self.on_done()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         self.callback = callback
 */
    PyErr_NoMemory(); __PYX_ERR(19, 214, __pyx_L1_error)

    /* "uvloop/dns.pyx":212
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getnameinfo_t))
 *         if self.request is NULL:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             raise MemoryError()
 */
  }

  /* "uvloop/dns.pyx":216
 *             raise MemoryError()
 * 
 *         self.callback = callback             # <<<<<<<<<<<<<<
 *         self.request.data = <void*>self
 * 
 */
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  __Pyx_GOTREF(__pyx_v_self->callback);
  __Pyx_DECREF(__pyx_v_self->callback);
  __pyx_v_self->callback = __pyx_v_callback;

  /* "uvloop/dns.pyx":217
 * 
 *         self.callback = callback
 *         self.request.data = <void*>self             # <<<<<<<<<<<<<<
 * 
 *     cdef query(self, system.sockaddr *addr, int flags):
 */
  __pyx_v_self->__pyx_base.request->data = ((void *)__pyx_v_self);

  /* "uvloop/dns.pyx":209
 *         object callback
 * 
 *     def __cinit__(self, Loop loop, callback):             # <<<<<<<<<<<<<<
 *         self.request = <uv.uv_req_t*> PyMem_Malloc(
 *             sizeof(uv.uv_getnameinfo_t))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.NameInfoRequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":219
 *         self.request.data = <void*>self
 * 
 *     cdef query(self, system.sockaddr *addr, int flags):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         err = uv.uv_getnameinfo(self.loop.uvloop,
 */

static PyObject *__pyx_f_6uvloop_4loop_15NameInfoRequest_query(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_flags) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("query", 0);

  /* "uvloop/dns.pyx":221
 *     cdef query(self, system.sockaddr *addr, int flags):
 *         cdef int err
 *         err = uv.uv_getnameinfo(self.loop.uvloop,             # <<<<<<<<<<<<<<
 *                                 <uv.uv_getnameinfo_t*>self.request,
 *                                 __on_nameinfo_resolved,
 */
  __pyx_v_err = uv_getnameinfo(__pyx_v_self->__pyx_base.loop->uvloop, ((uv_getnameinfo_t *)__pyx_v_self->__pyx_base.request), __pyx_f_6uvloop_4loop___on_nameinfo_resolved, __pyx_v_addr, __pyx_v_flags);

  /* "uvloop/dns.pyx":226
 *                                 addr,
 *                                 flags)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             self.callback(convert_error(err))
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":227
 *                                 flags)
 *         if err < 0:
 *             self.on_done()             # <<<<<<<<<<<<<<
 *             self.callback(convert_error(err))
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/dns.pyx":228
 *         if err < 0:
 *             self.on_done()
 *             self.callback(convert_error(err))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_self->callback);
    __pyx_t_4 = __pyx_v_self->callback; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 228, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/dns.pyx":226
 *                                 addr,
 *                                 flags)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self.on_done()
 *             self.callback(convert_error(err))
 */
  }

  /* "uvloop/dns.pyx":219
 *         self.request.data = <void*>self
 * 
 *     cdef query(self, system.sockaddr *addr, int flags):             # <<<<<<<<<<<<<<
 *         cdef int err
 *         err = uv.uv_getnameinfo(self.loop.uvloop,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.NameInfoRequest.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/dns.pyx":231
 * 
 * 
 * cdef void __on_addrinfo_resolved(uv.uv_getaddrinfo_t *resolver,             # <<<<<<<<<<<<<<
 *                                  int status, system.addrinfo *res) with gil:
 * 
 */

static void __pyx_f_6uvloop_4loop___on_addrinfo_resolved(uv_getaddrinfo_t *__pyx_v_resolver, int __pyx_v_status, struct addrinfo *__pyx_v_res) {
  struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *__pyx_v_request = 0;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_callback = 0;
  struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_v_ai = 0;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__on_addrinfo_resolved", 0);

  /* "uvloop/dns.pyx":234
 *                                  int status, system.addrinfo *res) with gil:
 * 
 *     if resolver.data is NULL:             # <<<<<<<<<<<<<<
 *         aio_logger.error(
 *             'AddrInfoRequest callback called with NULL resolver.data')
 */
  __pyx_t_1 = ((__pyx_v_resolver->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/dns.pyx":235
 * 
 *     if resolver.data is NULL:
 *         aio_logger.error(             # <<<<<<<<<<<<<<
 *             'AddrInfoRequest callback called with NULL resolver.data')
 *         return
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/dns.pyx":237
 *         aio_logger.error(
 *             'AddrInfoRequest callback called with NULL resolver.data')
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/dns.pyx":234
 *                                  int status, system.addrinfo *res) with gil:
 * 
 *     if resolver.data is NULL:             # <<<<<<<<<<<<<<
 *         aio_logger.error(
 *             'AddrInfoRequest callback called with NULL resolver.data')
 */
  }

  /* "uvloop/dns.pyx":240
 * 
 *     cdef:
 *         AddrInfoRequest request = <AddrInfoRequest> resolver.data             # <<<<<<<<<<<<<<
 *         Loop loop = request.loop
 *         object callback = request.callback
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_resolver->data);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_request = ((struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/dns.pyx":241
 *     cdef:
 *         AddrInfoRequest request = <AddrInfoRequest> resolver.data
 *         Loop loop = request.loop             # <<<<<<<<<<<<<<
 *         object callback = request.callback
 *         AddrInfo ai
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_request->__pyx_base.loop);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/dns.pyx":242
 *         AddrInfoRequest request = <AddrInfoRequest> resolver.data
 *         Loop loop = request.loop
 *         object callback = request.callback             # <<<<<<<<<<<<<<
 *         AddrInfo ai
 * 
 */
  __pyx_t_3 = __pyx_v_request->callback;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_callback = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "uvloop/dns.pyx":245
 *         AddrInfo ai
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "uvloop/dns.pyx":246
 * 
 *     try:
 *         if status < 0:             # <<<<<<<<<<<<<<
 *             callback(convert_error(status))
 *         else:
 */
        __pyx_t_1 = ((__pyx_v_status < 0) != 0);
        if (__pyx_t_1) {

          /* "uvloop/dns.pyx":247
 *     try:
 *         if status < 0:
 *             callback(convert_error(status))             # <<<<<<<<<<<<<<
 *         else:
 *             ai = AddrInfo()
 */
          __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 247, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_INCREF(__pyx_v_callback);
          __pyx_t_7 = __pyx_v_callback; __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 247, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 247, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_2);
            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2);
            __pyx_t_2 = 0;
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 247, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "uvloop/dns.pyx":246
 * 
 *     try:
 *         if status < 0:             # <<<<<<<<<<<<<<
 *             callback(convert_error(status))
 *         else:
 */
          goto __pyx_L15;
        }

        /* "uvloop/dns.pyx":249
 *             callback(convert_error(status))
 *         else:
 *             ai = AddrInfo()             # <<<<<<<<<<<<<<
 *             ai.set_data(res)
 *             callback(ai)
 */
        /*else*/ {
          __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6uvloop_4loop_AddrInfo), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 249, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_v_ai = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_t_3);
          __pyx_t_3 = 0;

          /* "uvloop/dns.pyx":250
 *         else:
 *             ai = AddrInfo()
 *             ai.set_data(res)             # <<<<<<<<<<<<<<
 *             callback(ai)
 *     except Exception as ex:
 */
          ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo *)__pyx_v_ai->__pyx_vtab)->set_data(__pyx_v_ai, __pyx_v_res);

          /* "uvloop/dns.pyx":251
 *             ai = AddrInfo()
 *             ai.set_data(res)
 *             callback(ai)             # <<<<<<<<<<<<<<
 *     except Exception as ex:
 *         loop._handle_exception(ex)
 */
          __Pyx_INCREF(__pyx_v_callback);
          __pyx_t_7 = __pyx_v_callback; __pyx_t_9 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_9)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_9);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_9) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_v_ai)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 251, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 251, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL;
            __Pyx_INCREF(((PyObject *)__pyx_v_ai));
            __Pyx_GIVEREF(((PyObject *)__pyx_v_ai));
            PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)__pyx_v_ai));
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 251, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
        __pyx_L15:;

        /* "uvloop/dns.pyx":245
 *         AddrInfo ai
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/dns.pyx":252
 *             ai.set_data(res)
 *             callback(ai)
 *     except Exception as ex:             # <<<<<<<<<<<<<<
 *         loop._handle_exception(ex)
 *     finally:
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.__on_addrinfo_resolved", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_2) < 0) __PYX_ERR(19, 252, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_ex = __pyx_t_7;
        /*try:*/ {

          /* "uvloop/dns.pyx":253
 *             callback(ai)
 *     except Exception as ex:
 *         loop._handle_exception(ex)             # <<<<<<<<<<<<<<
 *     finally:
 *         request.on_done()
 */
          ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_loop->__pyx_vtab)->_handle_exception(__pyx_v_loop, __pyx_v_ex);
        }

        /* "uvloop/dns.pyx":252
 *             ai.set_data(res)
 *             callback(ai)
 *     except Exception as ex:             # <<<<<<<<<<<<<<
 *         loop._handle_exception(ex)
 *     finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L22;
          }
          __pyx_L22:;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "uvloop/dns.pyx":245
 *         AddrInfo ai
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L5_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      __pyx_L14_try_end:;
    }
  }

  /* "uvloop/dns.pyx":255
 *         loop._handle_exception(ex)
 *     finally:
 *         request.on_done()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *)__pyx_v_request->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_request)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {
        __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest *)__pyx_v_request->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_request)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 255, __pyx_L24_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
      __pyx_L24_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "uvloop/dns.pyx":231
 * 
 * 
 * cdef void __on_addrinfo_resolved(uv.uv_getaddrinfo_t *resolver,             # <<<<<<<<<<<<<<
 *                                  int status, system.addrinfo *res) with gil:
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__on_addrinfo_resolved", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF((PyObject *)__pyx_v_ai);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/dns.pyx":258
 * 
 * 
 * cdef void __on_nameinfo_resolved(uv.uv_getnameinfo_t* req,             # <<<<<<<<<<<<<<
 *                                  int status,
 *                                  const char* hostname,
 */

static void __pyx_f_6uvloop_4loop___on_nameinfo_resolved(uv_getnameinfo_t *__pyx_v_req, int __pyx_v_status, char const *__pyx_v_hostname, char const *__pyx_v_service) {
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *__pyx_v_request = 0;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_ex = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__on_nameinfo_resolved", 0);

  /* "uvloop/dns.pyx":263
 *                                  const char* service) with gil:
 *     cdef:
 *         NameInfoRequest request = <NameInfoRequest> req.data             # <<<<<<<<<<<<<<
 *         Loop loop = request.loop
 *         object callback = request.callback
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_request = ((struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/dns.pyx":264
 *     cdef:
 *         NameInfoRequest request = <NameInfoRequest> req.data
 *         Loop loop = request.loop             # <<<<<<<<<<<<<<
 *         object callback = request.callback
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_request->__pyx_base.loop);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/dns.pyx":265
 *         NameInfoRequest request = <NameInfoRequest> req.data
 *         Loop loop = request.loop
 *         object callback = request.callback             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  __pyx_t_1 = __pyx_v_request->callback;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_callback = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "uvloop/dns.pyx":267
 *         object callback = request.callback
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "uvloop/dns.pyx":268
 * 
 *     try:
 *         if status < 0:             # <<<<<<<<<<<<<<
 *             callback(convert_error(status))
 *         else:
 */
        __pyx_t_5 = ((__pyx_v_status < 0) != 0);
        if (__pyx_t_5) {

          /* "uvloop/dns.pyx":269
 *     try:
 *         if status < 0:
 *             callback(convert_error(status))             # <<<<<<<<<<<<<<
 *         else:
 *             callback(((<bytes>hostname).decode(),
 */
          __pyx_t_6 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 269, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_v_callback);
          __pyx_t_7 = __pyx_v_callback; __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 269, __pyx_L6_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 269, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 269, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "uvloop/dns.pyx":268
 * 
 *     try:
 *         if status < 0:             # <<<<<<<<<<<<<<
 *             callback(convert_error(status))
 *         else:
 */
          goto __pyx_L14;
        }

        /* "uvloop/dns.pyx":271
 *             callback(convert_error(status))
 *         else:
 *             callback(((<bytes>hostname).decode(),             # <<<<<<<<<<<<<<
 *                       (<bytes>service).decode()))
 *     except Exception as ex:
 */
        /*else*/ {
          __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_hostname); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 271, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (unlikely(__pyx_t_7 == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
            __PYX_ERR(19, 271, __pyx_L6_error)
          }
          __pyx_t_9 = __Pyx_decode_bytes(((PyObject*)__pyx_t_7), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 271, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "uvloop/dns.pyx":272
 *         else:
 *             callback(((<bytes>hostname).decode(),
 *                       (<bytes>service).decode()))             # <<<<<<<<<<<<<<
 *     except Exception as ex:
 *         loop._handle_exception(ex)
 */
          __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_service); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 272, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (unlikely(__pyx_t_7 == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
            __PYX_ERR(19, 272, __pyx_L6_error)
          }
          __pyx_t_6 = __Pyx_decode_bytes(((PyObject*)__pyx_t_7), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 272, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "uvloop/dns.pyx":271
 *             callback(convert_error(status))
 *         else:
 *             callback(((<bytes>hostname).decode(),             # <<<<<<<<<<<<<<
 *                       (<bytes>service).decode()))
 *     except Exception as ex:
 */
          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 271, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_9);
          PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
          __pyx_t_9 = 0;
          __pyx_t_6 = 0;
          __Pyx_INCREF(__pyx_v_callback);
          __pyx_t_6 = __pyx_v_callback; __pyx_t_9 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_9)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_9);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_9) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 271, __pyx_L6_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 271, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 271, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        __pyx_L14:;

        /* "uvloop/dns.pyx":267
 *         object callback = request.callback
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "uvloop/dns.pyx":273
 *             callback(((<bytes>hostname).decode(),
 *                       (<bytes>service).decode()))
 *     except Exception as ex:             # <<<<<<<<<<<<<<
 *         loop._handle_exception(ex)
 *     finally:
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("uvloop.loop.__on_nameinfo_resolved", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(19, 273, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_ex = __pyx_t_6;
        /*try:*/ {

          /* "uvloop/dns.pyx":274
 *                       (<bytes>service).decode()))
 *     except Exception as ex:
 *         loop._handle_exception(ex)             # <<<<<<<<<<<<<<
 *     finally:
 *         request.on_done()
 */
          ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_v_loop->__pyx_vtab)->_handle_exception(__pyx_v_loop, __pyx_v_ex);
        }

        /* "uvloop/dns.pyx":273
 *             callback(((<bytes>hostname).decode(),
 *                       (<bytes>service).decode()))
 *     except Exception as ex:             # <<<<<<<<<<<<<<
 *         loop._handle_exception(ex)
 *     finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_ex);
            __pyx_v_ex = NULL;
            goto __pyx_L21;
          }
          __pyx_L21:;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "uvloop/dns.pyx":267
 *         object callback = request.callback
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if status < 0:
 *             callback(convert_error(status))
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L4_error;
      __pyx_L7_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L13_try_end:;
    }
  }

  /* "uvloop/dns.pyx":276
 *         loop._handle_exception(ex)
 *     finally:
 *         request.on_done()             # <<<<<<<<<<<<<<
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *)__pyx_v_request->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_request)); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L4_error:;
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {
        __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest *)__pyx_v_request->__pyx_base.__pyx_vtab)->__pyx_base.on_done(((struct __pyx_obj_6uvloop_4loop_UVRequest *)__pyx_v_request)); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 276, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
      __pyx_L23_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "uvloop/dns.pyx":258
 * 
 * 
 * cdef void __on_nameinfo_resolved(uv.uv_getnameinfo_t* req,             # <<<<<<<<<<<<<<
 *                                  int status,
 *                                  const char* hostname,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("uvloop.loop.__on_nameinfo_resolved", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/udp.pyx":18
 *         system.sockaddr addr
 * 
 *     cdef close(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return
 */

static PyObject *__pyx_f_6uvloop_4loop_15_UDPSendContext_close(struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/handles/udp.pyx":19
 * 
 *     cdef close(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = (__pyx_v_self->closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":20
 *     cdef close(self):
 *         if self.closed:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self.closed = 1
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":19
 * 
 *     cdef close(self):
 *         if self.closed:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":22
 *             return
 * 
 *         self.closed = 1             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self.py_buf)  # void
 *         self.req.data = NULL
 */
  __pyx_v_self->closed = 1;

  /* "uvloop/handles/udp.pyx":23
 * 
 *         self.closed = 1
 *         PyBuffer_Release(&self.py_buf)  # void             # <<<<<<<<<<<<<<
 *         self.req.data = NULL
 *         Py_DECREF(self)
 */
  PyBuffer_Release((&__pyx_v_self->py_buf));

  /* "uvloop/handles/udp.pyx":24
 *         self.closed = 1
 *         PyBuffer_Release(&self.py_buf)  # void
 *         self.req.data = NULL             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 *         self.udp = None
 */
  __pyx_v_self->req.data = NULL;

  /* "uvloop/handles/udp.pyx":25
 *         PyBuffer_Release(&self.py_buf)  # void
 *         self.req.data = NULL
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 *         self.udp = None
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/udp.pyx":26
 *         self.req.data = NULL
 *         Py_DECREF(self)
 *         self.udp = None             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->udp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->udp));
  __pyx_v_self->udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)Py_None);

  /* "uvloop/handles/udp.pyx":18
 *         system.sockaddr addr
 * 
 *     cdef close(self):             # <<<<<<<<<<<<<<
 *         if self.closed:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":29
 * 
 *     @staticmethod
 *     cdef _UDPSendContext new(UDPTransport udp, object data):             # <<<<<<<<<<<<<<
 *         cdef _UDPSendContext ctx
 *         ctx = _UDPSendContext.__new__(_UDPSendContext)
 */

static struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_f_6uvloop_4loop_15_UDPSendContext_new(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_udp, PyObject *__pyx_v_data) {
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_v_ctx = 0;
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("new", 0);

  /* "uvloop/handles/udp.pyx":31
 *     cdef _UDPSendContext new(UDPTransport udp, object data):
 *         cdef _UDPSendContext ctx
 *         ctx = _UDPSendContext.__new__(_UDPSendContext)             # <<<<<<<<<<<<<<
 *         ctx.udp = None
 *         ctx.closed = 1
 */
  __pyx_t_1 = __pyx_tp_new_6uvloop_4loop__UDPSendContext(((PyTypeObject *)__pyx_ptype_6uvloop_4loop__UDPSendContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6uvloop_4loop__UDPSendContext)))) __PYX_ERR(7, 31, __pyx_L1_error)
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__UDPSendContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/handles/udp.pyx":32
 *         cdef _UDPSendContext ctx
 *         ctx = _UDPSendContext.__new__(_UDPSendContext)
 *         ctx.udp = None             # <<<<<<<<<<<<<<
 *         ctx.closed = 1
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_ctx->udp);
  __Pyx_DECREF(((PyObject *)__pyx_v_ctx->udp));
  __pyx_v_ctx->udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)Py_None);

  /* "uvloop/handles/udp.pyx":33
 *         ctx = _UDPSendContext.__new__(_UDPSendContext)
 *         ctx.udp = None
 *         ctx.closed = 1             # <<<<<<<<<<<<<<
 * 
 *         ctx.req.data = <void*> ctx
 */
  __pyx_v_ctx->closed = 1;

  /* "uvloop/handles/udp.pyx":35
 *         ctx.closed = 1
 * 
 *         ctx.req.data = <void*> ctx             # <<<<<<<<<<<<<<
 *         Py_INCREF(ctx)
 * 
 */
  __pyx_v_ctx->req.data = ((void *)__pyx_v_ctx);

  /* "uvloop/handles/udp.pyx":36
 * 
 *         ctx.req.data = <void*> ctx
 *         Py_INCREF(ctx)             # <<<<<<<<<<<<<<
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 */
  Py_INCREF(((PyObject *)__pyx_v_ctx));

  /* "uvloop/handles/udp.pyx":38
 *         Py_INCREF(ctx)
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)
 *         ctx.udp = udp
 */
  __pyx_t_2 = PyObject_GetBuffer(__pyx_v_data, (&__pyx_v_ctx->py_buf), PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(7, 38, __pyx_L1_error)

  /* "uvloop/handles/udp.pyx":39
 * 
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)             # <<<<<<<<<<<<<<
 *         ctx.udp = udp
 * 
 */
  __pyx_v_ctx->uv_buf = uv_buf_init(((char *)__pyx_v_ctx->py_buf.buf), __pyx_v_ctx->py_buf.len);

  /* "uvloop/handles/udp.pyx":40
 *         PyObject_GetBuffer(data, &ctx.py_buf, PyBUF_SIMPLE)
 *         ctx.uv_buf = uv.uv_buf_init(<char*>ctx.py_buf.buf, ctx.py_buf.len)
 *         ctx.udp = udp             # <<<<<<<<<<<<<<
 * 
 *         ctx.closed = 0
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_udp));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_udp));
  __Pyx_GOTREF(__pyx_v_ctx->udp);
  __Pyx_DECREF(((PyObject *)__pyx_v_ctx->udp));
  __pyx_v_ctx->udp = __pyx_v_udp;

  /* "uvloop/handles/udp.pyx":42
 *         ctx.udp = udp
 * 
 *         ctx.closed = 0             # <<<<<<<<<<<<<<
 *         return ctx
 * 
 */
  __pyx_v_ctx->closed = 0;

  /* "uvloop/handles/udp.pyx":43
 * 
 *         ctx.closed = 0
 *         return ctx             # <<<<<<<<<<<<<<
 * 
 *     IF DEBUG:
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_ctx));
  __pyx_r = __pyx_v_ctx;
  goto __pyx_L0;

  /* "uvloop/handles/udp.pyx":29
 * 
 *     @staticmethod
 *     cdef _UDPSendContext new(UDPTransport udp, object data):             # <<<<<<<<<<<<<<
 *         cdef _UDPSendContext ctx
 *         ctx = _UDPSendContext.__new__(_UDPSendContext)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop._UDPSendContext.new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":55
 * @cython.no_gc_clear
 * cdef class UDPTransport(UVBaseTransport):
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._family = uv.AF_UNSPEC
 *         self._address_set = 0
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_12UDPTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_12UDPTransport_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_12UDPTransport___cinit__(((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_12UDPTransport___cinit__(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/handles/udp.pyx":56
 * cdef class UDPTransport(UVBaseTransport):
 *     def __cinit__(self):
 *         self._family = uv.AF_UNSPEC             # <<<<<<<<<<<<<<
 *         self._address_set = 0
 *         self.__receiving = 0
 */
  __pyx_v_self->_family = AF_UNSPEC;

  /* "uvloop/handles/udp.pyx":57
 *     def __cinit__(self):
 *         self._family = uv.AF_UNSPEC
 *         self._address_set = 0             # <<<<<<<<<<<<<<
 *         self.__receiving = 0
 *         self._cached_py_address = None
 */
  __pyx_v_self->_address_set = 0;

  /* "uvloop/handles/udp.pyx":58
 *         self._family = uv.AF_UNSPEC
 *         self._address_set = 0
 *         self.__receiving = 0             # <<<<<<<<<<<<<<
 *         self._cached_py_address = None
 * 
 */
  __pyx_v_self->__pyx___receiving = 0;

  /* "uvloop/handles/udp.pyx":59
 *         self._address_set = 0
 *         self.__receiving = 0
 *         self._cached_py_address = None             # <<<<<<<<<<<<<<
 * 
 *     cdef _init(self, Loop loop, unsigned int family):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_cached_py_address);
  __Pyx_DECREF(__pyx_v_self->_cached_py_address);
  __pyx_v_self->_cached_py_address = Py_None;

  /* "uvloop/handles/udp.pyx":55
 * @cython.no_gc_clear
 * cdef class UDPTransport(UVBaseTransport):
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._family = uv.AF_UNSPEC
 *         self._address_set = 0
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":61
 *         self._cached_py_address = None
 * 
 *     cdef _init(self, Loop loop, unsigned int family):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__init(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop, unsigned int __pyx_v_family) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  unsigned int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_init", 0);

  /* "uvloop/handles/udp.pyx":64
 *         cdef int err
 * 
 *         self._start_init(loop)             # <<<<<<<<<<<<<<
 * 
 *         self._handle = <uv.uv_handle_t*> \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._start_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/udp.pyx":66
 *         self._start_init(loop)
 * 
 *         self._handle = <uv.uv_handle_t*> \             # <<<<<<<<<<<<<<
 *                             PyMem_Malloc(sizeof(uv.uv_udp_t))
 *         if self._handle is NULL:
 */
  __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle = ((uv_handle_t *)PyMem_Malloc((sizeof(uv_udp_t))));

  /* "uvloop/handles/udp.pyx":68
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_udp_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle == NULL) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":69
 *                             PyMem_Malloc(sizeof(uv.uv_udp_t))
 *         if self._handle is NULL:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/udp.pyx":70
 *         if self._handle is NULL:
 *             self._abort_init()
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_init_ex(loop.uvloop,
 */
    PyErr_NoMemory(); __PYX_ERR(7, 70, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":68
 *         self._handle = <uv.uv_handle_t*> \
 *                             PyMem_Malloc(sizeof(uv.uv_udp_t))
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise MemoryError()
 */
  }

  /* "uvloop/handles/udp.pyx":72
 *             raise MemoryError()
 * 
 *         err = uv.uv_udp_init_ex(loop.uvloop,             # <<<<<<<<<<<<<<
 *                                 <uv.uv_udp_t*>self._handle,
 *                                 family)
 */
  __pyx_v_err = uv_udp_init_ex(__pyx_v_loop->uvloop, ((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_family);

  /* "uvloop/handles/udp.pyx":75
 *                                 <uv.uv_udp_t*>self._handle,
 *                                 family)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":76
 *                                 family)
 *         if err < 0:
 *             self._abort_init()             # <<<<<<<<<<<<<<
 *             raise convert_error(err)
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._abort_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "uvloop/handles/udp.pyx":77
 *         if err < 0:
 *             self._abort_init()
 *             raise convert_error(err)             # <<<<<<<<<<<<<<
 * 
 *         if family in (uv.AF_INET, uv.AF_INET6):
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(7, 77, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":75
 *                                 <uv.uv_udp_t*>self._handle,
 *                                 family)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             self._abort_init()
 *             raise convert_error(err)
 */
  }

  /* "uvloop/handles/udp.pyx":79
 *             raise convert_error(err)
 * 
 *         if family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             self._family = family
 * 
 */
  __pyx_t_3 = __pyx_v_family;
  __pyx_t_4 = ((__pyx_t_3 == AF_INET) != 0);
  if (!__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_4 = ((__pyx_t_3 == AF_INET6) != 0);
  __pyx_t_2 = __pyx_t_4;
  __pyx_L6_bool_binop_done:;
  __pyx_t_4 = (__pyx_t_2 != 0);
  if (__pyx_t_4) {

    /* "uvloop/handles/udp.pyx":80
 * 
 *         if family in (uv.AF_INET, uv.AF_INET6):
 *             self._family = family             # <<<<<<<<<<<<<<
 * 
 *         self._finish_init()
 */
    __pyx_v_self->_family = __pyx_v_family;

    /* "uvloop/handles/udp.pyx":79
 *             raise convert_error(err)
 * 
 *         if family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             self._family = family
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":82
 *             self._family = family
 * 
 *         self._finish_init()             # <<<<<<<<<<<<<<
 * 
 *     cdef _set_remote_address(self, system.sockaddr address):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._finish_init(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/udp.pyx":61
 *         self._cached_py_address = None
 * 
 *     cdef _init(self, Loop loop, unsigned int family):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":84
 *         self._finish_init()
 * 
 *     cdef _set_remote_address(self, system.sockaddr address):             # <<<<<<<<<<<<<<
 *         self._address_set = 1
 *         self._address = address
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__set_remote_address(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct sockaddr __pyx_v_address) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_remote_address", 0);

  /* "uvloop/handles/udp.pyx":85
 * 
 *     cdef _set_remote_address(self, system.sockaddr address):
 *         self._address_set = 1             # <<<<<<<<<<<<<<
 *         self._address = address
 * 
 */
  __pyx_v_self->_address_set = 1;

  /* "uvloop/handles/udp.pyx":86
 *     cdef _set_remote_address(self, system.sockaddr address):
 *         self._address_set = 1
 *         self._address = address             # <<<<<<<<<<<<<<
 * 
 *     cdef _open(self, int family, int sockfd):
 */
  __pyx_v_self->_address = __pyx_v_address;

  /* "uvloop/handles/udp.pyx":84
 *         self._finish_init()
 * 
 *     cdef _set_remote_address(self, system.sockaddr address):             # <<<<<<<<<<<<<<
 *         self._address_set = 1
 *         self._address = address
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":88
 *         self._address = address
 * 
 *     cdef _open(self, int family, int sockfd):             # <<<<<<<<<<<<<<
 *         if family in (uv.AF_INET, uv.AF_INET6):
 *             self._family = family
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__open(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, int __pyx_v_family, int __pyx_v_sockfd) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_open", 0);

  /* "uvloop/handles/udp.pyx":89
 * 
 *     cdef _open(self, int family, int sockfd):
 *         if family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             self._family = family
 *         else:
 */
  __pyx_t_1 = __pyx_v_family;
  __pyx_t_3 = ((__pyx_t_1 == AF_INET) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_t_1 == AF_INET6) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":90
 *     cdef _open(self, int family, int sockfd):
 *         if family in (uv.AF_INET, uv.AF_INET6):
 *             self._family = family             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError(
 */
    __pyx_v_self->_family = __pyx_v_family;

    /* "uvloop/handles/udp.pyx":89
 * 
 *     cdef _open(self, int family, int sockfd):
 *         if family in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             self._family = family
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/udp.pyx":92
 *             self._family = family
 *         else:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 'cannot open a UDP handle, invalid family {}'.format(family))
 * 
 */
  /*else*/ {

    /* "uvloop/handles/udp.pyx":93
 *         else:
 *             raise ValueError(
 *                 'cannot open a UDP handle, invalid family {}'.format(family))             # <<<<<<<<<<<<<<
 * 
 *         cdef int err
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_cannot_open_a_UDP_handle_invalid, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_family); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 93, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/handles/udp.pyx":92
 *             self._family = family
 *         else:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 'cannot open a UDP handle, invalid family {}'.format(family))
 * 
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(7, 92, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "uvloop/handles/udp.pyx":96
 * 
 *         cdef int err
 *         err = uv.uv_udp_open(<uv.uv_udp_t*>self._handle,             # <<<<<<<<<<<<<<
 *                              <uv.uv_os_sock_t>sockfd)
 * 
 */
  __pyx_v_err = uv_udp_open(((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), ((uv_os_sock_t)__pyx_v_sockfd));

  /* "uvloop/handles/udp.pyx":99
 *                              <uv.uv_os_sock_t>sockfd)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  __pyx_t_3 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":100
 * 
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             raise exc
 * 
 */
    __pyx_t_4 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_exc = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "uvloop/handles/udp.pyx":101
 *         if err < 0:
 *             exc = convert_error(err)
 *             raise exc             # <<<<<<<<<<<<<<
 * 
 *     cdef _bind(self, system.sockaddr* addr, bint reuse_addr):
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(7, 101, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":99
 *                              <uv.uv_os_sock_t>sockfd)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  }

  /* "uvloop/handles/udp.pyx":88
 *         self._address = address
 * 
 *     cdef _open(self, int family, int sockfd):             # <<<<<<<<<<<<<<
 *         if family in (uv.AF_INET, uv.AF_INET6):
 *             self._family = family
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":103
 *             raise exc
 * 
 *     cdef _bind(self, system.sockaddr* addr, bint reuse_addr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__bind(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, struct sockaddr *__pyx_v_addr, int __pyx_v_reuse_addr) {
  int __pyx_v_err;
  int __pyx_v_flags;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_bind", 0);

  /* "uvloop/handles/udp.pyx":106
 *         cdef:
 *             int err
 *             int flags = 0             # <<<<<<<<<<<<<<
 * 
 *         self._ensure_alive()
 */
  __pyx_v_flags = 0;

  /* "uvloop/handles/udp.pyx":108
 *             int flags = 0
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         if reuse_addr:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/udp.pyx":110
 *         self._ensure_alive()
 * 
 *         if reuse_addr:             # <<<<<<<<<<<<<<
 *             flags |= uv.UV_UDP_REUSEADDR
 * 
 */
  __pyx_t_2 = (__pyx_v_reuse_addr != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":111
 * 
 *         if reuse_addr:
 *             flags |= uv.UV_UDP_REUSEADDR             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_bind(<uv.uv_udp_t*>self._handle, addr, flags)
 */
    __pyx_v_flags = (__pyx_v_flags | UV_UDP_REUSEADDR);

    /* "uvloop/handles/udp.pyx":110
 *         self._ensure_alive()
 * 
 *         if reuse_addr:             # <<<<<<<<<<<<<<
 *             flags |= uv.UV_UDP_REUSEADDR
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":113
 *             flags |= uv.UV_UDP_REUSEADDR
 * 
 *         err = uv.uv_udp_bind(<uv.uv_udp_t*>self._handle, addr, flags)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_udp_bind(((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_addr, __pyx_v_flags);

  /* "uvloop/handles/udp.pyx":114
 * 
 *         err = uv.uv_udp_bind(<uv.uv_udp_t*>self._handle, addr, flags)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":115
 *         err = uv.uv_udp_bind(<uv.uv_udp_t*>self._handle, addr, flags)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             raise exc
 * 
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/udp.pyx":116
 *         if err < 0:
 *             exc = convert_error(err)
 *             raise exc             # <<<<<<<<<<<<<<
 * 
 *     cdef _set_broadcast(self, bint on):
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(7, 116, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":114
 * 
 *         err = uv.uv_udp_bind(<uv.uv_udp_t*>self._handle, addr, flags)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  }

  /* "uvloop/handles/udp.pyx":103
 *             raise exc
 * 
 *     cdef _bind(self, system.sockaddr* addr, bint reuse_addr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             int err
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":118
 *             raise exc
 * 
 *     cdef _set_broadcast(self, bint on):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__set_broadcast(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, int __pyx_v_on) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_set_broadcast", 0);

  /* "uvloop/handles/udp.pyx":121
 *         cdef int err
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_set_broadcast(<uv.uv_udp_t*>self._handle, on)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/udp.pyx":123
 *         self._ensure_alive()
 * 
 *         err = uv.uv_udp_set_broadcast(<uv.uv_udp_t*>self._handle, on)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_udp_set_broadcast(((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_v_on);

  /* "uvloop/handles/udp.pyx":124
 * 
 *         err = uv.uv_udp_set_broadcast(<uv.uv_udp_t*>self._handle, on)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  __pyx_t_2 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":125
 *         err = uv.uv_udp_set_broadcast(<uv.uv_udp_t*>self._handle, on)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             raise exc
 * 
 */
    __pyx_t_1 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_exc = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "uvloop/handles/udp.pyx":126
 *         if err < 0:
 *             exc = convert_error(err)
 *             raise exc             # <<<<<<<<<<<<<<
 * 
 *     cdef size_t _get_write_buffer_size(self):
 */
    __Pyx_Raise(__pyx_v_exc, 0, 0, 0);
    __PYX_ERR(7, 126, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":124
 * 
 *         err = uv.uv_udp_set_broadcast(<uv.uv_udp_t*>self._handle, on)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             raise exc
 */
  }

  /* "uvloop/handles/udp.pyx":118
 *             raise exc
 * 
 *     cdef _set_broadcast(self, bint on):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._set_broadcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":128
 *             raise exc
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         if self._handle is NULL:
 *             return 0
 */

static size_t __pyx_f_6uvloop_4loop_12UDPTransport__get_write_buffer_size(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_get_write_buffer_size", 0);

  /* "uvloop/handles/udp.pyx":129
 * 
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size
 */
  __pyx_t_1 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":130
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size
 * 
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":129
 * 
 *     cdef size_t _get_write_buffer_size(self):
 *         if self._handle is NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size
 */
  }

  /* "uvloop/handles/udp.pyx":131
 *         if self._handle is NULL:
 *             return 0
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size             # <<<<<<<<<<<<<<
 * 
 *     cdef bint _is_reading(self):
 */
  __pyx_r = ((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle)->send_queue_size;
  goto __pyx_L0;

  /* "uvloop/handles/udp.pyx":128
 *             raise exc
 * 
 *     cdef size_t _get_write_buffer_size(self):             # <<<<<<<<<<<<<<
 *         if self._handle is NULL:
 *             return 0
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":133
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         return self.__receiving
 * 
 */

static int __pyx_f_6uvloop_4loop_12UDPTransport__is_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_is_reading", 0);

  /* "uvloop/handles/udp.pyx":134
 * 
 *     cdef bint _is_reading(self):
 *         return self.__receiving             # <<<<<<<<<<<<<<
 * 
 *     cdef _start_reading(self):
 */
  __pyx_r = __pyx_v_self->__pyx___receiving;
  goto __pyx_L0;

  /* "uvloop/handles/udp.pyx":133
 *         return (<uv.uv_udp_t*>self._handle).send_queue_size
 * 
 *     cdef bint _is_reading(self):             # <<<<<<<<<<<<<<
 *         return self.__receiving
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":136
 *         return self.__receiving
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__start_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_start_reading", 0);

  /* "uvloop/handles/udp.pyx":139
 *         cdef int err
 * 
 *         if self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = (__pyx_v_self->__pyx___receiving != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":140
 * 
 *         if self.__receiving:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._ensure_alive()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":139
 *         cdef int err
 * 
 *         if self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":142
 *             return
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_recv_start(<uv.uv_udp_t*>self._handle,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":144
 *         self._ensure_alive()
 * 
 *         err = uv.uv_udp_recv_start(<uv.uv_udp_t*>self._handle,             # <<<<<<<<<<<<<<
 *                                    __loop_alloc_buffer,
 *                                    __uv_udp_on_receive)
 */
  __pyx_v_err = uv_udp_recv_start(((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), __pyx_f_6uvloop_4loop___loop_alloc_buffer, __pyx_f_6uvloop_4loop___uv_udp_on_receive);

  /* "uvloop/handles/udp.pyx":148
 *                                    __uv_udp_on_receive)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":149
 * 
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":150
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":151
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             # UDPTransport must live until the read callback is called
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":148
 *                                    __uv_udp_on_receive)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/udp.pyx":154
 *         else:
 *             # UDPTransport must live until the read callback is called
 *             self.__receiving_started()             # <<<<<<<<<<<<<<
 * 
 *     cdef _stop_reading(self):
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6uvloop_4loop_12UDPTransport___receiving_started(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "uvloop/handles/udp.pyx":136
 *         return self.__receiving
 * 
 *     cdef _start_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._start_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":156
 *             self.__receiving_started()
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__stop_reading(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_stop_reading", 0);

  /* "uvloop/handles/udp.pyx":159
 *         cdef int err
 * 
 *         if not self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = ((!(__pyx_v_self->__pyx___receiving != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":160
 * 
 *         if not self.__receiving:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._ensure_alive()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":159
 *         cdef int err
 * 
 *         if not self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":162
 *             return
 * 
 *         self._ensure_alive()             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_recv_stop(<uv.uv_udp_t*>self._handle)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._ensure_alive(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":164
 *         self._ensure_alive()
 * 
 *         err = uv.uv_udp_recv_stop(<uv.uv_udp_t*>self._handle)             # <<<<<<<<<<<<<<
 *         if err < 0:
 *             exc = convert_error(err)
 */
  __pyx_v_err = uv_udp_recv_stop(((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle));

  /* "uvloop/handles/udp.pyx":165
 * 
 *         err = uv.uv_udp_recv_stop(<uv.uv_udp_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":166
 *         err = uv.uv_udp_recv_stop(<uv.uv_udp_t*>self._handle)
 *         if err < 0:
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 *             return
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":167
 *         if err < 0:
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":168
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             self.__receiving_stopped()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":165
 * 
 *         err = uv.uv_udp_recv_stop(<uv.uv_udp_t*>self._handle)
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)
 */
  }

  /* "uvloop/handles/udp.pyx":170
 *             return
 *         else:
 *             self.__receiving_stopped()             # <<<<<<<<<<<<<<
 * 
 *     cdef inline __receiving_started(self):
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "uvloop/handles/udp.pyx":156
 *             self.__receiving_started()
 * 
 *     cdef _stop_reading(self):             # <<<<<<<<<<<<<<
 *         cdef int err
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._stop_reading", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":172
 *             self.__receiving_stopped()
 * 
 *     cdef inline __receiving_started(self):             # <<<<<<<<<<<<<<
 *         if self.__receiving:
 *             return
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_started(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__receiving_started", 0);

  /* "uvloop/handles/udp.pyx":173
 * 
 *     cdef inline __receiving_started(self):
 *         if self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 *         self.__receiving = 1
 */
  __pyx_t_1 = (__pyx_v_self->__pyx___receiving != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":174
 *     cdef inline __receiving_started(self):
 *         if self.__receiving:
 *             return             # <<<<<<<<<<<<<<
 *         self.__receiving = 1
 *         Py_INCREF(self)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":173
 * 
 *     cdef inline __receiving_started(self):
 *         if self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 *         self.__receiving = 1
 */
  }

  /* "uvloop/handles/udp.pyx":175
 *         if self.__receiving:
 *             return
 *         self.__receiving = 1             # <<<<<<<<<<<<<<
 *         Py_INCREF(self)
 * 
 */
  __pyx_v_self->__pyx___receiving = 1;

  /* "uvloop/handles/udp.pyx":176
 *             return
 *         self.__receiving = 1
 *         Py_INCREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef inline __receiving_stopped(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/udp.pyx":172
 *             self.__receiving_stopped()
 * 
 *     cdef inline __receiving_started(self):             # <<<<<<<<<<<<<<
 *         if self.__receiving:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":178
 *         Py_INCREF(self)
 * 
 *     cdef inline __receiving_stopped(self):             # <<<<<<<<<<<<<<
 *         if not self.__receiving:
 *             return
 */

static CYTHON_INLINE PyObject *__pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__receiving_stopped", 0);

  /* "uvloop/handles/udp.pyx":179
 * 
 *     cdef inline __receiving_stopped(self):
 *         if not self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 *         self.__receiving = 0
 */
  __pyx_t_1 = ((!(__pyx_v_self->__pyx___receiving != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":180
 *     cdef inline __receiving_stopped(self):
 *         if not self.__receiving:
 *             return             # <<<<<<<<<<<<<<
 *         self.__receiving = 0
 *         Py_DECREF(self)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":179
 * 
 *     cdef inline __receiving_stopped(self):
 *         if not self.__receiving:             # <<<<<<<<<<<<<<
 *             return
 *         self.__receiving = 0
 */
  }

  /* "uvloop/handles/udp.pyx":181
 *         if not self.__receiving:
 *             return
 *         self.__receiving = 0             # <<<<<<<<<<<<<<
 *         Py_DECREF(self)
 * 
 */
  __pyx_v_self->__pyx___receiving = 0;

  /* "uvloop/handles/udp.pyx":182
 *             return
 *         self.__receiving = 0
 *         Py_DECREF(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _new_socket(self):
 */
  Py_DECREF(((PyObject *)__pyx_v_self));

  /* "uvloop/handles/udp.pyx":178
 *         Py_INCREF(self)
 * 
 *     cdef inline __receiving_stopped(self):             # <<<<<<<<<<<<<<
 *         if not self.__receiving:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":184
 *         Py_DECREF(self)
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError(
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__new_socket(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self) {
  PyObject *__pyx_v_fileno = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("_new_socket", 0);

  /* "uvloop/handles/udp.pyx":185
 * 
 *     cdef _new_socket(self):
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'UDPTransport.family is undefined; cannot create python socket')
 */
  __pyx_t_1 = __pyx_v_self->_family;
  __pyx_t_3 = ((__pyx_t_1 != AF_INET) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_t_1 != AF_INET6) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":186
 *     cdef _new_socket(self):
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'UDPTransport.family is undefined; cannot create python socket')
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(7, 186, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":185
 * 
 *     cdef _new_socket(self):
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 'UDPTransport.family is undefined; cannot create python socket')
 */
  }

  /* "uvloop/handles/udp.pyx":189
 *                 'UDPTransport.family is undefined; cannot create python socket')
 * 
 *         fileno = self._fileno()             # <<<<<<<<<<<<<<
 *         return socket_socket(self._family, uv.SOCK_STREAM, 0, fileno)
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fileno = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/handles/udp.pyx":190
 * 
 *         fileno = self._fileno()
 *         return socket_socket(self._family, uv.SOCK_STREAM, 0, fileno)             # <<<<<<<<<<<<<<
 * 
 *     cdef _send(self, object data, object addr):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->_family); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_int(SOCK_STREAM); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_socket_socket);
  __pyx_t_7 = __pyx_v_6uvloop_4loop_socket_socket; __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_int_0);
  __Pyx_INCREF(__pyx_v_fileno);
  __Pyx_GIVEREF(__pyx_v_fileno);
  PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_v_fileno);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "uvloop/handles/udp.pyx":184
 *         Py_DECREF(self)
 * 
 *     cdef _new_socket(self):             # <<<<<<<<<<<<<<
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._new_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fileno);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":192
 *         return socket_socket(self._family, uv.SOCK_STREAM, 0, fileno)
 * 
 *     cdef _send(self, object data, object addr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             _UDPSendContext ctx
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__send(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_addr) {
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_v_ctx = 0;
  int __pyx_v_err;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  struct sockaddr __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  __Pyx_RefNannySetupContext("_send", 0);
  __Pyx_INCREF(__pyx_v_addr);

  /* "uvloop/handles/udp.pyx":196
 *             _UDPSendContext ctx
 * 
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')
 * 
 */
  __pyx_t_1 = __pyx_v_self->_family;
  __pyx_t_3 = ((__pyx_t_1 != AF_INET) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_t_1 != AF_INET6) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":197
 * 
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')             # <<<<<<<<<<<<<<
 * 
 *         if self._address_set and addr is not None:
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(7, 197, __pyx_L1_error)

    /* "uvloop/handles/udp.pyx":196
 *             _UDPSendContext ctx
 * 
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):             # <<<<<<<<<<<<<<
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":199
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')
 * 
 *         if self._address_set and addr is not None:             # <<<<<<<<<<<<<<
 *             if self._cached_py_address is None:
 *                 self._cached_py_address = __convert_sockaddr_to_pyaddr(
 */
  __pyx_t_2 = (__pyx_v_self->_address_set != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_addr != Py_None);
  __pyx_t_5 = (__pyx_t_2 != 0);
  __pyx_t_3 = __pyx_t_5;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":200
 * 
 *         if self._address_set and addr is not None:
 *             if self._cached_py_address is None:             # <<<<<<<<<<<<<<
 *                 self._cached_py_address = __convert_sockaddr_to_pyaddr(
 *                     &self._address)
 */
    __pyx_t_3 = (__pyx_v_self->_cached_py_address == Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (__pyx_t_5) {

      /* "uvloop/handles/udp.pyx":201
 *         if self._address_set and addr is not None:
 *             if self._cached_py_address is None:
 *                 self._cached_py_address = __convert_sockaddr_to_pyaddr(             # <<<<<<<<<<<<<<
 *                     &self._address)
 * 
 */
      __pyx_t_4 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr((&__pyx_v_self->_address)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_self->_cached_py_address);
      __Pyx_DECREF(__pyx_v_self->_cached_py_address);
      __pyx_v_self->_cached_py_address = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "uvloop/handles/udp.pyx":200
 * 
 *         if self._address_set and addr is not None:
 *             if self._cached_py_address is None:             # <<<<<<<<<<<<<<
 *                 self._cached_py_address = __convert_sockaddr_to_pyaddr(
 *                     &self._address)
 */
    }

    /* "uvloop/handles/udp.pyx":204
 *                     &self._address)
 * 
 *             if self._cached_py_address != addr:             # <<<<<<<<<<<<<<
 *                 raise ValueError('Invalid address: must be None or %s' %
 *                                  (self._cached_py_address,))
 */
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_cached_py_address, __pyx_v_addr, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 204, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(7, 204, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_5) {

      /* "uvloop/handles/udp.pyx":206
 *             if self._cached_py_address != addr:
 *                 raise ValueError('Invalid address: must be None or %s' %
 *                                  (self._cached_py_address,))             # <<<<<<<<<<<<<<
 * 
 *             addr = None
 */
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 206, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_self->_cached_py_address);
      __Pyx_GIVEREF(__pyx_v_self->_cached_py_address);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self->_cached_py_address);

      /* "uvloop/handles/udp.pyx":205
 * 
 *             if self._cached_py_address != addr:
 *                 raise ValueError('Invalid address: must be None or %s' %             # <<<<<<<<<<<<<<
 *                                  (self._cached_py_address,))
 * 
 */
      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Invalid_address_must_be_None_or, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(7, 205, __pyx_L1_error)

      /* "uvloop/handles/udp.pyx":204
 *                     &self._address)
 * 
 *             if self._cached_py_address != addr:             # <<<<<<<<<<<<<<
 *                 raise ValueError('Invalid address: must be None or %s' %
 *                                  (self._cached_py_address,))
 */
    }

    /* "uvloop/handles/udp.pyx":208
 *                                  (self._cached_py_address,))
 * 
 *             addr = None             # <<<<<<<<<<<<<<
 * 
 *         ctx = _UDPSendContext.new(self, data)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_addr, Py_None);

    /* "uvloop/handles/udp.pyx":199
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')
 * 
 *         if self._address_set and addr is not None:             # <<<<<<<<<<<<<<
 *             if self._cached_py_address is None:
 *                 self._cached_py_address = __convert_sockaddr_to_pyaddr(
 */
  }

  /* "uvloop/handles/udp.pyx":210
 *             addr = None
 * 
 *         ctx = _UDPSendContext.new(self, data)             # <<<<<<<<<<<<<<
 *         try:
 *             if addr is None:
 */
  __pyx_t_6 = ((PyObject *)__pyx_f_6uvloop_4loop_15_UDPSendContext_new(__pyx_v_self, __pyx_v_data)); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__UDPSendContext *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "uvloop/handles/udp.pyx":211
 * 
 *         ctx = _UDPSendContext.new(self, data)
 *         try:             # <<<<<<<<<<<<<<
 *             if addr is None:
 *                 if self._address_set:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    /*try:*/ {

      /* "uvloop/handles/udp.pyx":212
 *         ctx = _UDPSendContext.new(self, data)
 *         try:
 *             if addr is None:             # <<<<<<<<<<<<<<
 *                 if self._address_set:
 *                     ctx.addr = self._address
 */
      __pyx_t_5 = (__pyx_v_addr == Py_None);
      __pyx_t_3 = (__pyx_t_5 != 0);
      if (__pyx_t_3) {

        /* "uvloop/handles/udp.pyx":213
 *         try:
 *             if addr is None:
 *                 if self._address_set:             # <<<<<<<<<<<<<<
 *                     ctx.addr = self._address
 *                 else:
 */
        __pyx_t_3 = (__pyx_v_self->_address_set != 0);
        if (__pyx_t_3) {

          /* "uvloop/handles/udp.pyx":214
 *             if addr is None:
 *                 if self._address_set:
 *                     ctx.addr = self._address             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise RuntimeError(
 */
          __pyx_t_10 = __pyx_v_self->_address;
          __pyx_v_ctx->addr = __pyx_t_10;

          /* "uvloop/handles/udp.pyx":213
 *         try:
 *             if addr is None:
 *                 if self._address_set:             # <<<<<<<<<<<<<<
 *                     ctx.addr = self._address
 *                 else:
 */
          goto __pyx_L20;
        }

        /* "uvloop/handles/udp.pyx":216
 *                     ctx.addr = self._address
 *                 else:
 *                     raise RuntimeError(             # <<<<<<<<<<<<<<
 *                         'undable to perform send operation: no address')
 *             else:
 */
        /*else*/ {
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 216, __pyx_L11_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_Raise(__pyx_t_6, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __PYX_ERR(7, 216, __pyx_L11_error)
        }
        __pyx_L20:;

        /* "uvloop/handles/udp.pyx":212
 *         ctx = _UDPSendContext.new(self, data)
 *         try:
 *             if addr is None:             # <<<<<<<<<<<<<<
 *                 if self._address_set:
 *                     ctx.addr = self._address
 */
        goto __pyx_L19;
      }

      /* "uvloop/handles/udp.pyx":219
 *                         'undable to perform send operation: no address')
 *             else:
 *                 __convert_pyaddr_to_sockaddr(self._family, addr, &ctx.addr)             # <<<<<<<<<<<<<<
 *         except:
 *             ctx.close()
 */
      /*else*/ {
        __pyx_t_6 = __pyx_f_6uvloop_4loop___convert_pyaddr_to_sockaddr(__pyx_v_self->_family, __pyx_v_addr, (&__pyx_v_ctx->addr)); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 219, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_L19:;

      /* "uvloop/handles/udp.pyx":211
 * 
 *         ctx = _UDPSendContext.new(self, data)
 *         try:             # <<<<<<<<<<<<<<
 *             if addr is None:
 *                 if self._address_set:
 */
    }
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    goto __pyx_L18_try_end;
    __pyx_L11_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "uvloop/handles/udp.pyx":220
 *             else:
 *                 __convert_pyaddr_to_sockaddr(self._family, addr, &ctx.addr)
 *         except:             # <<<<<<<<<<<<<<
 *             ctx.close()
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("uvloop.loop.UDPTransport._send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(7, 220, __pyx_L13_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_11);

      /* "uvloop/handles/udp.pyx":221
 *                 __convert_pyaddr_to_sockaddr(self._family, addr, &ctx.addr)
 *         except:
 *             ctx.close()             # <<<<<<<<<<<<<<
 *             raise
 * 
 */
      __pyx_t_12 = ((struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext *)__pyx_v_ctx->__pyx_vtab)->close(__pyx_v_ctx); if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 221, __pyx_L13_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "uvloop/handles/udp.pyx":222
 *         except:
 *             ctx.close()
 *             raise             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_udp_send(&ctx.req,
 */
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_4, __pyx_t_11);
      __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_11 = 0; 
      __PYX_ERR(7, 222, __pyx_L13_except_error)
    }
    __pyx_L13_except_error:;

    /* "uvloop/handles/udp.pyx":211
 * 
 *         ctx = _UDPSendContext.new(self, data)
 *         try:             # <<<<<<<<<<<<<<
 *             if addr is None:
 *                 if self._address_set:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
    goto __pyx_L1_error;
    __pyx_L18_try_end:;
  }

  /* "uvloop/handles/udp.pyx":224
 *             raise
 * 
 *         err = uv.uv_udp_send(&ctx.req,             # <<<<<<<<<<<<<<
 *                              <uv.uv_udp_t*>self._handle,
 *                              &ctx.uv_buf,
 */
  __pyx_v_err = uv_udp_send((&__pyx_v_ctx->req), ((uv_udp_t *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._handle), (&__pyx_v_ctx->uv_buf), 1, (&__pyx_v_ctx->addr), __pyx_f_6uvloop_4loop___uv_udp_on_send);

  /* "uvloop/handles/udp.pyx":231
 *                              __uv_udp_on_send)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             ctx.close()
 * 
 */
  __pyx_t_3 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":232
 * 
 *         if err < 0:
 *             ctx.close()             # <<<<<<<<<<<<<<
 * 
 *             exc = convert_error(err)
 */
    __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext *)__pyx_v_ctx->__pyx_vtab)->close(__pyx_v_ctx); if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "uvloop/handles/udp.pyx":234
 *             ctx.close()
 * 
 *             exc = convert_error(err)             # <<<<<<<<<<<<<<
 *             self._fatal_error(exc, True)
 * 
 */
    __pyx_t_11 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_v_exc = __pyx_t_11;
    __pyx_t_11 = 0;

    /* "uvloop/handles/udp.pyx":235
 * 
 *             exc = convert_error(err)
 *             self._fatal_error(exc, True)             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_receive(self, bytes data, object exc, object addr):
 */
    __pyx_t_11 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_True, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "uvloop/handles/udp.pyx":231
 *                              __uv_udp_on_send)
 * 
 *         if err < 0:             # <<<<<<<<<<<<<<
 *             ctx.close()
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":192
 *         return socket_socket(self._family, uv.SOCK_STREAM, 0, fileno)
 * 
 *     cdef _send(self, object data, object addr):             # <<<<<<<<<<<<<<
 *         cdef:
 *             _UDPSendContext ctx
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":237
 *             self._fatal_error(exc, True)
 * 
 *     cdef _on_receive(self, bytes data, object exc, object addr):             # <<<<<<<<<<<<<<
 *         if exc is None:
 *             self._protocol.datagram_received(data, addr)
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__on_receive(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_exc, PyObject *__pyx_v_addr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_on_receive", 0);

  /* "uvloop/handles/udp.pyx":238
 * 
 *     cdef _on_receive(self, bytes data, object exc, object addr):
 *         if exc is None:             # <<<<<<<<<<<<<<
 *             self._protocol.datagram_received(data, addr)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_exc == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":239
 *     cdef _on_receive(self, bytes data, object exc, object addr):
 *         if exc is None:
 *             self._protocol.datagram_received(data, addr)             # <<<<<<<<<<<<<<
 *         else:
 *             self._protocol.error_received(exc)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._protocol, __pyx_n_s_datagram_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
    __Pyx_INCREF(__pyx_v_addr);
    __Pyx_GIVEREF(__pyx_v_addr);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_addr);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/udp.pyx":238
 * 
 *     cdef _on_receive(self, bytes data, object exc, object addr):
 *         if exc is None:             # <<<<<<<<<<<<<<
 *             self._protocol.datagram_received(data, addr)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "uvloop/handles/udp.pyx":241
 *             self._protocol.datagram_received(data, addr)
 *         else:
 *             self._protocol.error_received(exc)             # <<<<<<<<<<<<<<
 * 
 *     cdef _on_sent(self, object exc):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._protocol, __pyx_n_s_error_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(__pyx_v_exc);
      __Pyx_GIVEREF(__pyx_v_exc);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_exc);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "uvloop/handles/udp.pyx":237
 *             self._fatal_error(exc, True)
 * 
 *     cdef _on_receive(self, bytes data, object exc, object addr):             # <<<<<<<<<<<<<<
 *         if exc is None:
 *             self._protocol.datagram_received(data, addr)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._on_receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":243
 *             self._protocol.error_received(exc)
 * 
 *     cdef _on_sent(self, object exc):             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             if isinstance(exc, OSError):
 */

static PyObject *__pyx_f_6uvloop_4loop_12UDPTransport__on_sent(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_exc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error __pyx_t_7;
  __Pyx_RefNannySetupContext("_on_sent", 0);

  /* "uvloop/handles/udp.pyx":244
 * 
 *     cdef _on_sent(self, object exc):
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(exc, OSError):
 *                 self._protocol.error_received(exc)
 */
  __pyx_t_1 = (__pyx_v_exc != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":245
 *     cdef _on_sent(self, object exc):
 *         if exc is not None:
 *             if isinstance(exc, OSError):             # <<<<<<<<<<<<<<
 *                 self._protocol.error_received(exc)
 *             else:
 */
    __pyx_t_2 = PyObject_IsInstance(__pyx_v_exc, __pyx_builtin_OSError); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(7, 245, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/udp.pyx":246
 *         if exc is not None:
 *             if isinstance(exc, OSError):
 *                 self._protocol.error_received(exc)             # <<<<<<<<<<<<<<
 *             else:
 *                 self._fatal_error(
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base._protocol, __pyx_n_s_error_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_exc);
        __Pyx_GIVEREF(__pyx_v_exc);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_exc);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/udp.pyx":245
 *     cdef _on_sent(self, object exc):
 *         if exc is not None:
 *             if isinstance(exc, OSError):             # <<<<<<<<<<<<<<
 *                 self._protocol.error_received(exc)
 *             else:
 */
      goto __pyx_L4;
    }

    /* "uvloop/handles/udp.pyx":248
 *                 self._protocol.error_received(exc)
 *             else:
 *                 self._fatal_error(             # <<<<<<<<<<<<<<
 *                     exc, False, 'Fatal write error on datagram transport')
 * 
 */
    /*else*/ {

      /* "uvloop/handles/udp.pyx":249
 *             else:
 *                 self._fatal_error(
 *                     exc, False, 'Fatal write error on datagram transport')             # <<<<<<<<<<<<<<
 * 
 *         self._maybe_resume_protocol()
 */
      __pyx_t_7.__pyx_n = 1;
      __pyx_t_7.reason = __pyx_kp_u_Fatal_write_error_on_datagram_tr;
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_self), __pyx_v_exc, Py_False, &__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 248, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L4:;

    /* "uvloop/handles/udp.pyx":244
 * 
 *     cdef _on_sent(self, object exc):
 *         if exc is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(exc, OSError):
 *                 self._protocol.error_received(exc)
 */
  }

  /* "uvloop/handles/udp.pyx":251
 *                     exc, False, 'Fatal write error on datagram transport')
 * 
 *         self._maybe_resume_protocol()             # <<<<<<<<<<<<<<
 *         if not self._get_write_buffer_size():
 *             if self._closing:
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._maybe_resume_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/udp.pyx":252
 * 
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 */
  __pyx_t_1 = ((!(((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_write_buffer_size(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)) != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":253
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 *             if self._closing:             # <<<<<<<<<<<<<<
 *                 self._schedule_call_connection_lost(None)
 * 
 */
    __pyx_t_1 = (__pyx_v_self->__pyx_base._closing != 0);
    if (__pyx_t_1) {

      /* "uvloop/handles/udp.pyx":254
 *         if not self._get_write_buffer_size():
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)             # <<<<<<<<<<<<<<
 * 
 *     # === Public API ===
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._schedule_call_connection_lost(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self), Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/udp.pyx":253
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():
 *             if self._closing:             # <<<<<<<<<<<<<<
 *                 self._schedule_call_connection_lost(None)
 * 
 */
    }

    /* "uvloop/handles/udp.pyx":252
 * 
 *         self._maybe_resume_protocol()
 *         if not self._get_write_buffer_size():             # <<<<<<<<<<<<<<
 *             if self._closing:
 *                 self._schedule_call_connection_lost(None)
 */
  }

  /* "uvloop/handles/udp.pyx":243
 *             self._protocol.error_received(exc)
 * 
 *     cdef _on_sent(self, object exc):             # <<<<<<<<<<<<<<
 *         if exc is not None:
 *             if isinstance(exc, OSError):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport._on_sent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":258
 *     # === Public API ===
 * 
 *     def sendto(self, data, addr=None):             # <<<<<<<<<<<<<<
 *         if not data:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_12UDPTransport_3sendto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_12UDPTransport_3sendto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_addr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sendto (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_addr,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_addr);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sendto") < 0)) __PYX_ERR(7, 258, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_data = values[0];
    __pyx_v_addr = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sendto", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(7, 258, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.UDPTransport.sendto", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6uvloop_4loop_12UDPTransport_2sendto(((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_v_self), __pyx_v_data, __pyx_v_addr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_12UDPTransport_2sendto(struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_addr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("sendto", 0);

  /* "uvloop/handles/udp.pyx":259
 * 
 *     def sendto(self, data, addr=None):
 *         if not data:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(7, 259, __pyx_L1_error)
  __pyx_t_2 = ((!__pyx_t_1) != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":260
 *     def sendto(self, data, addr=None):
 *         if not data:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if self._conn_lost:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":259
 * 
 *     def sendto(self, data, addr=None):
 *         if not data:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/handles/udp.pyx":262
 *             return
 * 
 *         if self._conn_lost:             # <<<<<<<<<<<<<<
 *             # TODO add warning
 *             self._conn_lost += 1
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base._conn_lost != 0);
  if (__pyx_t_2) {

    /* "uvloop/handles/udp.pyx":264
 *         if self._conn_lost:
 *             # TODO add warning
 *             self._conn_lost += 1             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_v_self->__pyx_base._conn_lost = (__pyx_v_self->__pyx_base._conn_lost + 1);

    /* "uvloop/handles/udp.pyx":265
 *             # TODO add warning
 *             self._conn_lost += 1
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._send(data, addr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":262
 *             return
 * 
 *         if self._conn_lost:             # <<<<<<<<<<<<<<
 *             # TODO add warning
 *             self._conn_lost += 1
 */
  }

  /* "uvloop/handles/udp.pyx":267
 *             return
 * 
 *         self._send(data, addr)             # <<<<<<<<<<<<<<
 *         self._maybe_pause_protocol()
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_send(__pyx_v_self, __pyx_v_data, __pyx_v_addr); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/udp.pyx":268
 * 
 *         self._send(data, addr)
 *         self._maybe_pause_protocol()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._maybe_pause_protocol(((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/handles/udp.pyx":258
 *     # === Public API ===
 * 
 *     def sendto(self, data, addr=None):             # <<<<<<<<<<<<<<
 *         if not data:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.UDPTransport.sendto", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/handles/udp.pyx":271
 * 
 * 
 * cdef void __uv_udp_on_receive(uv.uv_udp_t* handle,             # <<<<<<<<<<<<<<
 *                               ssize_t nread,
 *                               const uv.uv_buf_t* buf,
 */

static void __pyx_f_6uvloop_4loop___uv_udp_on_receive(uv_udp_t *__pyx_v_handle, Py_ssize_t __pyx_v_nread, CYTHON_UNUSED uv_buf_t const *__pyx_v_buf, struct sockaddr const *__pyx_v_addr, CYTHON_UNUSED unsigned int __pyx_v_flags) {
  struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_udp = 0;
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_pyaddr = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  char const *__pyx_t_19;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_udp_on_receive", 0);

  /* "uvloop/handles/udp.pyx":278
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UDPTransport receive callback") == 0:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_1 = ((__pyx_f_6uvloop_4loop___ensure_handle_data(((uv_handle_t *)__pyx_v_handle), ((char const *)"UDPTransport receive callback")) == 0) != 0);

  /* "uvloop/handles/udp.pyx":277
 *                               unsigned flags) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UDPTransport receive callback") == 0:
 *         return
 */
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":279
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,
 *                             "UDPTransport receive callback") == 0:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":277
 *                               unsigned flags) with gil:
 * 
 *     if __ensure_handle_data(<uv.uv_handle_t*>handle,             # <<<<<<<<<<<<<<
 *                             "UDPTransport receive callback") == 0:
 *         return
 */
  }

  /* "uvloop/handles/udp.pyx":282
 * 
 *     cdef:
 *         UDPTransport udp = <UDPTransport>handle.data             # <<<<<<<<<<<<<<
 *         Loop loop = udp._loop
 *         bytes data
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_handle->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":283
 *     cdef:
 *         UDPTransport udp = <UDPTransport>handle.data
 *         Loop loop = udp._loop             # <<<<<<<<<<<<<<
 *         bytes data
 *         object pyaddr
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base._loop);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":289
 *     # It's OK to free the buffer early, since nothing will
 *     # be able to touch it until this method is done.
 *     __loop_free_buffer(loop)             # <<<<<<<<<<<<<<
 * 
 *     if udp._closed:
 */
  __pyx_f_6uvloop_4loop___loop_free_buffer(__pyx_v_loop);

  /* "uvloop/handles/udp.pyx":291
 *     __loop_free_buffer(loop)
 * 
 *     if udp._closed:             # <<<<<<<<<<<<<<
 *         # The handle was closed, there is no reason to
 *         # do any work now.
 */
  __pyx_t_1 = (__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base._closed != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":294
 *         # The handle was closed, there is no reason to
 *         # do any work now.
 *         udp.__receiving_stopped()  # Just in case.             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped(__pyx_v_udp); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":295
 *         # do any work now.
 *         udp.__receiving_stopped()  # Just in case.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if addr is NULL and nread == 0:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":291
 *     __loop_free_buffer(loop)
 * 
 *     if udp._closed:             # <<<<<<<<<<<<<<
 *         # The handle was closed, there is no reason to
 *         # do any work now.
 */
  }

  /* "uvloop/handles/udp.pyx":297
 *         return
 * 
 *     if addr is NULL and nread == 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #      addr: struct sockaddr* containing the address
 */
  __pyx_t_3 = ((__pyx_v_addr == NULL) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_nread == 0) != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":308
 *         #      addr != NULL when an empty UDP packet is
 *         #      received.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if addr is NULL:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":297
 *         return
 * 
 *     if addr is NULL and nread == 0:             # <<<<<<<<<<<<<<
 *         # From libuv docs:
 *         #      addr: struct sockaddr* containing the address
 */
  }

  /* "uvloop/handles/udp.pyx":310
 *         return
 * 
 *     if addr is NULL:             # <<<<<<<<<<<<<<
 *         pyaddr = None
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_addr == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":311
 * 
 *     if addr is NULL:
 *         pyaddr = None             # <<<<<<<<<<<<<<
 *     else:
 *         try:
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_pyaddr = Py_None;

    /* "uvloop/handles/udp.pyx":310
 *         return
 * 
 *     if addr is NULL:             # <<<<<<<<<<<<<<
 *         pyaddr = None
 *     else:
 */
    goto __pyx_L8;
  }

  /* "uvloop/handles/udp.pyx":313
 *         pyaddr = None
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "uvloop/handles/udp.pyx":314
 *     else:
 *         try:
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)             # <<<<<<<<<<<<<<
 *         except BaseException as exc:
 *             udp._error(exc, False)
 */
        __pyx_t_2 = __pyx_f_6uvloop_4loop___convert_sockaddr_to_pyaddr(__pyx_v_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 314, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_v_pyaddr = __pyx_t_2;
        __pyx_t_2 = 0;

        /* "uvloop/handles/udp.pyx":313
 *         pyaddr = None
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:
 */
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L16_try_end;
      __pyx_L9_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "uvloop/handles/udp.pyx":315
 *         try:
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:             # <<<<<<<<<<<<<<
 *             udp._error(exc, False)
 *             return
 */
      __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_7) {
        __Pyx_AddTraceback("uvloop.loop.__uv_udp_on_receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(7, 315, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_8);
        __pyx_v_exc = __pyx_t_8;
        /*try:*/ {

          /* "uvloop/handles/udp.pyx":316
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:
 *             udp._error(exc, False)             # <<<<<<<<<<<<<<
 *             return
 * 
 */
          __pyx_t_10 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_udp), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 316, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "uvloop/handles/udp.pyx":317
 *         except BaseException as exc:
 *             udp._error(exc, False)
 *             return             # <<<<<<<<<<<<<<
 * 
 *     if nread < 0:
 */
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L21_return;
        }

        /* "uvloop/handles/udp.pyx":315
 *         try:
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:             # <<<<<<<<<<<<<<
 *             udp._error(exc, False)
 *             return
 */
        /*finally:*/ {
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __pyx_L22_error:;
            __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_13);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __pyx_t_7 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_exc);
              __pyx_v_exc = NULL;
            }
            __Pyx_PyThreadState_assign
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_16);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            }
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
            __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
            __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
            goto __pyx_L11_except_error;
          }
          __pyx_L21_return: {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
            goto __pyx_L12_except_return;
          }
        }
      }
      goto __pyx_L11_except_error;
      __pyx_L11_except_error:;

      /* "uvloop/handles/udp.pyx":313
 *         pyaddr = None
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             pyaddr = __convert_sockaddr_to_pyaddr(addr)
 *         except BaseException as exc:
 */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L1_error;
      __pyx_L12_except_return:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L0;
      __pyx_L16_try_end:;
    }
  }
  __pyx_L8:;

  /* "uvloop/handles/udp.pyx":319
 *             return
 * 
 *     if nread < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(nread)
 *         udp._on_receive(None, exc, pyaddr)
 */
  __pyx_t_1 = ((__pyx_v_nread < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":320
 * 
 *     if nread < 0:
 *         exc = convert_error(nread)             # <<<<<<<<<<<<<<
 *         udp._on_receive(None, exc, pyaddr)
 *         return
 */
    __pyx_t_9 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_nread); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_v_exc = __pyx_t_9;
    __pyx_t_9 = 0;

    /* "uvloop/handles/udp.pyx":321
 *     if nread < 0:
 *         exc = convert_error(nread)
 *         udp._on_receive(None, exc, pyaddr)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_9 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_on_receive(__pyx_v_udp, ((PyObject*)Py_None), __pyx_v_exc, __pyx_v_pyaddr); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "uvloop/handles/udp.pyx":322
 *         exc = convert_error(nread)
 *         udp._on_receive(None, exc, pyaddr)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if pyaddr is None:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":319
 *             return
 * 
 *     if nread < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(nread)
 *         udp._on_receive(None, exc, pyaddr)
 */
  }

  /* "uvloop/handles/udp.pyx":324
 *         return
 * 
 *     if pyaddr is None:             # <<<<<<<<<<<<<<
 *         udp._fatal_error(
 *             RuntimeError(
 */
  __pyx_t_1 = (__pyx_v_pyaddr == Py_None);
  __pyx_t_3 = (__pyx_t_1 != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":326
 *     if pyaddr is None:
 *         udp._fatal_error(
 *             RuntimeError(             # <<<<<<<<<<<<<<
 *                 'uv_udp.receive callback: addr is NULL and nread >= 0'),
 *             False)
 */
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__120, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);

    /* "uvloop/handles/udp.pyx":325
 * 
 *     if pyaddr is None:
 *         udp._fatal_error(             # <<<<<<<<<<<<<<
 *             RuntimeError(
 *                 'uv_udp.receive callback: addr is NULL and nread >= 0'),
 */
    __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._fatal_error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_udp), __pyx_t_9, Py_False, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "uvloop/handles/udp.pyx":329
 *                 'uv_udp.receive callback: addr is NULL and nread >= 0'),
 *             False)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if nread == 0:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":324
 *         return
 * 
 *     if pyaddr is None:             # <<<<<<<<<<<<<<
 *         udp._fatal_error(
 *             RuntimeError(
 */
  }

  /* "uvloop/handles/udp.pyx":331
 *         return
 * 
 *     if nread == 0:             # <<<<<<<<<<<<<<
 *         data = b''
 *     else:
 */
  __pyx_t_3 = ((__pyx_v_nread == 0) != 0);
  if (__pyx_t_3) {

    /* "uvloop/handles/udp.pyx":332
 * 
 *     if nread == 0:
 *         data = b''             # <<<<<<<<<<<<<<
 *     else:
 *         data = loop._recv_buffer[:nread]
 */
    __Pyx_INCREF(__pyx_kp_b__34);
    __pyx_v_data = __pyx_kp_b__34;

    /* "uvloop/handles/udp.pyx":331
 *         return
 * 
 *     if nread == 0:             # <<<<<<<<<<<<<<
 *         data = b''
 *     else:
 */
    goto __pyx_L30;
  }

  /* "uvloop/handles/udp.pyx":334
 *         data = b''
 *     else:
 *         data = loop._recv_buffer[:nread]             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  /*else*/ {
    __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_loop->_recv_buffer) + 0, __pyx_v_nread - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_v_data = ((PyObject*)__pyx_t_8);
    __pyx_t_8 = 0;
  }
  __pyx_L30:;

  /* "uvloop/handles/udp.pyx":336
 *         data = loop._recv_buffer[:nread]
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "uvloop/handles/udp.pyx":337
 * 
 *     try:
 *         udp._on_receive(data, None, pyaddr)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         udp._error(exc, False)
 */
      __pyx_t_8 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_on_receive(__pyx_v_udp, __pyx_v_data, Py_None, __pyx_v_pyaddr); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 337, __pyx_L31_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "uvloop/handles/udp.pyx":336
 *         data = loop._recv_buffer[:nread]
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L38_try_end;
    __pyx_L31_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "uvloop/handles/udp.pyx":338
 *     try:
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         udp._error(exc, False)
 * 
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.__uv_udp_on_receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_2) < 0) __PYX_ERR(7, 338, __pyx_L33_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_9);
      __pyx_v_exc = __pyx_t_9;
      /*try:*/ {

        /* "uvloop/handles/udp.pyx":339
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:
 *         udp._error(exc, False)             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __pyx_t_10 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_udp), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 339, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }

      /* "uvloop/handles/udp.pyx":338
 *     try:
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         udp._error(exc, False)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L45;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L44_error:;
          __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_13);
          __pyx_t_11 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
          }
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
          __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0;
          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_19;
          goto __pyx_L33_except_error;
        }
        __pyx_L45:;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L32_exception_handled;
    }
    goto __pyx_L33_except_error;
    __pyx_L33_except_error:;

    /* "uvloop/handles/udp.pyx":336
 *         data = loop._recv_buffer[:nread]
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_receive(data, None, pyaddr)
 *     except BaseException as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L32_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
    __pyx_L38_try_end:;
  }

  /* "uvloop/handles/udp.pyx":271
 * 
 * 
 * cdef void __uv_udp_on_receive(uv.uv_udp_t* handle,             # <<<<<<<<<<<<<<
 *                               ssize_t nread,
 *                               const uv.uv_buf_t* buf,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_udp_on_receive", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_udp);
  __Pyx_XDECREF((PyObject *)__pyx_v_loop);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_pyaddr);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/handles/udp.pyx":342
 * 
 * 
 * cdef void __uv_udp_on_send(uv.uv_udp_send_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 * 
 *     if req.data is NULL:
 */

static void __pyx_f_6uvloop_4loop___uv_udp_on_send(uv_udp_send_t *__pyx_v_req, int __pyx_v_status) {
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_v_ctx = 0;
  struct __pyx_obj_6uvloop_4loop_UDPTransport *__pyx_v_udp = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__uv_udp_on_send", 0);

  /* "uvloop/handles/udp.pyx":344
 * cdef void __uv_udp_on_send(uv.uv_udp_send_t* req, int status) with gil:
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen as:
 *         #    - _UDPSendContext does an extra INCREF in its 'init()'
 */
  __pyx_t_1 = ((__pyx_v_req->data == NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":348
 *         #    - _UDPSendContext does an extra INCREF in its 'init()'
 *         #    - _UDPSendContext holds a ref to the relevant UDPTransport
 *         aio_logger.error(             # <<<<<<<<<<<<<<
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_6uvloop_4loop_aio_logger, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/handles/udp.pyx":350
 *         aio_logger.error(
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_u_UVStream_write_callback_called_w);
    __Pyx_GIVEREF(__pyx_kp_u_UVStream_write_callback_called_w);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_u_UVStream_write_callback_called_w);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":351
 *             'UVStream.write callback called with NULL req.data, status=%r',
 *             status)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
    goto __pyx_L0;

    /* "uvloop/handles/udp.pyx":344
 * cdef void __uv_udp_on_send(uv.uv_udp_send_t* req, int status) with gil:
 * 
 *     if req.data is NULL:             # <<<<<<<<<<<<<<
 *         # Shouldn't happen as:
 *         #    - _UDPSendContext does an extra INCREF in its 'init()'
 */
  }

  /* "uvloop/handles/udp.pyx":354
 * 
 *     cdef:
 *         _UDPSendContext ctx = <_UDPSendContext> req.data             # <<<<<<<<<<<<<<
 *         UDPTransport udp = <UDPTransport>ctx.udp
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_req->data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_ctx = ((struct __pyx_obj_6uvloop_4loop__UDPSendContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":355
 *     cdef:
 *         _UDPSendContext ctx = <_UDPSendContext> req.data
 *         UDPTransport udp = <UDPTransport>ctx.udp             # <<<<<<<<<<<<<<
 * 
 *     ctx.close()
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_ctx->udp);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":357
 *         UDPTransport udp = <UDPTransport>ctx.udp
 * 
 *     ctx.close()             # <<<<<<<<<<<<<<
 * 
 *     if status < 0:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext *)__pyx_v_ctx->__pyx_vtab)->close(__pyx_v_ctx); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/handles/udp.pyx":359
 *     ctx.close()
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *         print(exc)
 */
  __pyx_t_1 = ((__pyx_v_status < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/handles/udp.pyx":360
 * 
 *     if status < 0:
 *         exc = convert_error(status)             # <<<<<<<<<<<<<<
 *         print(exc)
 *     else:
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_exc = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "uvloop/handles/udp.pyx":361
 *     if status < 0:
 *         exc = convert_error(status)
 *         print(exc)             # <<<<<<<<<<<<<<
 *     else:
 *         exc = None
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_exc);
    __Pyx_GIVEREF(__pyx_v_exc);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_exc);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/udp.pyx":359
 *     ctx.close()
 * 
 *     if status < 0:             # <<<<<<<<<<<<<<
 *         exc = convert_error(status)
 *         print(exc)
 */
    goto __pyx_L4;
  }

  /* "uvloop/handles/udp.pyx":363
 *         print(exc)
 *     else:
 *         exc = None             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_exc = Py_None;
  }
  __pyx_L4:;

  /* "uvloop/handles/udp.pyx":365
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_sent(exc)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_10);
    /*try:*/ {

      /* "uvloop/handles/udp.pyx":366
 * 
 *     try:
 *         udp._on_sent(exc)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         udp._error(exc, False)
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_on_sent(__pyx_v_udp, __pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 366, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/handles/udp.pyx":365
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_sent(exc)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/handles/udp.pyx":367
 *     try:
 *         udp._on_sent(exc)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         udp._error(exc, False)
 */
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_11) {
      __Pyx_AddTraceback("uvloop.loop.__uv_udp_on_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(7, 367, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_DECREF_SET(__pyx_v_exc, __pyx_t_2);
      /*try:*/ {

        /* "uvloop/handles/udp.pyx":368
 *         udp._on_sent(exc)
 *     except BaseException as exc:
 *         udp._error(exc, False)             # <<<<<<<<<<<<<<
 */
        __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._error(((struct __pyx_obj_6uvloop_4loop_UVHandle *)__pyx_v_udp), __pyx_v_exc, Py_False); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 368, __pyx_L18_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "uvloop/handles/udp.pyx":367
 *     try:
 *         udp._on_sent(exc)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         udp._error(exc, False)
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc);
          __pyx_v_exc = NULL;
          goto __pyx_L19;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L18_error:;
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc);
            __pyx_v_exc = NULL;
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          }
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
          goto __pyx_L7_except_error;
        }
        __pyx_L19:;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_exception_handled;
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "uvloop/handles/udp.pyx":365
 *         exc = None
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         udp._on_sent(exc)
 *     except BaseException as exc:
 */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    __pyx_L12_try_end:;
  }

  /* "uvloop/handles/udp.pyx":342
 * 
 * 
 * cdef void __uv_udp_on_send(uv.uv_udp_send_t* req, int status) with gil:             # <<<<<<<<<<<<<<
 * 
 *     if req.data is NULL:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("uvloop.loop.__uv_udp_on_send", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ctx);
  __Pyx_XDECREF((PyObject *)__pyx_v_udp);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "uvloop/server.pyx":2
 * cdef class Server:
 *     def __cinit__(self, Loop loop):             # <<<<<<<<<<<<<<
 *         self._loop = loop
 *         self._servers = []
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(20, 2, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(20, 2, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("uvloop.loop.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6uvloop_4loop_Loop, 1, "loop", 0))) __PYX_ERR(20, 2, __pyx_L1_error)
  __pyx_r = __pyx_pf_6uvloop_4loop_6Server___cinit__(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_self), __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_6Server___cinit__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_Loop *__pyx_v_loop) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/server.pyx":3
 * cdef class Server:
 *     def __cinit__(self, Loop loop):
 *         self._loop = loop             # <<<<<<<<<<<<<<
 *         self._servers = []
 *         self._waiters = []
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_loop));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_loop));
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_loop));
  __pyx_v_self->_loop = __pyx_v_loop;

  /* "uvloop/server.pyx":4
 *     def __cinit__(self, Loop loop):
 *         self._loop = loop
 *         self._servers = []             # <<<<<<<<<<<<<<
 *         self._waiters = []
 *         self._active_count = 0
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_servers);
  __Pyx_DECREF(__pyx_v_self->_servers);
  __pyx_v_self->_servers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/server.pyx":5
 *         self._loop = loop
 *         self._servers = []
 *         self._waiters = []             # <<<<<<<<<<<<<<
 *         self._active_count = 0
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_waiters);
  __Pyx_DECREF(__pyx_v_self->_waiters);
  __pyx_v_self->_waiters = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/server.pyx":6
 *         self._servers = []
 *         self._waiters = []
 *         self._active_count = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef _add_server(self, UVStreamServer srv):
 */
  __pyx_v_self->_active_count = 0;

  /* "uvloop/server.pyx":2
 * cdef class Server:
 *     def __cinit__(self, Loop loop):             # <<<<<<<<<<<<<<
 *         self._loop = loop
 *         self._servers = []
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("uvloop.loop.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":8
 *         self._active_count = 0
 * 
 *     cdef _add_server(self, UVStreamServer srv):             # <<<<<<<<<<<<<<
 *         self._servers.append(srv)
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_6Server__add_server(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self, struct __pyx_obj_6uvloop_4loop_UVStreamServer *__pyx_v_srv) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_add_server", 0);

  /* "uvloop/server.pyx":9
 * 
 *     cdef _add_server(self, UVStreamServer srv):
 *         self._servers.append(srv)             # <<<<<<<<<<<<<<
 * 
 *     cdef _wakeup(self):
 */
  if (unlikely(__pyx_v_self->_servers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
    __PYX_ERR(20, 9, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_servers, ((PyObject *)__pyx_v_srv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(20, 9, __pyx_L1_error)

  /* "uvloop/server.pyx":8
 *         self._active_count = 0
 * 
 *     cdef _add_server(self, UVStreamServer srv):             # <<<<<<<<<<<<<<
 *         self._servers.append(srv)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Server._add_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":11
 *         self._servers.append(srv)
 * 
 *     cdef _wakeup(self):             # <<<<<<<<<<<<<<
 *         cdef list waiters
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_6Server__wakeup(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_v_waiters = 0;
  PyObject *__pyx_v_waiter = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wakeup", 0);

  /* "uvloop/server.pyx":14
 *         cdef list waiters
 * 
 *         waiters = self._waiters             # <<<<<<<<<<<<<<
 *         self._waiters = None
 *         for waiter in waiters:
 */
  __pyx_t_1 = __pyx_v_self->_waiters;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_waiters = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/server.pyx":15
 * 
 *         waiters = self._waiters
 *         self._waiters = None             # <<<<<<<<<<<<<<
 *         for waiter in waiters:
 *             if not waiter.done():
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_waiters);
  __Pyx_DECREF(__pyx_v_self->_waiters);
  __pyx_v_self->_waiters = ((PyObject*)Py_None);

  /* "uvloop/server.pyx":16
 *         waiters = self._waiters
 *         self._waiters = None
 *         for waiter in waiters:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(waiter)
 */
  if (unlikely(__pyx_v_waiters == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(20, 16, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_waiters; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(20, 16, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/server.pyx":17
 *         self._waiters = None
 *         for waiter in waiters:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(waiter)
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 17, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 17, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(20, 17, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((!__pyx_t_6) != 0);
    if (__pyx_t_7) {

      /* "uvloop/server.pyx":18
 *         for waiter in waiters:
 *             if not waiter.done():
 *                 waiter.set_result(waiter)             # <<<<<<<<<<<<<<
 * 
 *     cdef _attach(self):
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 18, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_waiter); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 18, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 18, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_waiter);
        __Pyx_GIVEREF(__pyx_v_waiter);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_waiter);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 18, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "uvloop/server.pyx":17
 *         self._waiters = None
 *         for waiter in waiters:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(waiter)
 * 
 */
    }

    /* "uvloop/server.pyx":16
 *         waiters = self._waiters
 *         self._waiters = None
 *         for waiter in waiters:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(waiter)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/server.pyx":11
 *         self._servers.append(srv)
 * 
 *     cdef _wakeup(self):             # <<<<<<<<<<<<<<
 *         cdef list waiters
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("uvloop.loop.Server._wakeup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_waiters);
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":20
 *                 waiter.set_result(waiter)
 * 
 *     cdef _attach(self):             # <<<<<<<<<<<<<<
 *         assert self._servers is not None
 *         self._active_count += 1
 */

static PyObject *__pyx_f_6uvloop_4loop_6Server__attach(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_attach", 0);

  /* "uvloop/server.pyx":21
 * 
 *     cdef _attach(self):
 *         assert self._servers is not None             # <<<<<<<<<<<<<<
 *         self._active_count += 1
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_1 = (__pyx_v_self->_servers != ((PyObject*)Py_None));
    if (unlikely(!(__pyx_t_1 != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(20, 21, __pyx_L1_error)
    }
  }
  #endif

  /* "uvloop/server.pyx":22
 *     cdef _attach(self):
 *         assert self._servers is not None
 *         self._active_count += 1             # <<<<<<<<<<<<<<
 * 
 *     cdef _detach(self):
 */
  __pyx_v_self->_active_count = (__pyx_v_self->_active_count + 1);

  /* "uvloop/server.pyx":20
 *                 waiter.set_result(waiter)
 * 
 *     cdef _attach(self):             # <<<<<<<<<<<<<<
 *         assert self._servers is not None
 *         self._active_count += 1
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Server._attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":24
 *         self._active_count += 1
 * 
 *     cdef _detach(self):             # <<<<<<<<<<<<<<
 *         assert self._active_count > 0
 *         self._active_count -= 1
 */

static PyObject *__pyx_f_6uvloop_4loop_6Server__detach(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_detach", 0);

  /* "uvloop/server.pyx":25
 * 
 *     cdef _detach(self):
 *         assert self._active_count > 0             # <<<<<<<<<<<<<<
 *         self._active_count -= 1
 *         if self._active_count == 0 and self._servers is None:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_v_self->_active_count > 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(20, 25, __pyx_L1_error)
    }
  }
  #endif

  /* "uvloop/server.pyx":26
 *     cdef _detach(self):
 *         assert self._active_count > 0
 *         self._active_count -= 1             # <<<<<<<<<<<<<<
 *         if self._active_count == 0 and self._servers is None:
 *             self._wakeup()
 */
  __pyx_v_self->_active_count = (__pyx_v_self->_active_count - 1);

  /* "uvloop/server.pyx":27
 *         assert self._active_count > 0
 *         self._active_count -= 1
 *         if self._active_count == 0 and self._servers is None:             # <<<<<<<<<<<<<<
 *             self._wakeup()
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->_active_count == 0) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->_servers == ((PyObject*)Py_None));
  __pyx_t_3 = (__pyx_t_2 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/server.pyx":28
 *         self._active_count -= 1
 *         if self._active_count == 0 and self._servers is None:
 *             self._wakeup()             # <<<<<<<<<<<<<<
 * 
 *     # Public API
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)__pyx_v_self->__pyx_vtab)->_wakeup(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "uvloop/server.pyx":27
 *         assert self._active_count > 0
 *         self._active_count -= 1
 *         if self._active_count == 0 and self._servers is None:             # <<<<<<<<<<<<<<
 *             self._wakeup()
 * 
 */
  }

  /* "uvloop/server.pyx":24
 *         self._active_count += 1
 * 
 *     cdef _detach(self):             # <<<<<<<<<<<<<<
 *         assert self._active_count > 0
 *         self._active_count -= 1
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("uvloop.loop.Server._detach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":32
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s sockets=%r>' % (self.__class__.__name__, self.sockets)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Server_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Server_3__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Server_2__repr__(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Server_2__repr__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "uvloop/server.pyx":33
 * 
 *     def __repr__(self):
 *         return '<%s sockets=%r>' % (self.__class__.__name__, self.sockets)             # <<<<<<<<<<<<<<
 * 
 *     @aio_coroutine
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sockets); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_sockets_r, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "uvloop/server.pyx":32
 *     # Public API
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s sockets=%r>' % (self.__class__.__name__, self.sockets)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Server.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_6uvloop_4loop_6Server_6generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "uvloop/server.pyx":36
 * 
 *     @aio_coroutine
 *     async def wait_closed(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None or self._waiters is None:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Server_5wait_closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Server_5wait_closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wait_closed (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Server_4wait_closed(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Server_4wait_closed(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wait_closed", 0);
  __pyx_cur_scope = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_16_wait_closed(__pyx_ptype_6uvloop_4loop___pyx_scope_struct_16_wait_closed, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_6uvloop_4loop_6Server_6generator9, (PyObject *) __pyx_cur_scope, __pyx_n_s_wait_closed, __pyx_n_s_Server_wait_closed); if (unlikely(!gen)) __PYX_ERR(20, 36, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("uvloop.loop.Server.wait_closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_6uvloop_4loop_6Server_6generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *__pyx_cur_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L7_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 36, __pyx_L1_error)

  /* "uvloop/server.pyx":37
 *     @aio_coroutine
 *     async def wait_closed(self):
 *         if self._servers is None or self._waiters is None:             # <<<<<<<<<<<<<<
 *             return
 *         waiter = self._loop._new_future()
 */
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->_servers == ((PyObject*)Py_None));
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_self->_waiters == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/server.pyx":38
 *     async def wait_closed(self):
 *         if self._servers is None or self._waiters is None:
 *             return             # <<<<<<<<<<<<<<
 *         waiter = self._loop._new_future()
 *         self._waiters.append(waiter)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "uvloop/server.pyx":37
 *     @aio_coroutine
 *     async def wait_closed(self):
 *         if self._servers is None or self._waiters is None:             # <<<<<<<<<<<<<<
 *             return
 *         waiter = self._loop._new_future()
 */
  }

  /* "uvloop/server.pyx":39
 *         if self._servers is None or self._waiters is None:
 *             return
 *         waiter = self._loop._new_future()             # <<<<<<<<<<<<<<
 *         self._waiters.append(waiter)
 *         await waiter
 */
  __pyx_t_4 = __pyx_f_6uvloop_4loop_4Loop__new_future(__pyx_cur_scope->__pyx_v_self->_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_waiter = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "uvloop/server.pyx":40
 *             return
 *         waiter = self._loop._new_future()
 *         self._waiters.append(waiter)             # <<<<<<<<<<<<<<
 *         await waiter
 * 
 */
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_waiters == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
    __PYX_ERR(20, 40, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_self->_waiters, __pyx_cur_scope->__pyx_v_waiter); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(20, 40, __pyx_L1_error)

  /* "uvloop/server.pyx":41
 *         waiter = self._loop._new_future()
 *         self._waiters.append(waiter)
 *         await waiter             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_waiter);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L7_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 41, __pyx_L1_error)
  } else {
    PyObject* exc_type = PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
      else __PYX_ERR(20, 41, __pyx_L1_error)
    }
  }

  /* "uvloop/server.pyx":36
 * 
 *     @aio_coroutine
 *     async def wait_closed(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None or self._waiters is None:
 *             return
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("wait_closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":43
 *         await waiter
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Server_8close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Server_8close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Server_7close(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Server_7close(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_v_servers = 0;
  PyObject *__pyx_v_server = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("close", 0);

  /* "uvloop/server.pyx":44
 * 
 *     def close(self):
 *         if self._servers is None:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_servers == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "uvloop/server.pyx":45
 *     def close(self):
 *         if self._servers is None:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         cdef list servers = self._servers
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/server.pyx":44
 * 
 *     def close(self):
 *         if self._servers is None:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "uvloop/server.pyx":47
 *             return
 * 
 *         cdef list servers = self._servers             # <<<<<<<<<<<<<<
 *         self._servers = None
 * 
 */
  __pyx_t_3 = __pyx_v_self->_servers;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_servers = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "uvloop/server.pyx":48
 * 
 *         cdef list servers = self._servers
 *         self._servers = None             # <<<<<<<<<<<<<<
 * 
 *         for server in servers:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_servers);
  __Pyx_DECREF(__pyx_v_self->_servers);
  __pyx_v_self->_servers = ((PyObject*)Py_None);

  /* "uvloop/server.pyx":50
 *         self._servers = None
 * 
 *         for server in servers:             # <<<<<<<<<<<<<<
 *             (<UVStreamServer>server)._close()
 * 
 */
  if (unlikely(__pyx_v_servers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(20, 50, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_v_servers; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
  for (;;) {
    if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(20, 50, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_server, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "uvloop/server.pyx":51
 * 
 *         for server in servers:
 *             (<UVStreamServer>server)._close()             # <<<<<<<<<<<<<<
 * 
 *         if self._active_count == 0:
 */
    __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_server)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._close(((struct __pyx_obj_6uvloop_4loop_UVHandle *)((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_server))); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "uvloop/server.pyx":50
 *         self._servers = None
 * 
 *         for server in servers:             # <<<<<<<<<<<<<<
 *             (<UVStreamServer>server)._close()
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "uvloop/server.pyx":53
 *             (<UVStreamServer>server)._close()
 * 
 *         if self._active_count == 0:             # <<<<<<<<<<<<<<
 *             self._wakeup()
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->_active_count == 0) != 0);
  if (__pyx_t_2) {

    /* "uvloop/server.pyx":54
 * 
 *         if self._active_count == 0:
 *             self._wakeup()             # <<<<<<<<<<<<<<
 * 
 *     property sockets:
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_Server *)__pyx_v_self->__pyx_vtab)->_wakeup(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/server.pyx":53
 *             (<UVStreamServer>server)._close()
 * 
 *         if self._active_count == 0:             # <<<<<<<<<<<<<<
 *             self._wakeup()
 * 
 */
  }

  /* "uvloop/server.pyx":43
 *         await waiter
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("uvloop.loop.Server.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_servers);
  __Pyx_XDECREF(__pyx_v_server);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/server.pyx":57
 * 
 *     property sockets:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef list sockets = []
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6uvloop_4loop_6Server_7sockets_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6uvloop_4loop_6Server_7sockets_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6uvloop_4loop_6Server_7sockets___get__(((struct __pyx_obj_6uvloop_4loop_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6uvloop_4loop_6Server_7sockets___get__(struct __pyx_obj_6uvloop_4loop_Server *__pyx_v_self) {
  PyObject *__pyx_v_sockets = 0;
  PyObject *__pyx_v_server = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "uvloop/server.pyx":58
 *     property sockets:
 *         def __get__(self):
 *             cdef list sockets = []             # <<<<<<<<<<<<<<
 * 
 *             for server in self._servers:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_sockets = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/server.pyx":60
 *             cdef list sockets = []
 * 
 *             for server in self._servers:             # <<<<<<<<<<<<<<
 *                 sockets.append(
 *                     (<UVStreamServer>server)._get_socket()
 */
  if (unlikely(__pyx_v_self->_servers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(20, 60, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->_servers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(20, 60, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_server, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "uvloop/server.pyx":62
 *             for server in self._servers:
 *                 sockets.append(
 *                     (<UVStreamServer>server)._get_socket()             # <<<<<<<<<<<<<<
 *                 )
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer *)((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_server)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)__pyx_v_server))); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "uvloop/server.pyx":61
 * 
 *             for server in self._servers:
 *                 sockets.append(             # <<<<<<<<<<<<<<
 *                     (<UVStreamServer>server)._get_socket()
 *                 )
 */
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_sockets, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(20, 61, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "uvloop/server.pyx":60
 *             cdef list sockets = []
 * 
 *             for server in self._servers:             # <<<<<<<<<<<<<<
 *                 sockets.append(
 *                     (<UVStreamServer>server)._get_socket()
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/server.pyx":65
 *                 )
 * 
 *             return sockets             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_sockets);
  __pyx_r = __pyx_v_sockets;
  goto __pyx_L0;

  /* "uvloop/server.pyx":57
 * 
 *     property sockets:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef list sockets = []
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("uvloop.loop.Server.sockets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sockets);
  __Pyx_XDECREF(__pyx_v_server);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/os_signal.pyx":6
 * 
 * cdef class SignalsStack:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.saved = 0
 *         for i in range(MAX_SIG):
 */

/* Python wrapper */
static int __pyx_pw_6uvloop_4loop_12SignalsStack_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6uvloop_4loop_12SignalsStack_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6uvloop_4loop_12SignalsStack___cinit__(((struct __pyx_obj_6uvloop_4loop_SignalsStack *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6uvloop_4loop_12SignalsStack___cinit__(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self) {
  long __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "uvloop/os_signal.pyx":7
 * cdef class SignalsStack:
 *     def __cinit__(self):
 *         self.saved = 0             # <<<<<<<<<<<<<<
 *         for i in range(MAX_SIG):
 *             self.signals[i] = NULL
 */
  __pyx_v_self->saved = 0;

  /* "uvloop/os_signal.pyx":8
 *     def __cinit__(self):
 *         self.saved = 0
 *         for i in range(MAX_SIG):             # <<<<<<<<<<<<<<
 *             self.signals[i] = NULL
 * 
 */
  for (__pyx_t_1 = 0; __pyx_t_1 < 64; __pyx_t_1+=1) {
    __pyx_v_i = __pyx_t_1;

    /* "uvloop/os_signal.pyx":9
 *         self.saved = 0
 *         for i in range(MAX_SIG):
 *             self.signals[i] = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef save(self):
 */
    (__pyx_v_self->signals[__pyx_v_i]) = NULL;
  }

  /* "uvloop/os_signal.pyx":6
 * 
 * cdef class SignalsStack:
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.saved = 0
 *         for i in range(MAX_SIG):
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/os_signal.pyx":11
 *             self.signals[i] = NULL
 * 
 *     cdef save(self):             # <<<<<<<<<<<<<<
 *         cdef sigaction_t sa
 * 
 */

static PyObject *__pyx_f_6uvloop_4loop_12SignalsStack_save(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self) {
  struct sigaction __pyx_v_sa;
  long __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("save", 0);

  /* "uvloop/os_signal.pyx":14
 *         cdef sigaction_t sa
 * 
 *         for i in range(MAX_SIG):             # <<<<<<<<<<<<<<
 *             if sigaction(i, NULL, &sa) == -1 or sa.sa_handler is NULL:
 *                 continue
 */
  for (__pyx_t_1 = 0; __pyx_t_1 < 64; __pyx_t_1+=1) {
    __pyx_v_i = __pyx_t_1;

    /* "uvloop/os_signal.pyx":15
 * 
 *         for i in range(MAX_SIG):
 *             if sigaction(i, NULL, &sa) == -1 or sa.sa_handler is NULL:             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    __pyx_t_3 = ((sigaction(__pyx_v_i, NULL, (&__pyx_v_sa)) == -1L) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_sa.sa_handler == NULL) != 0);
    __pyx_t_2 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_2) {

      /* "uvloop/os_signal.pyx":16
 *         for i in range(MAX_SIG):
 *             if sigaction(i, NULL, &sa) == -1 or sa.sa_handler is NULL:
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             self.signals[i] = <sighandler_t>sa.sa_handler
 */
      goto __pyx_L3_continue;

      /* "uvloop/os_signal.pyx":15
 * 
 *         for i in range(MAX_SIG):
 *             if sigaction(i, NULL, &sa) == -1 or sa.sa_handler is NULL:             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    }

    /* "uvloop/os_signal.pyx":18
 *                 continue
 * 
 *             self.signals[i] = <sighandler_t>sa.sa_handler             # <<<<<<<<<<<<<<
 * 
 *         self.saved = 1
 */
    (__pyx_v_self->signals[__pyx_v_i]) = ((__pyx_t_4libc_6signal_sighandler_t)__pyx_v_sa.sa_handler);
    __pyx_L3_continue:;
  }

  /* "uvloop/os_signal.pyx":20
 *             self.signals[i] = <sighandler_t>sa.sa_handler
 * 
 *         self.saved = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef restore(self):
 */
  __pyx_v_self->saved = 1;

  /* "uvloop/os_signal.pyx":11
 *             self.signals[i] = NULL
 * 
 *     cdef save(self):             # <<<<<<<<<<<<<<
 *         cdef sigaction_t sa
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/os_signal.pyx":22
 *         self.saved = 1
 * 
 *     cdef restore(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             sighandler_t sig
 */

static PyObject *__pyx_f_6uvloop_4loop_12SignalsStack_restore(struct __pyx_obj_6uvloop_4loop_SignalsStack *__pyx_v_self) {
  struct sigaction __pyx_v_sa;
  long __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  long __pyx_t_3;
  __Pyx_RefNannySetupContext("restore", 0);

  /* "uvloop/os_signal.pyx":27
 *             sigaction_t sa
 * 
 *         if not self.saved:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("SignalsStack.save() wasn't called")
 * 
 */
  __pyx_t_1 = ((!(__pyx_v_self->saved != 0)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/os_signal.pyx":28
 * 
 *         if not self.saved:
 *             raise RuntimeError("SignalsStack.save() wasn't called")             # <<<<<<<<<<<<<<
 * 
 *         for i in range(MAX_SIG):
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__121, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(21, 28, __pyx_L1_error)

    /* "uvloop/os_signal.pyx":27
 *             sigaction_t sa
 * 
 *         if not self.saved:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("SignalsStack.save() wasn't called")
 * 
 */
  }

  /* "uvloop/os_signal.pyx":30
 *             raise RuntimeError("SignalsStack.save() wasn't called")
 * 
 *         for i in range(MAX_SIG):             # <<<<<<<<<<<<<<
 *             if self.signals[i] == NULL:
 *                 continue
 */
  for (__pyx_t_3 = 0; __pyx_t_3 < 64; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "uvloop/os_signal.pyx":31
 * 
 *         for i in range(MAX_SIG):
 *             if self.signals[i] == NULL:             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    __pyx_t_1 = (((__pyx_v_self->signals[__pyx_v_i]) == NULL) != 0);
    if (__pyx_t_1) {

      /* "uvloop/os_signal.pyx":32
 *         for i in range(MAX_SIG):
 *             if self.signals[i] == NULL:
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             memset(&sa, 0, sizeof(sa))
 */
      goto __pyx_L4_continue;

      /* "uvloop/os_signal.pyx":31
 * 
 *         for i in range(MAX_SIG):
 *             if self.signals[i] == NULL:             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    }

    /* "uvloop/os_signal.pyx":34
 *                 continue
 * 
 *             memset(&sa, 0, sizeof(sa))             # <<<<<<<<<<<<<<
 *             if sigfillset(&sa.sa_mask):
 *                 raise RuntimeError(
 */
    memset((&__pyx_v_sa), 0, (sizeof(__pyx_v_sa)));

    /* "uvloop/os_signal.pyx":35
 * 
 *             memset(&sa, 0, sizeof(sa))
 *             if sigfillset(&sa.sa_mask):             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(
 *                     'failed to restore signal (sigfillset failed)')
 */
    __pyx_t_1 = (sigfillset((&__pyx_v_sa.sa_mask)) != 0);
    if (__pyx_t_1) {

      /* "uvloop/os_signal.pyx":36
 *             memset(&sa, 0, sizeof(sa))
 *             if sigfillset(&sa.sa_mask):
 *                 raise RuntimeError(             # <<<<<<<<<<<<<<
 *                     'failed to restore signal (sigfillset failed)')
 *             sa.sa_handler = self.signals[i]
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 36, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(21, 36, __pyx_L1_error)

      /* "uvloop/os_signal.pyx":35
 * 
 *             memset(&sa, 0, sizeof(sa))
 *             if sigfillset(&sa.sa_mask):             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(
 *                     'failed to restore signal (sigfillset failed)')
 */
    }

    /* "uvloop/os_signal.pyx":38
 *                 raise RuntimeError(
 *                     'failed to restore signal (sigfillset failed)')
 *             sa.sa_handler = self.signals[i]             # <<<<<<<<<<<<<<
 *             if sigaction(i, &sa, NULL):
 *                 raise convert_error(-errno.errno)
 */
    __pyx_v_sa.sa_handler = (__pyx_v_self->signals[__pyx_v_i]);

    /* "uvloop/os_signal.pyx":39
 *                     'failed to restore signal (sigfillset failed)')
 *             sa.sa_handler = self.signals[i]
 *             if sigaction(i, &sa, NULL):             # <<<<<<<<<<<<<<
 *                 raise convert_error(-errno.errno)
 * 
 */
    __pyx_t_1 = (sigaction(__pyx_v_i, (&__pyx_v_sa), NULL) != 0);
    if (__pyx_t_1) {

      /* "uvloop/os_signal.pyx":40
 *             sa.sa_handler = self.signals[i]
 *             if sigaction(i, &sa, NULL):
 *                 raise convert_error(-errno.errno)             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error((-errno)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(21, 40, __pyx_L1_error)

      /* "uvloop/os_signal.pyx":39
 *                     'failed to restore signal (sigfillset failed)')
 *             sa.sa_handler = self.signals[i]
 *             if sigaction(i, &sa, NULL):             # <<<<<<<<<<<<<<
 *                 raise convert_error(-errno.errno)
 * 
 */
    }
    __pyx_L4_continue:;
  }

  /* "uvloop/os_signal.pyx":22
 *         self.saved = 1
 * 
 *     cdef restore(self):             # <<<<<<<<<<<<<<
 *         cdef:
 *             sighandler_t sig
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.SignalsStack.restore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/os_signal.pyx":43
 * 
 * 
 * cdef void __signal_handler_sigint(int sig) nogil:             # <<<<<<<<<<<<<<
 *     cdef sighandler_t handle
 * 
 */

static void __pyx_f_6uvloop_4loop___signal_handler_sigint(int __pyx_v_sig) {
  __pyx_t_4libc_6signal_sighandler_t __pyx_v_handle;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "uvloop/os_signal.pyx":50
 *     # C structs/pointers.
 * 
 *     if sig != SIGINT or __main_loop__ is None:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_2 = ((__pyx_v_sig != SIGINT) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (((PyObject *)__pyx_v_6uvloop_4loop___main_loop__) == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/os_signal.pyx":51
 * 
 *     if sig != SIGINT or __main_loop__ is None:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if __main_loop__._executing_py_code and not __main_loop__._custom_sigint:
 */
    goto __pyx_L0;

    /* "uvloop/os_signal.pyx":50
 *     # C structs/pointers.
 * 
 *     if sig != SIGINT or __main_loop__ is None:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "uvloop/os_signal.pyx":53
 *         return
 * 
 *     if __main_loop__._executing_py_code and not __main_loop__._custom_sigint:             # <<<<<<<<<<<<<<
 *         PyErr_SetInterrupt()  # void
 *         return
 */
  __pyx_t_3 = (__pyx_v_6uvloop_4loop___main_loop__->_executing_py_code != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = ((!(__pyx_v_6uvloop_4loop___main_loop__->_custom_sigint != 0)) != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "uvloop/os_signal.pyx":54
 * 
 *     if __main_loop__._executing_py_code and not __main_loop__._custom_sigint:
 *         PyErr_SetInterrupt()  # void             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    PyErr_SetInterrupt();

    /* "uvloop/os_signal.pyx":55
 *     if __main_loop__._executing_py_code and not __main_loop__._custom_sigint:
 *         PyErr_SetInterrupt()  # void
 *         return             # <<<<<<<<<<<<<<
 * 
 *     if __main_loop__.uv_signals is not None:
 */
    goto __pyx_L0;

    /* "uvloop/os_signal.pyx":53
 *         return
 * 
 *     if __main_loop__._executing_py_code and not __main_loop__._custom_sigint:             # <<<<<<<<<<<<<<
 *         PyErr_SetInterrupt()  # void
 *         return
 */
  }

  /* "uvloop/os_signal.pyx":57
 *         return
 * 
 *     if __main_loop__.uv_signals is not None:             # <<<<<<<<<<<<<<
 *         handle = __main_loop__.uv_signals.signals[sig]
 *         if handle is not NULL:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_6uvloop_4loop___main_loop__->uv_signals) != Py_None);
  __pyx_t_3 = (__pyx_t_1 != 0);
  if (__pyx_t_3) {

    /* "uvloop/os_signal.pyx":58
 * 
 *     if __main_loop__.uv_signals is not None:
 *         handle = __main_loop__.uv_signals.signals[sig]             # <<<<<<<<<<<<<<
 *         if handle is not NULL:
 *             handle(sig)  # void
 */
    __pyx_v_handle = (__pyx_v_6uvloop_4loop___main_loop__->uv_signals->signals[__pyx_v_sig]);

    /* "uvloop/os_signal.pyx":59
 *     if __main_loop__.uv_signals is not None:
 *         handle = __main_loop__.uv_signals.signals[sig]
 *         if handle is not NULL:             # <<<<<<<<<<<<<<
 *             handle(sig)  # void
 * 
 */
    __pyx_t_3 = ((__pyx_v_handle != NULL) != 0);
    if (__pyx_t_3) {

      /* "uvloop/os_signal.pyx":60
 *         handle = __main_loop__.uv_signals.signals[sig]
 *         if handle is not NULL:
 *             handle(sig)  # void             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_v_handle(__pyx_v_sig);

      /* "uvloop/os_signal.pyx":59
 *     if __main_loop__.uv_signals is not None:
 *         handle = __main_loop__.uv_signals.signals[sig]
 *         if handle is not NULL:             # <<<<<<<<<<<<<<
 *             handle(sig)  # void
 * 
 */
    }

    /* "uvloop/os_signal.pyx":57
 *         return
 * 
 *     if __main_loop__.uv_signals is not None:             # <<<<<<<<<<<<<<
 *         handle = __main_loop__.uv_signals.signals[sig]
 *         if handle is not NULL:
 */
  }

  /* "uvloop/os_signal.pyx":43
 * 
 * 
 * cdef void __signal_handler_sigint(int sig) nogil:             # <<<<<<<<<<<<<<
 *     cdef sighandler_t handle
 * 
 */

  /* function exit code */
  __pyx_L0:;
}

/* "uvloop/os_signal.pyx":63
 * 
 * 
 * cdef __signal_set_sigint():             # <<<<<<<<<<<<<<
 *     cdef sigaction_t sa
 *     memset(&sa, 0, sizeof(sa))
 */

static PyObject *__pyx_f_6uvloop_4loop___signal_set_sigint(void) {
  struct sigaction __pyx_v_sa;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__signal_set_sigint", 0);

  /* "uvloop/os_signal.pyx":65
 * cdef __signal_set_sigint():
 *     cdef sigaction_t sa
 *     memset(&sa, 0, sizeof(sa))             # <<<<<<<<<<<<<<
 *     if sigfillset(&sa.sa_mask):
 *         raise RuntimeError(
 */
  memset((&__pyx_v_sa), 0, (sizeof(__pyx_v_sa)));

  /* "uvloop/os_signal.pyx":66
 *     cdef sigaction_t sa
 *     memset(&sa, 0, sizeof(sa))
 *     if sigfillset(&sa.sa_mask):             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             'failed to set SIGINT signal (sigfillset failed)')
 */
  __pyx_t_1 = (sigfillset((&__pyx_v_sa.sa_mask)) != 0);
  if (__pyx_t_1) {

    /* "uvloop/os_signal.pyx":67
 *     memset(&sa, 0, sizeof(sa))
 *     if sigfillset(&sa.sa_mask):
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             'failed to set SIGINT signal (sigfillset failed)')
 *     sa.sa_handler = __signal_handler_sigint
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__123, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(21, 67, __pyx_L1_error)

    /* "uvloop/os_signal.pyx":66
 *     cdef sigaction_t sa
 *     memset(&sa, 0, sizeof(sa))
 *     if sigfillset(&sa.sa_mask):             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             'failed to set SIGINT signal (sigfillset failed)')
 */
  }

  /* "uvloop/os_signal.pyx":69
 *         raise RuntimeError(
 *             'failed to set SIGINT signal (sigfillset failed)')
 *     sa.sa_handler = __signal_handler_sigint             # <<<<<<<<<<<<<<
 *     if sigaction(SIGINT, &sa, NULL):
 *         raise convert_error(-errno.errno)
 */
  __pyx_v_sa.sa_handler = __pyx_f_6uvloop_4loop___signal_handler_sigint;

  /* "uvloop/os_signal.pyx":70
 *             'failed to set SIGINT signal (sigfillset failed)')
 *     sa.sa_handler = __signal_handler_sigint
 *     if sigaction(SIGINT, &sa, NULL):             # <<<<<<<<<<<<<<
 *         raise convert_error(-errno.errno)
 */
  __pyx_t_1 = (sigaction(SIGINT, (&__pyx_v_sa), NULL) != 0);
  if (__pyx_t_1) {

    /* "uvloop/os_signal.pyx":71
 *     sa.sa_handler = __signal_handler_sigint
 *     if sigaction(SIGINT, &sa, NULL):
 *         raise convert_error(-errno.errno)             # <<<<<<<<<<<<<<
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error((-errno)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(21, 71, __pyx_L1_error)

    /* "uvloop/os_signal.pyx":70
 *             'failed to set SIGINT signal (sigfillset failed)')
 *     sa.sa_handler = __signal_handler_sigint
 *     if sigaction(SIGINT, &sa, NULL):             # <<<<<<<<<<<<<<
 *         raise convert_error(-errno.errno)
 */
  }

  /* "uvloop/os_signal.pyx":63
 * 
 * 
 * cdef __signal_set_sigint():             # <<<<<<<<<<<<<<
 *     cdef sigaction_t sa
 *     memset(&sa, 0, sizeof(sa))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__signal_set_sigint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "uvloop/loop.pyx":1873
 * # Install PyMem* memory allocators
 * cdef vint __mem_installed = 0
 * cdef __install_pymem():             # <<<<<<<<<<<<<<
 *     global __mem_installed
 *     if __mem_installed:
 */

static PyObject *__pyx_f_6uvloop_4loop___install_pymem(void) {
  int __pyx_v_err;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__install_pymem", 0);

  /* "uvloop/loop.pyx":1875
 * cdef __install_pymem():
 *     global __mem_installed
 *     if __mem_installed:             # <<<<<<<<<<<<<<
 *         return
 *     __mem_installed = 1
 */
  __pyx_t_1 = (__pyx_v_6uvloop_4loop___mem_installed != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1876
 *     global __mem_installed
 *     if __mem_installed:
 *         return             # <<<<<<<<<<<<<<
 *     __mem_installed = 1
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "uvloop/loop.pyx":1875
 * cdef __install_pymem():
 *     global __mem_installed
 *     if __mem_installed:             # <<<<<<<<<<<<<<
 *         return
 *     __mem_installed = 1
 */
  }

  /* "uvloop/loop.pyx":1877
 *     if __mem_installed:
 *         return
 *     __mem_installed = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef int err
 */
  __pyx_v_6uvloop_4loop___mem_installed = 1;

  /* "uvloop/loop.pyx":1880
 * 
 *     cdef int err
 *     err = uv.uv_replace_allocator(<uv.uv_malloc_func>PyMem_Malloc,             # <<<<<<<<<<<<<<
 *                                   <uv.uv_realloc_func>PyMem_Realloc,
 *                                   <uv.uv_calloc_func>PyMem_Calloc,
 */
  __pyx_v_err = uv_replace_allocator(((uv_malloc_func)PyMem_Malloc), ((uv_realloc_func)PyMem_Realloc), ((uv_calloc_func)PyMem_Calloc), ((uv_free_func)PyMem_Free));

  /* "uvloop/loop.pyx":1884
 *                                   <uv.uv_calloc_func>PyMem_Calloc,
 *                                   <uv.uv_free_func>PyMem_Free)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         __mem_installed = 0
 *         raise convert_error(err)
 */
  __pyx_t_1 = ((__pyx_v_err < 0) != 0);
  if (__pyx_t_1) {

    /* "uvloop/loop.pyx":1885
 *                                   <uv.uv_free_func>PyMem_Free)
 *     if err < 0:
 *         __mem_installed = 0             # <<<<<<<<<<<<<<
 *         raise convert_error(err)
 */
    __pyx_v_6uvloop_4loop___mem_installed = 0;

    /* "uvloop/loop.pyx":1886
 *     if err < 0:
 *         __mem_installed = 0
 *         raise convert_error(err)             # <<<<<<<<<<<<<<
 */
    __pyx_t_2 = __pyx_f_6uvloop_4loop_convert_error(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 1886, __pyx_L1_error)

    /* "uvloop/loop.pyx":1884
 *                                   <uv.uv_calloc_func>PyMem_Calloc,
 *                                   <uv.uv_free_func>PyMem_Free)
 *     if err < 0:             # <<<<<<<<<<<<<<
 *         __mem_installed = 0
 *         raise convert_error(err)
 */
  }

  /* "uvloop/loop.pyx":1873
 * # Install PyMem* memory allocators
 * cdef vint __mem_installed = 0
 * cdef __install_pymem():             # <<<<<<<<<<<<<<
 *     global __mem_installed
 *     if __mem_installed:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("uvloop.loop.__install_pymem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_6uvloop_4loop_UVHandle __pyx_vtable_6uvloop_4loop_UVHandle;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVHandle(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVHandle *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVHandle *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_UVHandle;
  p->_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_8UVHandle_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVHandle(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVHandle *p = (struct __pyx_obj_6uvloop_4loop_UVHandle *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_6uvloop_4loop_8UVHandle_5__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_loop);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVHandle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVHandle *p = (struct __pyx_obj_6uvloop_4loop_UVHandle *)o;
  if (p->_loop) {
    e = (*v)(((PyObject*)p->_loop), a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVHandle[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVHandle = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVHandle", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVHandle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "A base class for all libuv handles.\n\n    Automatically manages memory deallocation and closing.\n\n    Important:\n\n       1. call \"_ensure_alive()\" before calling any libuv functions on\n          your handles.\n\n       2. call \"__ensure_handle_data\" in *all* libuv handle callbacks.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVHandle, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVHandle, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVHandle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVAsync __pyx_vtable_6uvloop_4loop_UVAsync;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVAsync(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVAsync *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVAsync;
  p->ctx = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVAsync(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVAsync *p = (struct __pyx_obj_6uvloop_4loop_UVAsync *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->ctx);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVAsync(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVAsync *p = (struct __pyx_obj_6uvloop_4loop_UVAsync *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->ctx) {
    e = (*v)(p->ctx, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UVAsync = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVAsync", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVAsync), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVAsync, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVAsync, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVAsync, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVTimer __pyx_vtable_6uvloop_4loop_UVTimer;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVTimer(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVTimer *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVTimer;
  p->ctx = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVTimer(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVTimer *p = (struct __pyx_obj_6uvloop_4loop_UVTimer *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->ctx);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVTimer(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVTimer *p = (struct __pyx_obj_6uvloop_4loop_UVTimer *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->ctx) {
    e = (*v)(p->ctx, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UVTimer = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVTimer", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVTimer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVTimer, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVTimer, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVTimer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVSignal __pyx_vtable_6uvloop_4loop_UVSignal;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVSignal(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVSignal *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVSignal;
  p->h = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVSignal(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVSignal *p = (struct __pyx_obj_6uvloop_4loop_UVSignal *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->h);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVSignal(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVSignal *p = (struct __pyx_obj_6uvloop_4loop_UVSignal *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->h) {
    e = (*v)(((PyObject*)p->h), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UVSignal = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVSignal", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVSignal), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVSignal, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVSignal, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVSignal, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVIdle __pyx_vtable_6uvloop_4loop_UVIdle;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVIdle(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVIdle *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVIdle;
  p->h = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVIdle(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVIdle *p = (struct __pyx_obj_6uvloop_4loop_UVIdle *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->h);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVIdle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVIdle *p = (struct __pyx_obj_6uvloop_4loop_UVIdle *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->h) {
    e = (*v)(((PyObject*)p->h), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UVIdle = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVIdle", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVIdle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVIdle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVIdle, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVIdle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_Loop __pyx_vtable_6uvloop_4loop_Loop;

static PyObject *__pyx_tp_new_6uvloop_4loop_Loop(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_Loop *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_Loop *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_Loop;
  p->py_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)Py_None); Py_INCREF(Py_None);
  p->uv_signals = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)Py_None); Py_INCREF(Py_None);
  p->_task_factory = Py_None; Py_INCREF(Py_None);
  p->_exception_handler = Py_None; Py_INCREF(Py_None);
  p->_default_executor = Py_None; Py_INCREF(Py_None);
  p->_ready = Py_None; Py_INCREF(Py_None);
  p->_timers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_polls = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_polls_gc = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_signal_handlers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->handler_async = ((struct __pyx_obj_6uvloop_4loop_UVAsync *)Py_None); Py_INCREF(Py_None);
  p->handler_idle = ((struct __pyx_obj_6uvloop_4loop_UVIdle *)Py_None); Py_INCREF(Py_None);
  p->handler_sigint = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)Py_None); Py_INCREF(Py_None);
  p->handler_sighup = ((struct __pyx_obj_6uvloop_4loop_UVSignal *)Py_None); Py_INCREF(Py_None);
  p->_last_error = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_4Loop_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_Loop(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_Loop *p = (struct __pyx_obj_6uvloop_4loop_Loop *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_6uvloop_4loop_4Loop_5__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  Py_CLEAR(p->py_signals);
  Py_CLEAR(p->uv_signals);
  Py_CLEAR(p->_task_factory);
  Py_CLEAR(p->_exception_handler);
  Py_CLEAR(p->_default_executor);
  Py_CLEAR(p->_ready);
  Py_CLEAR(p->_timers);
  Py_CLEAR(p->_polls);
  Py_CLEAR(p->_polls_gc);
  Py_CLEAR(p->_signal_handlers);
  Py_CLEAR(p->handler_async);
  Py_CLEAR(p->handler_idle);
  Py_CLEAR(p->handler_sigint);
  Py_CLEAR(p->handler_sighup);
  Py_CLEAR(p->_last_error);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_Loop(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_Loop *p = (struct __pyx_obj_6uvloop_4loop_Loop *)o;
  if (p->py_signals) {
    e = (*v)(((PyObject*)p->py_signals), a); if (e) return e;
  }
  if (p->uv_signals) {
    e = (*v)(((PyObject*)p->uv_signals), a); if (e) return e;
  }
  if (p->_task_factory) {
    e = (*v)(p->_task_factory, a); if (e) return e;
  }
  if (p->_exception_handler) {
    e = (*v)(p->_exception_handler, a); if (e) return e;
  }
  if (p->_default_executor) {
    e = (*v)(p->_default_executor, a); if (e) return e;
  }
  if (p->_ready) {
    e = (*v)(p->_ready, a); if (e) return e;
  }
  if (p->_timers) {
    e = (*v)(p->_timers, a); if (e) return e;
  }
  if (p->_polls) {
    e = (*v)(p->_polls, a); if (e) return e;
  }
  if (p->_polls_gc) {
    e = (*v)(p->_polls_gc, a); if (e) return e;
  }
  if (p->_signal_handlers) {
    e = (*v)(p->_signal_handlers, a); if (e) return e;
  }
  if (p->handler_async) {
    e = (*v)(((PyObject*)p->handler_async), a); if (e) return e;
  }
  if (p->handler_idle) {
    e = (*v)(((PyObject*)p->handler_idle), a); if (e) return e;
  }
  if (p->handler_sigint) {
    e = (*v)(((PyObject*)p->handler_sigint), a); if (e) return e;
  }
  if (p->handler_sighup) {
    e = (*v)(((PyObject*)p->handler_sighup), a); if (e) return e;
  }
  if (p->_last_error) {
    e = (*v)(p->_last_error, a); if (e) return e;
  }
  return 0;
}

static PyObject *__pyx_getprop_6uvloop_4loop_4Loop__closed(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6uvloop_4loop_4Loop_7_closed_1__get__(o);
}

static PyMethodDef __pyx_methods_6uvloop_4loop_Loop[] = {
  {"call_soon", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_9call_soon, METH_VARARGS|METH_KEYWORDS, 0},
  {"call_soon_threadsafe", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_11call_soon_threadsafe, METH_VARARGS|METH_KEYWORDS, 0},
  {"call_later", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_13call_later, METH_VARARGS|METH_KEYWORDS, 0},
  {"call_at", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_15call_at, METH_VARARGS|METH_KEYWORDS, 0},
  {"time", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_17time, METH_NOARGS, 0},
  {"stop", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_19stop, METH_NOARGS, 0},
  {"run_forever", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_21run_forever, METH_NOARGS, 0},
  {"close", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_23close, METH_NOARGS, 0},
  {"get_debug", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_25get_debug, METH_NOARGS, 0},
  {"set_debug", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_27set_debug, METH_O, 0},
  {"is_running", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_29is_running, METH_NOARGS, 0},
  {"is_closed", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_31is_closed, METH_NOARGS, 0},
  {"create_task", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_33create_task, METH_O, 0},
  {"set_task_factory", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_35set_task_factory, METH_O, 0},
  {"get_task_factory", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_37get_task_factory, METH_NOARGS, 0},
  {"run_until_complete", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_39run_until_complete, METH_O, 0},
  {"getaddrinfo", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_41getaddrinfo, METH_VARARGS|METH_KEYWORDS, 0},
  {"getnameinfo", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_43getnameinfo, METH_VARARGS|METH_KEYWORDS, 0},
  {"create_server", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_46create_server, METH_VARARGS|METH_KEYWORDS, 0},
  {"create_connection", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_49create_connection, METH_VARARGS|METH_KEYWORDS, 0},
  {"create_unix_server", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_52create_unix_server, METH_VARARGS|METH_KEYWORDS, 0},
  {"create_unix_connection", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_55create_unix_connection, METH_VARARGS|METH_KEYWORDS, 0},
  {"default_exception_handler", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_58default_exception_handler, METH_O, 0},
  {"set_exception_handler", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_60set_exception_handler, METH_O, 0},
  {"call_exception_handler", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_62call_exception_handler, METH_O, 0},
  {"add_reader", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_64add_reader, METH_VARARGS|METH_KEYWORDS, 0},
  {"remove_reader", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_66remove_reader, METH_O, 0},
  {"add_writer", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_68add_writer, METH_VARARGS|METH_KEYWORDS, 0},
  {"remove_writer", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_70remove_writer, METH_O, 0},
  {"sock_recv", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_72sock_recv, METH_VARARGS|METH_KEYWORDS, 0},
  {"sock_sendall", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_74sock_sendall, METH_VARARGS|METH_KEYWORDS, 0},
  {"sock_accept", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_76sock_accept, METH_O, 0},
  {"sock_connect", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_78sock_connect, METH_VARARGS|METH_KEYWORDS, 0},
  {"run_in_executor", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_80run_in_executor, METH_VARARGS|METH_KEYWORDS, 0},
  {"set_default_executor", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_82set_default_executor, METH_O, 0},
  {"__subprocess_run", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_84__subprocess_run, METH_VARARGS|METH_KEYWORDS, 0},
  {"subprocess_shell", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_87subprocess_shell, METH_VARARGS|METH_KEYWORDS, 0},
  {"subprocess_exec", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_89subprocess_exec, METH_VARARGS|METH_KEYWORDS, 0},
  {"connect_read_pipe", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_91connect_read_pipe, METH_VARARGS|METH_KEYWORDS, 0},
  {"connect_write_pipe", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_94connect_write_pipe, METH_VARARGS|METH_KEYWORDS, 0},
  {"add_signal_handler", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_97add_signal_handler, METH_VARARGS|METH_KEYWORDS, 0},
  {"remove_signal_handler", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_99remove_signal_handler, METH_O, 0},
  {"create_datagram_endpoint", (PyCFunction)__pyx_pw_6uvloop_4loop_4Loop_101create_datagram_endpoint, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6uvloop_4loop_Loop[] = {
  {(char *)"_closed", __pyx_getprop_6uvloop_4loop_4Loop__closed, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_Loop = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.Loop", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_Loop), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_Loop, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_4Loop_7__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_Loop, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_Loop, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6uvloop_4loop_Loop, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_6uvloop_4loop_4Loop_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_Loop, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_Handle __pyx_vtable_6uvloop_4loop_Handle;

static struct __pyx_obj_6uvloop_4loop_Handle *__pyx_freelist_6uvloop_4loop_Handle[250];
static int __pyx_freecount_6uvloop_4loop_Handle = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop_Handle(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_Handle *p;
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop_Handle > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_Handle)) & ((t->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop_Handle[--__pyx_freecount_6uvloop_4loop_Handle];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop_Handle));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
      o = (*t->tp_alloc)(t, 0);
    } else {
      o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
    }
    if (unlikely(!o)) return 0;
  }
  p = ((struct __pyx_obj_6uvloop_4loop_Handle *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_Handle;
  p->loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  p->meth_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->arg1 = Py_None; Py_INCREF(Py_None);
  p->arg2 = Py_None; Py_INCREF(Py_None);
  p->arg3 = Py_None; Py_INCREF(Py_None);
  p->arg4 = Py_None; Py_INCREF(Py_None);
  p->arg5 = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_6Handle_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_Handle(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_Handle *p = (struct __pyx_obj_6uvloop_4loop_Handle *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  Py_CLEAR(p->loop);
  Py_CLEAR(p->meth_name);
  Py_CLEAR(p->arg1);
  Py_CLEAR(p->arg2);
  Py_CLEAR(p->arg3);
  Py_CLEAR(p->arg4);
  Py_CLEAR(p->arg5);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop_Handle < 250) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_Handle)) & ((Py_TYPE(o)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    __pyx_freelist_6uvloop_4loop_Handle[__pyx_freecount_6uvloop_4loop_Handle++] = ((struct __pyx_obj_6uvloop_4loop_Handle *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop_Handle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_Handle *p = (struct __pyx_obj_6uvloop_4loop_Handle *)o;
  if (p->loop) {
    e = (*v)(((PyObject*)p->loop), a); if (e) return e;
  }
  if (p->arg1) {
    e = (*v)(p->arg1, a); if (e) return e;
  }
  if (p->arg2) {
    e = (*v)(p->arg2, a); if (e) return e;
  }
  if (p->arg3) {
    e = (*v)(p->arg3, a); if (e) return e;
  }
  if (p->arg4) {
    e = (*v)(p->arg4, a); if (e) return e;
  }
  if (p->arg5) {
    e = (*v)(p->arg5, a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_Handle[] = {
  {"cancel", (PyCFunction)__pyx_pw_6uvloop_4loop_6Handle_7cancel, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_Handle = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.Handle", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_Handle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_Handle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_6Handle_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_Handle, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_Handle, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_6uvloop_4loop_6Handle_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_Handle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_TimerHandle __pyx_vtable_6uvloop_4loop_TimerHandle;

static struct __pyx_obj_6uvloop_4loop_TimerHandle *__pyx_freelist_6uvloop_4loop_TimerHandle[250];
static int __pyx_freecount_6uvloop_4loop_TimerHandle = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop_TimerHandle(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_TimerHandle *p;
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop_TimerHandle > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_TimerHandle)) & ((t->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop_TimerHandle[--__pyx_freecount_6uvloop_4loop_TimerHandle];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop_TimerHandle));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
      o = (*t->tp_alloc)(t, 0);
    } else {
      o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
    }
    if (unlikely(!o)) return 0;
  }
  p = ((struct __pyx_obj_6uvloop_4loop_TimerHandle *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_TimerHandle;
  p->callback = Py_None; Py_INCREF(Py_None);
  p->args = Py_None; Py_INCREF(Py_None);
  p->timer = ((struct __pyx_obj_6uvloop_4loop_UVTimer *)Py_None); Py_INCREF(Py_None);
  p->loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_11TimerHandle_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_TimerHandle(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_TimerHandle *p = (struct __pyx_obj_6uvloop_4loop_TimerHandle *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  Py_CLEAR(p->callback);
  Py_CLEAR(p->args);
  Py_CLEAR(p->timer);
  Py_CLEAR(p->loop);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop_TimerHandle < 250) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_TimerHandle)) & ((Py_TYPE(o)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    __pyx_freelist_6uvloop_4loop_TimerHandle[__pyx_freecount_6uvloop_4loop_TimerHandle++] = ((struct __pyx_obj_6uvloop_4loop_TimerHandle *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop_TimerHandle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_TimerHandle *p = (struct __pyx_obj_6uvloop_4loop_TimerHandle *)o;
  if (p->callback) {
    e = (*v)(p->callback, a); if (e) return e;
  }
  if (p->args) {
    e = (*v)(p->args, a); if (e) return e;
  }
  if (p->timer) {
    e = (*v)(((PyObject*)p->timer), a); if (e) return e;
  }
  if (p->loop) {
    e = (*v)(((PyObject*)p->loop), a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_TimerHandle[] = {
  {"cancel", (PyCFunction)__pyx_pw_6uvloop_4loop_11TimerHandle_5cancel, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_TimerHandle = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.TimerHandle", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_TimerHandle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_TimerHandle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_11TimerHandle_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_TimerHandle, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_TimerHandle, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_TimerHandle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVSocketHandle __pyx_vtable_6uvloop_4loop_UVSocketHandle;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVSocketHandle(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVSocketHandle *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVSocketHandle;
  p->_fileobj = Py_None; Py_INCREF(Py_None);
  p->__pyx___cached_socket = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_14UVSocketHandle_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVSocketHandle(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVSocketHandle *p = (struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_fileobj);
  Py_CLEAR(p->__pyx___cached_socket);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVSocketHandle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVSocketHandle *p = (struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->_fileobj) {
    e = (*v)(p->_fileobj, a); if (e) return e;
  }
  if (p->__pyx___cached_socket) {
    e = (*v)(p->__pyx___cached_socket, a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVSocketHandle[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVSocketHandle = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVSocketHandle", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVSocketHandle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVSocketHandle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVSocketHandle, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVSocketHandle, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVSocketHandle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVPoll __pyx_vtable_6uvloop_4loop_UVPoll;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVPoll(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVPoll *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVPoll;
  p->reading_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None); Py_INCREF(Py_None);
  p->writing_handle = ((struct __pyx_obj_6uvloop_4loop_Handle *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVPoll(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVPoll *p = (struct __pyx_obj_6uvloop_4loop_UVPoll *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->reading_handle);
  Py_CLEAR(p->writing_handle);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVPoll(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVPoll *p = (struct __pyx_obj_6uvloop_4loop_UVPoll *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->reading_handle) {
    e = (*v)(((PyObject*)p->reading_handle), a); if (e) return e;
  }
  if (p->writing_handle) {
    e = (*v)(((PyObject*)p->writing_handle), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UVPoll = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVPoll", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVPoll), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVPoll, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVPoll, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVPoll, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVBaseTransport __pyx_vtable_6uvloop_4loop_UVBaseTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVBaseTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVBaseTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVSocketHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVBaseTransport;
  p->_protocol_data_received = Py_None; Py_INCREF(Py_None);
  p->_protocol = Py_None; Py_INCREF(Py_None);
  p->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None); Py_INCREF(Py_None);
  p->_waiter = Py_None; Py_INCREF(Py_None);
  p->_extra_info = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_15UVBaseTransport_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVBaseTransport *p = (struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_protocol_data_received);
  Py_CLEAR(p->_protocol);
  Py_CLEAR(p->_server);
  Py_CLEAR(p->_waiter);
  Py_CLEAR(p->_extra_info);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVSocketHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVBaseTransport *p = (struct __pyx_obj_6uvloop_4loop_UVBaseTransport *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVSocketHandle(o, v, a); if (e) return e;
  if (p->_protocol_data_received) {
    e = (*v)(p->_protocol_data_received, a); if (e) return e;
  }
  if (p->_protocol) {
    e = (*v)(p->_protocol, a); if (e) return e;
  }
  if (p->_server) {
    e = (*v)(((PyObject*)p->_server), a); if (e) return e;
  }
  if (p->_waiter) {
    e = (*v)(p->_waiter, a); if (e) return e;
  }
  if (p->_extra_info) {
    e = (*v)(p->_extra_info, a); if (e) return e;
  }
  return 0;
}

static PyObject *__pyx_getprop_6uvloop_4loop_15UVBaseTransport__paused(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6uvloop_4loop_15UVBaseTransport_7_paused_1__get__(o);
}

static PyObject *__pyx_getprop_6uvloop_4loop_15UVBaseTransport__closing(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6uvloop_4loop_15UVBaseTransport_8_closing_1__get__(o);
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVBaseTransport[] = {
  {"_force_close", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_3_force_close, METH_O, 0},
  {"abort", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_5abort, METH_NOARGS, 0},
  {"close", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_7close, METH_NOARGS, 0},
  {"is_closing", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_9is_closing, METH_NOARGS, 0},
  {"get_write_buffer_size", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_11get_write_buffer_size, METH_NOARGS, 0},
  {"set_write_buffer_limits", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_13set_write_buffer_limits, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_write_buffer_limits", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_15get_write_buffer_limits, METH_NOARGS, 0},
  {"get_extra_info", (PyCFunction)__pyx_pw_6uvloop_4loop_15UVBaseTransport_17get_extra_info, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6uvloop_4loop_UVBaseTransport[] = {
  {(char *)"_paused", __pyx_getprop_6uvloop_4loop_15UVBaseTransport__paused, 0, (char *)0, 0},
  {(char *)"_closing", __pyx_getprop_6uvloop_4loop_15UVBaseTransport__closing, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVBaseTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVBaseTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVBaseTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVBaseTransport, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6uvloop_4loop_UVBaseTransport, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVBaseTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVStream __pyx_vtable_6uvloop_4loop_UVStream;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVStream(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVStream *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVBaseTransport(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVStream *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVStream;
  if (unlikely(__pyx_pw_6uvloop_4loop_8UVStream_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVStream[] = {
  {"write", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_5write, METH_O, 0},
  {"writelines", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_7writelines, METH_O, 0},
  {"write_eof", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_9write_eof, METH_NOARGS, 0},
  {"can_write_eof", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_11can_write_eof, METH_NOARGS, 0},
  {"pause_reading", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_13pause_reading, METH_NOARGS, 0},
  {"resume_reading", (PyCFunction)__pyx_pw_6uvloop_4loop_8UVStream_15resume_reading, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVStream = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVStream", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVStream), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_8UVStream_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVStream, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVStream, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVStreamServer __pyx_vtable_6uvloop_4loop_UVStreamServer;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVStreamServer(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVStreamServer *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVSocketHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVStreamServer *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVStreamServer;
  p->ssl = Py_None; Py_INCREF(Py_None);
  p->protocol_factory = Py_None; Py_INCREF(Py_None);
  p->_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_14UVStreamServer_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVStreamServer(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVStreamServer *p = (struct __pyx_obj_6uvloop_4loop_UVStreamServer *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->ssl);
  Py_CLEAR(p->protocol_factory);
  Py_CLEAR(p->_server);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVSocketHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVStreamServer(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVStreamServer *p = (struct __pyx_obj_6uvloop_4loop_UVStreamServer *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVSocketHandle(o, v, a); if (e) return e;
  if (p->ssl) {
    e = (*v)(p->ssl, a); if (e) return e;
  }
  if (p->protocol_factory) {
    e = (*v)(p->protocol_factory, a); if (e) return e;
  }
  if (p->_server) {
    e = (*v)(((PyObject*)p->_server), a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVStreamServer[] = {
  {"__on_ssl_connected", (PyCFunction)__pyx_pw_6uvloop_4loop_14UVStreamServer_3__on_ssl_connected, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVStreamServer = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVStreamServer", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVStreamServer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVStreamServer, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVStreamServer, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVStreamServer, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVStreamServer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_TCPServer __pyx_vtable_6uvloop_4loop_TCPServer;

static PyObject *__pyx_tp_new_6uvloop_4loop_TCPServer(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_TCPServer *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStreamServer(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_TCPServer *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_TCPServer;
  return o;
}

static PyTypeObject __pyx_type_6uvloop_4loop_TCPServer = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.TCPServer", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_TCPServer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVStreamServer, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVStreamServer, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_TCPServer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_TCPTransport __pyx_vtable_6uvloop_4loop_TCPTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_TCPTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_TCPTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStream(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_TCPTransport;
  return o;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_TCPTransport[] = {
  {"get_extra_info", (PyCFunction)__pyx_pw_6uvloop_4loop_12TCPTransport_1get_extra_info, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_TCPTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.TCPTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_TCPTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVStream_3__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_TCPTransport, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_TCPTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UnixServer __pyx_vtable_6uvloop_4loop_UnixServer;

static PyObject *__pyx_tp_new_6uvloop_4loop_UnixServer(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UnixServer *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStreamServer(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UnixServer *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UnixServer;
  return o;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UnixServer = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UnixServer", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UnixServer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVStreamServer, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVStreamServer, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UnixServer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UnixTransport __pyx_vtable_6uvloop_4loop_UnixTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_UnixTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UnixTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStream(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UnixTransport;
  return o;
}

static PyTypeObject __pyx_type_6uvloop_4loop_UnixTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UnixTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UnixTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVStream_3__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UnixTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_ReadUnixTransport __pyx_vtable_6uvloop_4loop_ReadUnixTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_ReadUnixTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStream(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_ReadUnixTransport;
  return o;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_ReadUnixTransport[] = {
  {"get_write_buffer_limits", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_1get_write_buffer_limits, METH_NOARGS, 0},
  {"set_write_buffer_limits", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_3set_write_buffer_limits, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_write_buffer_size", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_5get_write_buffer_size, METH_NOARGS, 0},
  {"write", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_7write, METH_O, 0},
  {"writelines", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_9writelines, METH_O, 0},
  {"write_eof", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_11write_eof, METH_NOARGS, 0},
  {"can_write_eof", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_13can_write_eof, METH_NOARGS, 0},
  {"abort", (PyCFunction)__pyx_pw_6uvloop_4loop_17ReadUnixTransport_15abort, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_ReadUnixTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.ReadUnixTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVStream_3__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_ReadUnixTransport, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_ReadUnixTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_WriteUnixTransport __pyx_vtable_6uvloop_4loop_WriteUnixTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_WriteUnixTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVStream(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_WriteUnixTransport;
  return o;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_WriteUnixTransport[] = {
  {"pause_reading", (PyCFunction)__pyx_pw_6uvloop_4loop_18WriteUnixTransport_1pause_reading, METH_NOARGS, 0},
  {"resume_reading", (PyCFunction)__pyx_pw_6uvloop_4loop_18WriteUnixTransport_3resume_reading, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_WriteUnixTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.WriteUnixTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVStream_3__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_WriteUnixTransport, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_WriteUnixTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVProcess __pyx_vtable_6uvloop_4loop_UVProcess;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVProcess(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVProcess *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVHandle(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVProcess *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVProcess;
  p->_returncode = Py_None; Py_INCREF(Py_None);
  p->_pid = Py_None; Py_INCREF(Py_None);
  p->_fds_to_close = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->__pyx___env = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->__pyx___args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->__pyx___cwd = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_9UVProcess_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVProcess(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVProcess *p = (struct __pyx_obj_6uvloop_4loop_UVProcess *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_returncode);
  Py_CLEAR(p->_pid);
  Py_CLEAR(p->_fds_to_close);
  Py_CLEAR(p->__pyx___env);
  Py_CLEAR(p->__pyx___args);
  Py_CLEAR(p->__pyx___cwd);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVHandle(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVProcess(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVProcess *p = (struct __pyx_obj_6uvloop_4loop_UVProcess *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVHandle(o, v, a); if (e) return e;
  if (p->_returncode) {
    e = (*v)(p->_returncode, a); if (e) return e;
  }
  if (p->_pid) {
    e = (*v)(p->_pid, a); if (e) return e;
  }
  if (p->_fds_to_close) {
    e = (*v)(p->_fds_to_close, a); if (e) return e;
  }
  if (p->__pyx___env) {
    e = (*v)(p->__pyx___env, a); if (e) return e;
  }
  if (p->__pyx___args) {
    e = (*v)(p->__pyx___args, a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVProcess[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVProcess = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVProcess", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVProcess), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVProcess, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "Abstract class; wrapper over uv_process_t handle.", /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVProcess, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVProcess, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVProcess, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVProcessTransport __pyx_vtable_6uvloop_4loop_UVProcessTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVProcessTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVProcess(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UVProcessTransport;
  p->_exit_waiters = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_init_futs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_pending_calls = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_protocol = Py_None; Py_INCREF(Py_None);
  p->stdin = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)Py_None); Py_INCREF(Py_None);
  p->stdout = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)Py_None); Py_INCREF(Py_None);
  p->stderr = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)Py_None); Py_INCREF(Py_None);
  p->stdin_proto = Py_None; Py_INCREF(Py_None);
  p->stdout_proto = Py_None; Py_INCREF(Py_None);
  p->stderr_proto = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_18UVProcessTransport_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVProcessTransport(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *p = (struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_exit_waiters);
  Py_CLEAR(p->_init_futs);
  Py_CLEAR(p->_pending_calls);
  Py_CLEAR(p->_protocol);
  Py_CLEAR(p->stdin);
  Py_CLEAR(p->stdout);
  Py_CLEAR(p->stderr);
  Py_CLEAR(p->stdin_proto);
  Py_CLEAR(p->stdout_proto);
  Py_CLEAR(p->stderr_proto);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVProcess(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVProcessTransport(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVProcessTransport *p = (struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVProcess(o, v, a); if (e) return e;
  if (p->_exit_waiters) {
    e = (*v)(p->_exit_waiters, a); if (e) return e;
  }
  if (p->_init_futs) {
    e = (*v)(p->_init_futs, a); if (e) return e;
  }
  if (p->_pending_calls) {
    e = (*v)(p->_pending_calls, a); if (e) return e;
  }
  if (p->_protocol) {
    e = (*v)(p->_protocol, a); if (e) return e;
  }
  if (p->stdin) {
    e = (*v)(((PyObject*)p->stdin), a); if (e) return e;
  }
  if (p->stdout) {
    e = (*v)(((PyObject*)p->stdout), a); if (e) return e;
  }
  if (p->stderr) {
    e = (*v)(((PyObject*)p->stderr), a); if (e) return e;
  }
  if (p->stdin_proto) {
    e = (*v)(p->stdin_proto, a); if (e) return e;
  }
  if (p->stdout_proto) {
    e = (*v)(p->stdout_proto, a); if (e) return e;
  }
  if (p->stderr_proto) {
    e = (*v)(p->stderr_proto, a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVProcessTransport[] = {
  {"__stdio_inited", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_3__stdio_inited, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_pid", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_5get_pid, METH_NOARGS, 0},
  {"get_returncode", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_7get_returncode, METH_NOARGS, 0},
  {"get_pipe_transport", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_9get_pipe_transport, METH_O, 0},
  {"terminate", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_11terminate, METH_NOARGS, 0},
  {"kill", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_13kill, METH_NOARGS, 0},
  {"send_signal", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_15send_signal, METH_O, 0},
  {"is_closing", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_17is_closing, METH_NOARGS, 0},
  {"close", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_19close, METH_NOARGS, 0},
  {"get_extra_info", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_21get_extra_info, METH_VARARGS|METH_KEYWORDS, 0},
  {"_wait", (PyCFunction)__pyx_pw_6uvloop_4loop_18UVProcessTransport_23_wait, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVProcessTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVProcessTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVProcessTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVProcessTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVProcessTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVProcessTransport, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVProcessTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UVRequest __pyx_vtable_6uvloop_4loop_UVRequest;

static PyObject *__pyx_tp_new_6uvloop_4loop_UVRequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UVRequest *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UVRequest *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_UVRequest;
  p->loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_9UVRequest_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UVRequest(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UVRequest *p = (struct __pyx_obj_6uvloop_4loop_UVRequest *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_6uvloop_4loop_9UVRequest_3__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->loop);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UVRequest(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UVRequest *p = (struct __pyx_obj_6uvloop_4loop_UVRequest *)o;
  if (p->loop) {
    e = (*v)(((PyObject*)p->loop), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop_UVRequest(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop_UVRequest *p = (struct __pyx_obj_6uvloop_4loop_UVRequest *)o;
  tmp = ((PyObject*)p->loop);
  p->loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UVRequest[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UVRequest = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UVRequest", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UVRequest), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UVRequest, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "A base class for all libuv requests (uv_getaddrinfo_t, etc).\n\n    Important: it's a responsibility of the subclass to call the\n    \"on_done\" method in the request's callback.\n\n    If \"on_done\" isn't called, the request object will never die.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UVRequest, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop_UVRequest, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UVRequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UVRequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport __pyx_vtable_6uvloop_4loop_UDPTransport;

static PyObject *__pyx_tp_new_6uvloop_4loop_UDPTransport(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_UDPTransport *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVBaseTransport(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVHandle*)__pyx_vtabptr_6uvloop_4loop_UDPTransport;
  p->_cached_py_address = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_12UDPTransport_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_UDPTransport(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_UDPTransport *p = (struct __pyx_obj_6uvloop_4loop_UDPTransport *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_cached_py_address);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVBaseTransport(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_UDPTransport(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_UDPTransport *p = (struct __pyx_obj_6uvloop_4loop_UDPTransport *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVBaseTransport(o, v, a); if (e) return e;
  if (p->_cached_py_address) {
    e = (*v)(p->_cached_py_address, a); if (e) return e;
  }
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_UDPTransport[] = {
  {"sendto", (PyCFunction)__pyx_pw_6uvloop_4loop_12UDPTransport_3sendto, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_UDPTransport = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.UDPTransport", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_UDPTransport), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_UDPTransport, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_7__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_UDPTransport, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_UDPTransport, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_pw_6uvloop_4loop_8UVHandle_3__init__, /*tp_init*/
  #else
  0, /*tp_init*/
  #endif
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_UDPTransport, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_Server __pyx_vtable_6uvloop_4loop_Server;

static PyObject *__pyx_tp_new_6uvloop_4loop_Server(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_Server *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_Server *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_Server;
  p->_servers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_waiters = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_6Server_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_Server(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_Server *p = (struct __pyx_obj_6uvloop_4loop_Server *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_servers);
  Py_CLEAR(p->_waiters);
  Py_CLEAR(p->_loop);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_Server(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_Server *p = (struct __pyx_obj_6uvloop_4loop_Server *)o;
  if (p->_servers) {
    e = (*v)(p->_servers, a); if (e) return e;
  }
  if (p->_waiters) {
    e = (*v)(p->_waiters, a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(((PyObject*)p->_loop), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop_Server(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop_Server *p = (struct __pyx_obj_6uvloop_4loop_Server *)o;
  tmp = ((PyObject*)p->_servers);
  p->_servers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_waiters);
  p->_waiters = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6uvloop_4loop_6Server_sockets(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6uvloop_4loop_6Server_7sockets_1__get__(o);
}

static PyMethodDef __pyx_methods_6uvloop_4loop_Server[] = {
  {"wait_closed", (PyCFunction)__pyx_pw_6uvloop_4loop_6Server_5wait_closed, METH_NOARGS, 0},
  {"close", (PyCFunction)__pyx_pw_6uvloop_4loop_6Server_8close, METH_NOARGS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6uvloop_4loop_Server[] = {
  {(char *)"sockets", __pyx_getprop_6uvloop_4loop_6Server_sockets, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_Server = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.Server", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_Server), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_Server, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6uvloop_4loop_6Server_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_Server, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop_Server, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_Server, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6uvloop_4loop_Server, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_Server, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_SignalsStack __pyx_vtable_6uvloop_4loop_SignalsStack;

static PyObject *__pyx_tp_new_6uvloop_4loop_SignalsStack(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_SignalsStack *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_SignalsStack *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_SignalsStack;
  if (unlikely(__pyx_pw_6uvloop_4loop_12SignalsStack_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_SignalsStack(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_6uvloop_4loop_SignalsStack[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_SignalsStack = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.SignalsStack", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_SignalsStack), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_SignalsStack, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_SignalsStack, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_SignalsStack, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop__StreamWriteContext __pyx_vtable_6uvloop_4loop__StreamWriteContext;

static struct __pyx_obj_6uvloop_4loop__StreamWriteContext *__pyx_freelist_6uvloop_4loop__StreamWriteContext[250];
static int __pyx_freecount_6uvloop_4loop__StreamWriteContext = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop__StreamWriteContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *p;
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop__StreamWriteContext > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop__StreamWriteContext)) & ((t->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop__StreamWriteContext[--__pyx_freecount_6uvloop_4loop__StreamWriteContext];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop__StreamWriteContext));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
      o = (*t->tp_alloc)(t, 0);
    } else {
      o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
    }
    if (unlikely(!o)) return 0;
  }
  p = ((struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop__StreamWriteContext;
  p->stream = ((struct __pyx_obj_6uvloop_4loop_UVStream *)Py_None); Py_INCREF(Py_None);
  p->py_buf.obj = NULL;
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop__StreamWriteContext(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *p = (struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->stream);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop__StreamWriteContext < 250) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop__StreamWriteContext)) & ((Py_TYPE(o)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    __pyx_freelist_6uvloop_4loop__StreamWriteContext[__pyx_freecount_6uvloop_4loop__StreamWriteContext++] = ((struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop__StreamWriteContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop__StreamWriteContext *p = (struct __pyx_obj_6uvloop_4loop__StreamWriteContext *)o;
  if (p->stream) {
    e = (*v)(((PyObject*)p->stream), a); if (e) return e;
  }
  if (p->py_buf.obj) {
    e = (*v)(p->py_buf.obj, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop__StreamWriteContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop._StreamWriteContext", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop__StreamWriteContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop__StreamWriteContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop__StreamWriteContext, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop__StreamWriteContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop__TCPConnectRequest __pyx_vtable_6uvloop_4loop__TCPConnectRequest;

static PyObject *__pyx_tp_new_6uvloop_4loop__TCPConnectRequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVRequest(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVRequest*)__pyx_vtabptr_6uvloop_4loop__TCPConnectRequest;
  p->transport = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_18_TCPConnectRequest_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop__TCPConnectRequest(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->transport);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVRequest(o);
}

static int __pyx_tp_traverse_6uvloop_4loop__TCPConnectRequest(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVRequest(o, v, a); if (e) return e;
  if (p->transport) {
    e = (*v)(((PyObject*)p->transport), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop__TCPConnectRequest(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *)o;
  __pyx_tp_clear_6uvloop_4loop_UVRequest(o);
  tmp = ((PyObject*)p->transport);
  p->transport = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop__TCPConnectRequest[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop__TCPConnectRequest = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop._TCPConnectRequest", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop__TCPConnectRequest, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop__TCPConnectRequest, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop__TCPConnectRequest, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop__TCPConnectRequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop__TCPConnectRequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop__PipeConnectRequest __pyx_vtable_6uvloop_4loop__PipeConnectRequest;

static PyObject *__pyx_tp_new_6uvloop_4loop__PipeConnectRequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVRequest(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVRequest*)__pyx_vtabptr_6uvloop_4loop__PipeConnectRequest;
  p->transport = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_19_PipeConnectRequest_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop__PipeConnectRequest(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->transport);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVRequest(o);
}

static int __pyx_tp_traverse_6uvloop_4loop__PipeConnectRequest(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVRequest(o, v, a); if (e) return e;
  if (p->transport) {
    e = (*v)(((PyObject*)p->transport), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop__PipeConnectRequest(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *p = (struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *)o;
  __pyx_tp_clear_6uvloop_4loop_UVRequest(o);
  tmp = ((PyObject*)p->transport);
  p->transport = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop__PipeConnectRequest[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop__PipeConnectRequest = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop._PipeConnectRequest", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop__PipeConnectRequest, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop__PipeConnectRequest, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop__PipeConnectRequest, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop__PipeConnectRequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop__PipeConnectRequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_AddrInfo __pyx_vtable_6uvloop_4loop_AddrInfo;

static struct __pyx_obj_6uvloop_4loop_AddrInfo *__pyx_freelist_6uvloop_4loop_AddrInfo[250];
static int __pyx_freecount_6uvloop_4loop_AddrInfo = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop_AddrInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_AddrInfo *p;
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop_AddrInfo > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_AddrInfo)) & ((t->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop_AddrInfo[--__pyx_freecount_6uvloop_4loop_AddrInfo];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop_AddrInfo));
    (void) PyObject_INIT(o, t);
  } else {
    if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
      o = (*t->tp_alloc)(t, 0);
    } else {
      o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
    }
    if (unlikely(!o)) return 0;
  }
  p = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop_AddrInfo;
  if (unlikely(__pyx_pw_6uvloop_4loop_8AddrInfo_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_AddrInfo(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_6uvloop_4loop_8AddrInfo_3__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop_AddrInfo < 250) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop_AddrInfo)) & ((Py_TYPE(o)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    __pyx_freelist_6uvloop_4loop_AddrInfo[__pyx_freecount_6uvloop_4loop_AddrInfo++] = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static PyMethodDef __pyx_methods_6uvloop_4loop_AddrInfo[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_AddrInfo = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.AddrInfo", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_AddrInfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_AddrInfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_AddrInfo, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_AddrInfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_AddrInfoRequest __pyx_vtable_6uvloop_4loop_AddrInfoRequest;

static PyObject *__pyx_tp_new_6uvloop_4loop_AddrInfoRequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVRequest(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVRequest*)__pyx_vtabptr_6uvloop_4loop_AddrInfoRequest;
  p->callback = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_15AddrInfoRequest_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_AddrInfoRequest(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->callback);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVRequest(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_AddrInfoRequest(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVRequest(o, v, a); if (e) return e;
  if (p->callback) {
    e = (*v)(p->callback, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop_AddrInfoRequest(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_AddrInfoRequest *)o;
  __pyx_tp_clear_6uvloop_4loop_UVRequest(o);
  tmp = ((PyObject*)p->callback);
  p->callback = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_AddrInfoRequest[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_AddrInfoRequest = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.AddrInfoRequest", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_AddrInfoRequest), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_AddrInfoRequest, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_AddrInfoRequest, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop_AddrInfoRequest, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_AddrInfoRequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_AddrInfoRequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop_NameInfoRequest __pyx_vtable_6uvloop_4loop_NameInfoRequest;

static PyObject *__pyx_tp_new_6uvloop_4loop_NameInfoRequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *p;
  PyObject *o = __pyx_tp_new_6uvloop_4loop_UVRequest(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6uvloop_4loop_UVRequest*)__pyx_vtabptr_6uvloop_4loop_NameInfoRequest;
  p->callback = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6uvloop_4loop_15NameInfoRequest_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop_NameInfoRequest(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->callback);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_6uvloop_4loop_UVRequest(o);
}

static int __pyx_tp_traverse_6uvloop_4loop_NameInfoRequest(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)o;
  e = __pyx_tp_traverse_6uvloop_4loop_UVRequest(o, v, a); if (e) return e;
  if (p->callback) {
    e = (*v)(p->callback, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop_NameInfoRequest(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop_NameInfoRequest *p = (struct __pyx_obj_6uvloop_4loop_NameInfoRequest *)o;
  __pyx_tp_clear_6uvloop_4loop_UVRequest(o);
  tmp = ((PyObject*)p->callback);
  p->callback = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6uvloop_4loop_NameInfoRequest[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_6uvloop_4loop_NameInfoRequest = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.NameInfoRequest", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop_NameInfoRequest), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop_NameInfoRequest, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop_NameInfoRequest, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop_NameInfoRequest, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6uvloop_4loop_NameInfoRequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop_NameInfoRequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_6uvloop_4loop__UDPSendContext __pyx_vtable_6uvloop_4loop__UDPSendContext;

static struct __pyx_obj_6uvloop_4loop__UDPSendContext *__pyx_freelist_6uvloop_4loop__UDPSendContext[250];
static int __pyx_freecount_6uvloop_4loop__UDPSendContext = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop__UDPSendContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *p;
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop__UDPSendContext > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop__UDPSendContext)) & ((t->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop__UDPSendContext[--__pyx_freecount_6uvloop_4loop__UDPSendContext];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop__UDPSendContext));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
      o = (*t->tp_alloc)(t, 0);
    } else {
      o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
    }
    if (unlikely(!o)) return 0;
  }
  p = ((struct __pyx_obj_6uvloop_4loop__UDPSendContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_6uvloop_4loop__UDPSendContext;
  p->udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)Py_None); Py_INCREF(Py_None);
  p->py_buf.obj = NULL;
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop__UDPSendContext(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *p = (struct __pyx_obj_6uvloop_4loop__UDPSendContext *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->udp);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop__UDPSendContext < 250) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop__UDPSendContext)) & ((Py_TYPE(o)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)) == 0))) {
    __pyx_freelist_6uvloop_4loop__UDPSendContext[__pyx_freecount_6uvloop_4loop__UDPSendContext++] = ((struct __pyx_obj_6uvloop_4loop__UDPSendContext *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop__UDPSendContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop__UDPSendContext *p = (struct __pyx_obj_6uvloop_4loop__UDPSendContext *)o;
  if (p->udp) {
    e = (*v)(((PyObject*)p->udp), a); if (e) return e;
  }
  if (p->py_buf.obj) {
    e = (*v)(p->py_buf.obj, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop__UDPSendContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop._UDPSendContext", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop__UDPSendContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop__UDPSendContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop__UDPSendContext, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop__UDPSendContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *__pyx_freelist_6uvloop_4loop___pyx_scope_struct___getaddrinfo[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct___getaddrinfo = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct___getaddrinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct___getaddrinfo > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct___getaddrinfo[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct___getaddrinfo];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct___getaddrinfo(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_fut);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct___getaddrinfo < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct___getaddrinfo[__pyx_freecount_6uvloop_4loop___pyx_scope_struct___getaddrinfo++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct___getaddrinfo(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *)o;
  if (p->__pyx_v_fut) {
    e = (*v)(p->__pyx_v_fut, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct___getaddrinfo(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo *)o;
  tmp = ((PyObject*)p->__pyx_v_fut);
  p->__pyx_v_fut = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct___getaddrinfo = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct___getaddrinfo", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct___getaddrinfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct___getaddrinfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct___getaddrinfo, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct___getaddrinfo, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct___getaddrinfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_1__getnameinfo[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_1__getnameinfo = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_1__getnameinfo > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_1__getnameinfo[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_1__getnameinfo];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_fut);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_1__getnameinfo < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_1__getnameinfo[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_1__getnameinfo++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *)o;
  if (p->__pyx_v_fut) {
    e = (*v)(p->__pyx_v_fut, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_1__getnameinfo(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo *)o;
  tmp = ((PyObject*)p->__pyx_v_fut);
  p->__pyx_v_fut = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_1__getnameinfo = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_1__getnameinfo", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_1__getnameinfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_1__getnameinfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_1__getnameinfo, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_1__getnameinfo, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_1__getnameinfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_2__sock_connect[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_2__sock_connect = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_2__sock_connect(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_2__sock_connect > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_2__sock_connect[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_2__sock_connect];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_2__sock_connect(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_fd);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_2__sock_connect < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_2__sock_connect[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_2__sock_connect++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_2__sock_connect(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *)o;
  if (p->__pyx_v_fd) {
    e = (*v)(p->__pyx_v_fd, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_2__sock_connect(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect *)o;
  tmp = ((PyObject*)p->__pyx_v_fd);
  p->__pyx_v_fd = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_2__sock_connect = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_2__sock_connect", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_2__sock_connect), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_2__sock_connect, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_2__sock_connect, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_2__sock_connect, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_2__sock_connect, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_3_run_until_complete[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_3_run_until_complete = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_3_run_until_complete > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_3_run_until_complete[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_3_run_until_complete];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_3_run_until_complete < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_3_run_until_complete[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_3_run_until_complete++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_3_run_until_complete(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_3_run_until_complete = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_3_run_until_complete", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_3_run_until_complete), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_3_run_until_complete, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_3_run_until_complete, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_3_run_until_complete, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_3_run_until_complete, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_4_getnameinfo[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_4_getnameinfo = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_4_getnameinfo > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_4_getnameinfo[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_4_getnameinfo];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_ai_cnt);
  Py_CLEAR(p->__pyx_v_flowinfo);
  Py_CLEAR(p->__pyx_v_scope_id);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_sockaddr);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_4_getnameinfo < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_4_getnameinfo[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_4_getnameinfo++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)o;
  if (p->__pyx_v_ai_cnt) {
    e = (*v)(((PyObject*)p->__pyx_v_ai_cnt), a); if (e) return e;
  }
  if (p->__pyx_v_flowinfo) {
    e = (*v)(p->__pyx_v_flowinfo, a); if (e) return e;
  }
  if (p->__pyx_v_scope_id) {
    e = (*v)(p->__pyx_v_scope_id, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_sockaddr) {
    e = (*v)(p->__pyx_v_sockaddr, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_4_getnameinfo(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo *)o;
  tmp = ((PyObject*)p->__pyx_v_ai_cnt);
  p->__pyx_v_ai_cnt = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_flowinfo);
  p->__pyx_v_flowinfo = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_scope_id);
  p->__pyx_v_scope_id = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sockaddr);
  p->__pyx_v_sockaddr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_4_getnameinfo = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_4_getnameinfo", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_4_getnameinfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_4_getnameinfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_4_getnameinfo, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_4_getnameinfo, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_4_getnameinfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_5_create_server[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_5_create_server = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_5_create_server(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_5_create_server > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_5_create_server[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_5_create_server];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_5_create_server(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_err);
  Py_CLEAR(p->__pyx_v_fileno);
  Py_CLEAR(p->__pyx_v_fs);
  Py_CLEAR(p->__pyx_v_host);
  Py_CLEAR(p->__pyx_v_hosts);
  Py_CLEAR(p->__pyx_v_info);
  Py_CLEAR(p->__pyx_v_infos);
  Py_CLEAR(p->__pyx_v_port);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_pyaddr);
  Py_CLEAR(p->__pyx_v_reuse_address);
  Py_CLEAR(p->__pyx_v_reuse_port);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server);
  Py_CLEAR(p->__pyx_v_sock);
  Py_CLEAR(p->__pyx_v_ssl);
  Py_CLEAR(p->__pyx_v_tcp);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_5_create_server < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_5_create_server[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_5_create_server++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_5_create_server(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)o;
  if (p->__pyx_v_err) {
    e = (*v)(p->__pyx_v_err, a); if (e) return e;
  }
  if (p->__pyx_v_fileno) {
    e = (*v)(p->__pyx_v_fileno, a); if (e) return e;
  }
  if (p->__pyx_v_fs) {
    e = (*v)(p->__pyx_v_fs, a); if (e) return e;
  }
  if (p->__pyx_v_host) {
    e = (*v)(p->__pyx_v_host, a); if (e) return e;
  }
  if (p->__pyx_v_hosts) {
    e = (*v)(p->__pyx_v_hosts, a); if (e) return e;
  }
  if (p->__pyx_v_info) {
    e = (*v)(p->__pyx_v_info, a); if (e) return e;
  }
  if (p->__pyx_v_infos) {
    e = (*v)(p->__pyx_v_infos, a); if (e) return e;
  }
  if (p->__pyx_v_port) {
    e = (*v)(p->__pyx_v_port, a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_pyaddr) {
    e = (*v)(p->__pyx_v_pyaddr, a); if (e) return e;
  }
  if (p->__pyx_v_reuse_address) {
    e = (*v)(p->__pyx_v_reuse_address, a); if (e) return e;
  }
  if (p->__pyx_v_reuse_port) {
    e = (*v)(p->__pyx_v_reuse_port, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server) {
    e = (*v)(((PyObject*)p->__pyx_v_server), a); if (e) return e;
  }
  if (p->__pyx_v_sock) {
    e = (*v)(p->__pyx_v_sock, a); if (e) return e;
  }
  if (p->__pyx_v_ssl) {
    e = (*v)(p->__pyx_v_ssl, a); if (e) return e;
  }
  if (p->__pyx_v_tcp) {
    e = (*v)(((PyObject*)p->__pyx_v_tcp), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_5_create_server(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server *)o;
  tmp = ((PyObject*)p->__pyx_v_err);
  p->__pyx_v_err = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fileno);
  p->__pyx_v_fileno = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fs);
  p->__pyx_v_fs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_host);
  p->__pyx_v_host = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_hosts);
  p->__pyx_v_hosts = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_info);
  p->__pyx_v_info = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_infos);
  p->__pyx_v_infos = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_port);
  p->__pyx_v_port = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_pyaddr);
  p->__pyx_v_pyaddr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_reuse_address);
  p->__pyx_v_reuse_address = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_reuse_port);
  p->__pyx_v_reuse_port = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_server);
  p->__pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sock);
  p->__pyx_v_sock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl);
  p->__pyx_v_ssl = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_tcp);
  p->__pyx_v_tcp = ((struct __pyx_obj_6uvloop_4loop_TCPServer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_5_create_server = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_5_create_server", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_5_create_server), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_5_create_server, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_5_create_server, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_5_create_server, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_5_create_server, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_6_create_connection[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_6_create_connection = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_6_create_connection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_6_create_connection > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_6_create_connection[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_6_create_connection];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_6_create_connection(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_ai_local);
  Py_CLEAR(p->__pyx_v_ai_remote);
  Py_CLEAR(p->__pyx_v_app_protocol);
  Py_CLEAR(p->__pyx_v_exc);
  Py_CLEAR(p->__pyx_v_exceptions);
  Py_CLEAR(p->__pyx_v_f1);
  Py_CLEAR(p->__pyx_v_f2);
  Py_CLEAR(p->__pyx_v_family);
  Py_CLEAR(p->__pyx_v_fileno);
  Py_CLEAR(p->__pyx_v_flags);
  Py_CLEAR(p->__pyx_v_fs);
  Py_CLEAR(p->__pyx_v_genexpr);
  Py_CLEAR(p->__pyx_v_host);
  Py_CLEAR(p->__pyx_v_local_addr);
  Py_CLEAR(p->__pyx_v_model);
  Py_CLEAR(p->__pyx_v_port);
  Py_CLEAR(p->__pyx_v_proto);
  Py_CLEAR(p->__pyx_v_protocol);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server_hostname);
  Py_CLEAR(p->__pyx_v_sock);
  Py_CLEAR(p->__pyx_v_ssl);
  Py_CLEAR(p->__pyx_v_ssl_waiter);
  Py_CLEAR(p->__pyx_v_sslcontext);
  Py_CLEAR(p->__pyx_v_tr);
  Py_CLEAR(p->__pyx_v_waiter);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_6_create_connection < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_6_create_connection[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_6_create_connection++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_6_create_connection(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)o;
  if (p->__pyx_v_ai_local) {
    e = (*v)(((PyObject*)p->__pyx_v_ai_local), a); if (e) return e;
  }
  if (p->__pyx_v_ai_remote) {
    e = (*v)(((PyObject*)p->__pyx_v_ai_remote), a); if (e) return e;
  }
  if (p->__pyx_v_app_protocol) {
    e = (*v)(p->__pyx_v_app_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_exc) {
    e = (*v)(p->__pyx_v_exc, a); if (e) return e;
  }
  if (p->__pyx_v_exceptions) {
    e = (*v)(p->__pyx_v_exceptions, a); if (e) return e;
  }
  if (p->__pyx_v_f1) {
    e = (*v)(p->__pyx_v_f1, a); if (e) return e;
  }
  if (p->__pyx_v_f2) {
    e = (*v)(p->__pyx_v_f2, a); if (e) return e;
  }
  if (p->__pyx_v_family) {
    e = (*v)(p->__pyx_v_family, a); if (e) return e;
  }
  if (p->__pyx_v_fileno) {
    e = (*v)(p->__pyx_v_fileno, a); if (e) return e;
  }
  if (p->__pyx_v_flags) {
    e = (*v)(p->__pyx_v_flags, a); if (e) return e;
  }
  if (p->__pyx_v_fs) {
    e = (*v)(p->__pyx_v_fs, a); if (e) return e;
  }
  if (p->__pyx_v_genexpr) {
    e = (*v)(p->__pyx_v_genexpr, a); if (e) return e;
  }
  if (p->__pyx_v_host) {
    e = (*v)(p->__pyx_v_host, a); if (e) return e;
  }
  if (p->__pyx_v_local_addr) {
    e = (*v)(p->__pyx_v_local_addr, a); if (e) return e;
  }
  if (p->__pyx_v_model) {
    e = (*v)(p->__pyx_v_model, a); if (e) return e;
  }
  if (p->__pyx_v_port) {
    e = (*v)(p->__pyx_v_port, a); if (e) return e;
  }
  if (p->__pyx_v_proto) {
    e = (*v)(p->__pyx_v_proto, a); if (e) return e;
  }
  if (p->__pyx_v_protocol) {
    e = (*v)(p->__pyx_v_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server_hostname) {
    e = (*v)(p->__pyx_v_server_hostname, a); if (e) return e;
  }
  if (p->__pyx_v_sock) {
    e = (*v)(p->__pyx_v_sock, a); if (e) return e;
  }
  if (p->__pyx_v_ssl) {
    e = (*v)(p->__pyx_v_ssl, a); if (e) return e;
  }
  if (p->__pyx_v_ssl_waiter) {
    e = (*v)(p->__pyx_v_ssl_waiter, a); if (e) return e;
  }
  if (p->__pyx_v_sslcontext) {
    e = (*v)(p->__pyx_v_sslcontext, a); if (e) return e;
  }
  if (p->__pyx_v_tr) {
    e = (*v)(((PyObject*)p->__pyx_v_tr), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_6_create_connection(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)o;
  tmp = ((PyObject*)p->__pyx_v_ai_local);
  p->__pyx_v_ai_local = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ai_remote);
  p->__pyx_v_ai_remote = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_app_protocol);
  p->__pyx_v_app_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_exc);
  p->__pyx_v_exc = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_exceptions);
  p->__pyx_v_exceptions = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_f1);
  p->__pyx_v_f1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_f2);
  p->__pyx_v_f2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_family);
  p->__pyx_v_family = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fileno);
  p->__pyx_v_fileno = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_flags);
  p->__pyx_v_flags = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fs);
  p->__pyx_v_fs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_genexpr);
  p->__pyx_v_genexpr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_host);
  p->__pyx_v_host = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_local_addr);
  p->__pyx_v_local_addr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_model);
  p->__pyx_v_model = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_port);
  p->__pyx_v_port = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto);
  p->__pyx_v_proto = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol);
  p->__pyx_v_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_server_hostname);
  p->__pyx_v_server_hostname = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sock);
  p->__pyx_v_sock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl);
  p->__pyx_v_ssl = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl_waiter);
  p->__pyx_v_ssl_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sslcontext);
  p->__pyx_v_sslcontext = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_tr);
  p->__pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_TCPTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_1);
  p->__pyx_t_1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_2);
  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_6_create_connection = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_6_create_connection", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_6_create_connection, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_6_create_connection, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_6_create_connection, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_6_create_connection, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_7_genexpr[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_7_genexpr = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_7_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_7_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_7_genexpr[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_7_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_7_genexpr(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_exc);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_7_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_7_genexpr[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_7_genexpr++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_7_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_exc) {
    e = (*v)(p->__pyx_v_exc, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_7_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_exc);
  p->__pyx_v_exc = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_7_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_7_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_7_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_7_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_7_genexpr, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_7_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_7_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_8_genexpr[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_8_genexpr = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_8_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_8_genexpr[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_8_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_exc);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_8_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_8_genexpr[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_exc) {
    e = (*v)(p->__pyx_v_exc, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_8_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_6_create_connection *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_exc);
  p->__pyx_v_exc = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_8_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_8_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_8_genexpr, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_8_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_8_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_9_create_unix_server[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_9_create_unix_server = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_9_create_unix_server > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_9_create_unix_server[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_9_create_unix_server];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_backlog);
  Py_CLEAR(p->__pyx_v_fileno);
  Py_CLEAR(p->__pyx_v_path);
  Py_CLEAR(p->__pyx_v_pipe);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server);
  Py_CLEAR(p->__pyx_v_sock);
  Py_CLEAR(p->__pyx_v_ssl);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_9_create_unix_server < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_9_create_unix_server[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_9_create_unix_server++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)o;
  if (p->__pyx_v_backlog) {
    e = (*v)(p->__pyx_v_backlog, a); if (e) return e;
  }
  if (p->__pyx_v_fileno) {
    e = (*v)(p->__pyx_v_fileno, a); if (e) return e;
  }
  if (p->__pyx_v_pipe) {
    e = (*v)(((PyObject*)p->__pyx_v_pipe), a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server) {
    e = (*v)(((PyObject*)p->__pyx_v_server), a); if (e) return e;
  }
  if (p->__pyx_v_sock) {
    e = (*v)(p->__pyx_v_sock, a); if (e) return e;
  }
  if (p->__pyx_v_ssl) {
    e = (*v)(p->__pyx_v_ssl, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_9_create_unix_server(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server *)o;
  tmp = ((PyObject*)p->__pyx_v_backlog);
  p->__pyx_v_backlog = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fileno);
  p->__pyx_v_fileno = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_pipe);
  p->__pyx_v_pipe = ((struct __pyx_obj_6uvloop_4loop_UnixServer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_server);
  p->__pyx_v_server = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sock);
  p->__pyx_v_sock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl);
  p->__pyx_v_ssl = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_9_create_unix_server = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_9_create_unix_server", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_9_create_unix_server), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_9_create_unix_server, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_9_create_unix_server, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_9_create_unix_server, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_9_create_unix_server, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_app_protocol);
  Py_CLEAR(p->__pyx_v_fileno);
  Py_CLEAR(p->__pyx_v_path);
  Py_CLEAR(p->__pyx_v_protocol);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server_hostname);
  Py_CLEAR(p->__pyx_v_sock);
  Py_CLEAR(p->__pyx_v_ssl);
  Py_CLEAR(p->__pyx_v_ssl_waiter);
  Py_CLEAR(p->__pyx_v_sslcontext);
  Py_CLEAR(p->__pyx_v_tr);
  Py_CLEAR(p->__pyx_v_waiter);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)o;
  if (p->__pyx_v_app_protocol) {
    e = (*v)(p->__pyx_v_app_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_fileno) {
    e = (*v)(p->__pyx_v_fileno, a); if (e) return e;
  }
  if (p->__pyx_v_path) {
    e = (*v)(p->__pyx_v_path, a); if (e) return e;
  }
  if (p->__pyx_v_protocol) {
    e = (*v)(p->__pyx_v_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server_hostname) {
    e = (*v)(p->__pyx_v_server_hostname, a); if (e) return e;
  }
  if (p->__pyx_v_sock) {
    e = (*v)(p->__pyx_v_sock, a); if (e) return e;
  }
  if (p->__pyx_v_ssl) {
    e = (*v)(p->__pyx_v_ssl, a); if (e) return e;
  }
  if (p->__pyx_v_ssl_waiter) {
    e = (*v)(p->__pyx_v_ssl_waiter, a); if (e) return e;
  }
  if (p->__pyx_v_sslcontext) {
    e = (*v)(p->__pyx_v_sslcontext, a); if (e) return e;
  }
  if (p->__pyx_v_tr) {
    e = (*v)(((PyObject*)p->__pyx_v_tr), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection *)o;
  tmp = ((PyObject*)p->__pyx_v_app_protocol);
  p->__pyx_v_app_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_fileno);
  p->__pyx_v_fileno = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_path);
  p->__pyx_v_path = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol);
  p->__pyx_v_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_server_hostname);
  p->__pyx_v_server_hostname = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sock);
  p->__pyx_v_sock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl);
  p->__pyx_v_ssl = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ssl_waiter);
  p->__pyx_v_ssl_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sslcontext);
  p->__pyx_v_sslcontext = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_tr);
  p->__pyx_v_tr = ((struct __pyx_obj_6uvloop_4loop_UnixTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_1);
  p->__pyx_t_1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_2);
  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_10_create_unix_connection", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_11___subprocess_run[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_11___subprocess_run = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_11___subprocess_run > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_11___subprocess_run[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_11___subprocess_run];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v___uvloop_sleep_after_fork);
  Py_CLEAR(p->__pyx_v_args);
  Py_CLEAR(p->__pyx_v_bufsize);
  Py_CLEAR(p->__pyx_v_close_fds);
  Py_CLEAR(p->__pyx_v_creationflags);
  Py_CLEAR(p->__pyx_v_cwd);
  Py_CLEAR(p->__pyx_v_env);
  Py_CLEAR(p->__pyx_v_executable);
  Py_CLEAR(p->__pyx_v_pass_fds);
  Py_CLEAR(p->__pyx_v_preexec_fn);
  Py_CLEAR(p->__pyx_v_proc);
  Py_CLEAR(p->__pyx_v_protocol);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_restore_signals);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_shell);
  Py_CLEAR(p->__pyx_v_start_new_session);
  Py_CLEAR(p->__pyx_v_startupinfo);
  Py_CLEAR(p->__pyx_v_stderr);
  Py_CLEAR(p->__pyx_v_stdin);
  Py_CLEAR(p->__pyx_v_stdout);
  Py_CLEAR(p->__pyx_v_universal_newlines);
  Py_CLEAR(p->__pyx_v_waiter);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_11___subprocess_run < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_11___subprocess_run[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_11___subprocess_run++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)o;
  if (p->__pyx_v___uvloop_sleep_after_fork) {
    e = (*v)(p->__pyx_v___uvloop_sleep_after_fork, a); if (e) return e;
  }
  if (p->__pyx_v_args) {
    e = (*v)(p->__pyx_v_args, a); if (e) return e;
  }
  if (p->__pyx_v_bufsize) {
    e = (*v)(p->__pyx_v_bufsize, a); if (e) return e;
  }
  if (p->__pyx_v_close_fds) {
    e = (*v)(p->__pyx_v_close_fds, a); if (e) return e;
  }
  if (p->__pyx_v_creationflags) {
    e = (*v)(p->__pyx_v_creationflags, a); if (e) return e;
  }
  if (p->__pyx_v_cwd) {
    e = (*v)(p->__pyx_v_cwd, a); if (e) return e;
  }
  if (p->__pyx_v_env) {
    e = (*v)(p->__pyx_v_env, a); if (e) return e;
  }
  if (p->__pyx_v_executable) {
    e = (*v)(p->__pyx_v_executable, a); if (e) return e;
  }
  if (p->__pyx_v_pass_fds) {
    e = (*v)(p->__pyx_v_pass_fds, a); if (e) return e;
  }
  if (p->__pyx_v_preexec_fn) {
    e = (*v)(p->__pyx_v_preexec_fn, a); if (e) return e;
  }
  if (p->__pyx_v_proc) {
    e = (*v)(((PyObject*)p->__pyx_v_proc), a); if (e) return e;
  }
  if (p->__pyx_v_protocol) {
    e = (*v)(p->__pyx_v_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_restore_signals) {
    e = (*v)(p->__pyx_v_restore_signals, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_shell) {
    e = (*v)(p->__pyx_v_shell, a); if (e) return e;
  }
  if (p->__pyx_v_start_new_session) {
    e = (*v)(p->__pyx_v_start_new_session, a); if (e) return e;
  }
  if (p->__pyx_v_startupinfo) {
    e = (*v)(p->__pyx_v_startupinfo, a); if (e) return e;
  }
  if (p->__pyx_v_stderr) {
    e = (*v)(p->__pyx_v_stderr, a); if (e) return e;
  }
  if (p->__pyx_v_stdin) {
    e = (*v)(p->__pyx_v_stdin, a); if (e) return e;
  }
  if (p->__pyx_v_stdout) {
    e = (*v)(p->__pyx_v_stdout, a); if (e) return e;
  }
  if (p->__pyx_v_universal_newlines) {
    e = (*v)(p->__pyx_v_universal_newlines, a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_11___subprocess_run(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run *)o;
  tmp = ((PyObject*)p->__pyx_v___uvloop_sleep_after_fork);
  p->__pyx_v___uvloop_sleep_after_fork = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_args);
  p->__pyx_v_args = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_bufsize);
  p->__pyx_v_bufsize = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_close_fds);
  p->__pyx_v_close_fds = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_creationflags);
  p->__pyx_v_creationflags = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_cwd);
  p->__pyx_v_cwd = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_env);
  p->__pyx_v_env = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_executable);
  p->__pyx_v_executable = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_pass_fds);
  p->__pyx_v_pass_fds = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_preexec_fn);
  p->__pyx_v_preexec_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proc);
  p->__pyx_v_proc = ((struct __pyx_obj_6uvloop_4loop_UVProcessTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol);
  p->__pyx_v_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_restore_signals);
  p->__pyx_v_restore_signals = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_shell);
  p->__pyx_v_shell = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_start_new_session);
  p->__pyx_v_start_new_session = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_startupinfo);
  p->__pyx_v_startupinfo = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_stderr);
  p->__pyx_v_stderr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_stdin);
  p->__pyx_v_stdin = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_stdout);
  p->__pyx_v_stdout = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_universal_newlines);
  p->__pyx_v_universal_newlines = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_1);
  p->__pyx_t_1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_2);
  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_11___subprocess_run = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_11___subprocess_run", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_11___subprocess_run), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_11___subprocess_run, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_11___subprocess_run, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_11___subprocess_run, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_11___subprocess_run, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_pipe);
  Py_CLEAR(p->__pyx_v_proto);
  Py_CLEAR(p->__pyx_v_proto_factory);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_transp);
  Py_CLEAR(p->__pyx_v_waiter);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)o;
  if (p->__pyx_v_pipe) {
    e = (*v)(p->__pyx_v_pipe, a); if (e) return e;
  }
  if (p->__pyx_v_proto) {
    e = (*v)(p->__pyx_v_proto, a); if (e) return e;
  }
  if (p->__pyx_v_proto_factory) {
    e = (*v)(p->__pyx_v_proto_factory, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_transp) {
    e = (*v)(((PyObject*)p->__pyx_v_transp), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe *)o;
  tmp = ((PyObject*)p->__pyx_v_pipe);
  p->__pyx_v_pipe = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto);
  p->__pyx_v_proto = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto_factory);
  p->__pyx_v_proto_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_transp);
  p->__pyx_v_transp = ((struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_1);
  p->__pyx_t_1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_2);
  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_12_connect_read_pipe", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_pipe);
  Py_CLEAR(p->__pyx_v_proto);
  Py_CLEAR(p->__pyx_v_proto_factory);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_transp);
  Py_CLEAR(p->__pyx_v_waiter);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)o;
  if (p->__pyx_v_pipe) {
    e = (*v)(p->__pyx_v_pipe, a); if (e) return e;
  }
  if (p->__pyx_v_proto) {
    e = (*v)(p->__pyx_v_proto, a); if (e) return e;
  }
  if (p->__pyx_v_proto_factory) {
    e = (*v)(p->__pyx_v_proto_factory, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_transp) {
    e = (*v)(((PyObject*)p->__pyx_v_transp), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe *)o;
  tmp = ((PyObject*)p->__pyx_v_pipe);
  p->__pyx_v_pipe = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto);
  p->__pyx_v_proto = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto_factory);
  p->__pyx_v_proto_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_transp);
  p->__pyx_v_transp = ((struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_1);
  p->__pyx_t_1 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_2);
  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_13_connect_write_pipe", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_allow_broadcast);
  Py_CLEAR(p->__pyx_v_ctx);
  Py_CLEAR(p->__pyx_v_ex);
  Py_CLEAR(p->__pyx_v_excs);
  Py_CLEAR(p->__pyx_v_family);
  Py_CLEAR(p->__pyx_v_flags);
  Py_CLEAR(p->__pyx_v_genexpr);
  Py_CLEAR(p->__pyx_v_lads);
  Py_CLEAR(p->__pyx_v_local_addr);
  Py_CLEAR(p->__pyx_v_opts);
  Py_CLEAR(p->__pyx_v_problems);
  Py_CLEAR(p->__pyx_v_proto);
  Py_CLEAR(p->__pyx_v_protocol);
  Py_CLEAR(p->__pyx_v_protocol_factory);
  Py_CLEAR(p->__pyx_v_rads);
  Py_CLEAR(p->__pyx_v_remote_addr);
  Py_CLEAR(p->__pyx_v_reuse_address);
  Py_CLEAR(p->__pyx_v_reuse_port);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_sock);
  Py_CLEAR(p->__pyx_v_socket);
  Py_CLEAR(p->__pyx_v_udp);
  Py_CLEAR(p->__pyx_v_waiter);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)o;
  if (p->__pyx_v_allow_broadcast) {
    e = (*v)(p->__pyx_v_allow_broadcast, a); if (e) return e;
  }
  if (p->__pyx_v_ctx) {
    e = (*v)(p->__pyx_v_ctx, a); if (e) return e;
  }
  if (p->__pyx_v_ex) {
    e = (*v)(p->__pyx_v_ex, a); if (e) return e;
  }
  if (p->__pyx_v_excs) {
    e = (*v)(p->__pyx_v_excs, a); if (e) return e;
  }
  if (p->__pyx_v_family) {
    e = (*v)(p->__pyx_v_family, a); if (e) return e;
  }
  if (p->__pyx_v_flags) {
    e = (*v)(p->__pyx_v_flags, a); if (e) return e;
  }
  if (p->__pyx_v_genexpr) {
    e = (*v)(p->__pyx_v_genexpr, a); if (e) return e;
  }
  if (p->__pyx_v_lads) {
    e = (*v)(p->__pyx_v_lads, a); if (e) return e;
  }
  if (p->__pyx_v_local_addr) {
    e = (*v)(p->__pyx_v_local_addr, a); if (e) return e;
  }
  if (p->__pyx_v_opts) {
    e = (*v)(p->__pyx_v_opts, a); if (e) return e;
  }
  if (p->__pyx_v_proto) {
    e = (*v)(p->__pyx_v_proto, a); if (e) return e;
  }
  if (p->__pyx_v_protocol) {
    e = (*v)(p->__pyx_v_protocol, a); if (e) return e;
  }
  if (p->__pyx_v_protocol_factory) {
    e = (*v)(p->__pyx_v_protocol_factory, a); if (e) return e;
  }
  if (p->__pyx_v_rads) {
    e = (*v)(p->__pyx_v_rads, a); if (e) return e;
  }
  if (p->__pyx_v_remote_addr) {
    e = (*v)(p->__pyx_v_remote_addr, a); if (e) return e;
  }
  if (p->__pyx_v_reuse_address) {
    e = (*v)(p->__pyx_v_reuse_address, a); if (e) return e;
  }
  if (p->__pyx_v_reuse_port) {
    e = (*v)(p->__pyx_v_reuse_port, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_sock) {
    e = (*v)(p->__pyx_v_sock, a); if (e) return e;
  }
  if (p->__pyx_v_socket) {
    e = (*v)(p->__pyx_v_socket, a); if (e) return e;
  }
  if (p->__pyx_v_udp) {
    e = (*v)(((PyObject*)p->__pyx_v_udp), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)o;
  tmp = ((PyObject*)p->__pyx_v_allow_broadcast);
  p->__pyx_v_allow_broadcast = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ctx);
  p->__pyx_v_ctx = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_ex);
  p->__pyx_v_ex = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_excs);
  p->__pyx_v_excs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_family);
  p->__pyx_v_family = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_flags);
  p->__pyx_v_flags = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_genexpr);
  p->__pyx_v_genexpr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_lads);
  p->__pyx_v_lads = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_local_addr);
  p->__pyx_v_local_addr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_opts);
  p->__pyx_v_opts = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_proto);
  p->__pyx_v_proto = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol);
  p->__pyx_v_protocol = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_protocol_factory);
  p->__pyx_v_protocol_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_rads);
  p->__pyx_v_rads = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_remote_addr);
  p->__pyx_v_remote_addr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_reuse_address);
  p->__pyx_v_reuse_address = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_reuse_port);
  p->__pyx_v_reuse_port = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_sock);
  p->__pyx_v_sock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_socket);
  p->__pyx_v_socket = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_udp);
  p->__pyx_v_udp = ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_14_create_datagram_endpoint", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_15_genexpr[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_15_genexpr = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_15_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_15_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_15_genexpr[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_15_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_15_genexpr(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_k);
  Py_CLEAR(p->__pyx_v_v);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_15_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_15_genexpr[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_15_genexpr++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_15_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_k) {
    e = (*v)(p->__pyx_v_k, a); if (e) return e;
  }
  if (p->__pyx_v_v) {
    e = (*v)(p->__pyx_v_v, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_15_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_k);
  p->__pyx_v_k = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_v);
  p->__pyx_v_v = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_15_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_15_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_15_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_15_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_15_genexpr, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_15_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_15_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *__pyx_freelist_6uvloop_4loop___pyx_scope_struct_16_wait_closed[8];
static int __pyx_freecount_6uvloop_4loop___pyx_scope_struct_16_wait_closed = 0;

static PyObject *__pyx_tp_new_6uvloop_4loop___pyx_scope_struct_16_wait_closed(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_16_wait_closed > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed)))) {
    o = (PyObject*)__pyx_freelist_6uvloop_4loop___pyx_scope_struct_16_wait_closed[--__pyx_freecount_6uvloop_4loop___pyx_scope_struct_16_wait_closed];
    memset(o, 0, sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_16_wait_closed(PyObject *o) {
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_waiter);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6uvloop_4loop___pyx_scope_struct_16_wait_closed < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed)))) {
    __pyx_freelist_6uvloop_4loop___pyx_scope_struct_16_wait_closed[__pyx_freecount_6uvloop_4loop___pyx_scope_struct_16_wait_closed++] = ((struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_16_wait_closed(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_waiter) {
    e = (*v)(p->__pyx_v_waiter, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_16_wait_closed(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *p = (struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_6uvloop_4loop_Server *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_waiter);
  p->__pyx_v_waiter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_6uvloop_4loop___pyx_scope_struct_16_wait_closed = {
  PyVarObject_HEAD_INIT(0, 0)
  "uvloop.loop.__pyx_scope_struct_16_wait_closed", /*tp_name*/
  sizeof(struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_16_wait_closed), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6uvloop_4loop___pyx_scope_struct_16_wait_closed, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6uvloop_4loop___pyx_scope_struct_16_wait_closed, /*tp_traverse*/
  __pyx_tp_clear_6uvloop_4loop___pyx_scope_struct_16_wait_closed, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6uvloop_4loop___pyx_scope_struct_16_wait_closed, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
  #if PY_VERSION_HEX < 0x03020000
    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
  #else
    PyModuleDef_HEAD_INIT,
  #endif
    "loop",
    0, /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_u_0_0_0_0, __pyx_k_0_0_0_0, sizeof(__pyx_k_0_0_0_0), 0, 1, 0, 0},
  {&__pyx_n_u_AF_INET6, __pyx_k_AF_INET6, sizeof(__pyx_k_AF_INET6), 0, 1, 0, 1},
  {&__pyx_kp_u_AF_INET6_address_must_be_tuple, __pyx_k_AF_INET6_address_must_be_tuple, sizeof(__pyx_k_AF_INET6_address_must_be_tuple), 0, 1, 0, 0},
  {&__pyx_kp_u_AF_INET6_must_be_a_tuple_of_2_4, __pyx_k_AF_INET6_must_be_a_tuple_of_2_4, sizeof(__pyx_k_AF_INET6_must_be_a_tuple_of_2_4), 0, 1, 0, 0},
  {&__pyx_kp_u_AF_INET_address_must_be_tuple, __pyx_k_AF_INET_address_must_be_tuple, sizeof(__pyx_k_AF_INET_address_must_be_tuple), 0, 1, 0, 0},
  {&__pyx_kp_u_AF_INET_address_must_be_tuple_of, __pyx_k_AF_INET_address_must_be_tuple_of, sizeof(__pyx_k_AF_INET_address_must_be_tuple_of), 0, 1, 0, 0},
  {&__pyx_kp_u_AF_UNSPEC_in_DNS_results, __pyx_k_AF_UNSPEC_in_DNS_results, sizeof(__pyx_k_AF_UNSPEC_in_DNS_results), 0, 1, 0, 0},
  {&__pyx_kp_u_A_UNIX_Domain_Socket_was_expecte, __pyx_k_A_UNIX_Domain_Socket_was_expecte, sizeof(__pyx_k_A_UNIX_Domain_Socket_was_expecte), 0, 1, 0, 0},
  {&__pyx_kp_u_A_callable_object_or_None_is_exp, __pyx_k_A_callable_object_or_None_is_exp, sizeof(__pyx_k_A_callable_object_or_None_is_exp), 0, 1, 0, 0},
  {&__pyx_kp_u_AddrInfoRequest_callback_called, __pyx_k_AddrInfoRequest_callback_called, sizeof(__pyx_k_AddrInfoRequest_callback_called), 0, 1, 0, 0},
  {&__pyx_kp_u_AddrInfo_data_is_NULL, __pyx_k_AddrInfo_data_is_NULL, sizeof(__pyx_k_AddrInfo_data_is_NULL), 0, 1, 0, 0},
  {&__pyx_kp_u_Already_paused, __pyx_k_Already_paused, sizeof(__pyx_k_Already_paused), 0, 1, 0, 0},
  {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
  {&__pyx_n_s_BaseException, __pyx_k_BaseException, sizeof(__pyx_k_BaseException), 0, 0, 1, 1},
  {&__pyx_n_s_BaseProtocol, __pyx_k_BaseProtocol, sizeof(__pyx_k_BaseProtocol), 0, 0, 1, 1},
  {&__pyx_n_s_BlockingIOError, __pyx_k_BlockingIOError, sizeof(__pyx_k_BlockingIOError), 0, 0, 1, 1},
  {&__pyx_n_s_BrokenPipeError, __pyx_k_BrokenPipeError, sizeof(__pyx_k_BrokenPipeError), 0, 0, 1, 1},
  {&__pyx_n_s_CALL_CONNECTION_LOST, __pyx_k_CALL_CONNECTION_LOST, sizeof(__pyx_k_CALL_CONNECTION_LOST), 0, 0, 1, 1},
  {&__pyx_n_s_CALL_PIPE_CONNECTION_LOST, __pyx_k_CALL_PIPE_CONNECTION_LOST, sizeof(__pyx_k_CALL_PIPE_CONNECTION_LOST), 0, 0, 1, 1},
  {&__pyx_n_s_CALL_PIPE_DATA_RECEIVED, __pyx_k_CALL_PIPE_DATA_RECEIVED, sizeof(__pyx_k_CALL_PIPE_DATA_RECEIVED), 0, 0, 1, 1},
  {&__pyx_n_s_CALL_PROCESS_EXITED, __pyx_k_CALL_PROCESS_EXITED, sizeof(__pyx_k_CALL_PROCESS_EXITED), 0, 0, 1, 1},
  {&__pyx_n_s_CancelledError, __pyx_k_CancelledError, sizeof(__pyx_k_CancelledError), 0, 0, 1, 1},
  {&__pyx_kp_u_Cannot_call_write_after_write_eo, __pyx_k_Cannot_call_write_after_write_eo, sizeof(__pyx_k_Cannot_call_write_after_write_eo), 0, 1, 0, 0},
  {&__pyx_kp_u_Cannot_close_a_running_event_loo, __pyx_k_Cannot_close_a_running_event_loo, sizeof(__pyx_k_Cannot_close_a_running_event_loo), 0, 1, 0, 0},
  {&__pyx_kp_u_Cannot_pause_reading_when_closin, __pyx_k_Cannot_pause_reading_when_closin, sizeof(__pyx_k_Cannot_pause_reading_when_closin), 0, 1, 0, 0},
  {&__pyx_kp_u_Connect_call_failed_s, __pyx_k_Connect_call_failed_s, sizeof(__pyx_k_Connect_call_failed_s), 0, 1, 0, 0},
  {&__pyx_n_s_ConnectionAbortedError, __pyx_k_ConnectionAbortedError, sizeof(__pyx_k_ConnectionAbortedError), 0, 0, 1, 1},
  {&__pyx_n_s_ConnectionRefusedError, __pyx_k_ConnectionRefusedError, sizeof(__pyx_k_ConnectionRefusedError), 0, 0, 1, 1},
  {&__pyx_n_s_ConnectionResetError, __pyx_k_ConnectionResetError, sizeof(__pyx_k_ConnectionResetError), 0, 0, 1, 1},
  {&__pyx_n_s_Counter, __pyx_k_Counter, sizeof(__pyx_k_Counter), 0, 0, 1, 1},
  {&__pyx_n_s_DEVNULL, __pyx_k_DEVNULL, sizeof(__pyx_k_DEVNULL), 0, 0, 1, 1},
  {&__pyx_n_u_EAI_ADDRFAMILY, __pyx_k_EAI_ADDRFAMILY, sizeof(__pyx_k_EAI_ADDRFAMILY), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_AGAIN, __pyx_k_EAI_AGAIN, sizeof(__pyx_k_EAI_AGAIN), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_BADFLAGS, __pyx_k_EAI_BADFLAGS, sizeof(__pyx_k_EAI_BADFLAGS), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_BADHINTS, __pyx_k_EAI_BADHINTS, sizeof(__pyx_k_EAI_BADHINTS), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_CANCELED, __pyx_k_EAI_CANCELED, sizeof(__pyx_k_EAI_CANCELED), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_FAIL, __pyx_k_EAI_FAIL, sizeof(__pyx_k_EAI_FAIL), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_FAMILY, __pyx_k_EAI_FAMILY, sizeof(__pyx_k_EAI_FAMILY), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_MEMORY, __pyx_k_EAI_MEMORY, sizeof(__pyx_k_EAI_MEMORY), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_NODATA, __pyx_k_EAI_NODATA, sizeof(__pyx_k_EAI_NODATA), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_NONAME, __pyx_k_EAI_NONAME, sizeof(__pyx_k_EAI_NONAME), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_OVERFLOW, __pyx_k_EAI_OVERFLOW, sizeof(__pyx_k_EAI_OVERFLOW), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_PROTOCOL, __pyx_k_EAI_PROTOCOL, sizeof(__pyx_k_EAI_PROTOCOL), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_SERVICE, __pyx_k_EAI_SERVICE, sizeof(__pyx_k_EAI_SERVICE), 0, 1, 0, 1},
  {&__pyx_n_u_EAI_SOCKTYPE, __pyx_k_EAI_SOCKTYPE, sizeof(__pyx_k_EAI_SOCKTYPE), 0, 1, 0, 1},
  {&__pyx_kp_u_Event_loop_is_closed, __pyx_k_Event_loop_is_closed, sizeof(__pyx_k_Event_loop_is_closed), 0, 1, 0, 0},
  {&__pyx_kp_u_Event_loop_is_running, __pyx_k_Event_loop_is_running, sizeof(__pyx_k_Event_loop_is_running), 0, 1, 0, 0},
  {&__pyx_kp_u_Event_loop_stopped_before_Future, __pyx_k_Event_loop_stopped_before_Future, sizeof(__pyx_k_Event_loop_stopped_before_Future), 0, 1, 0, 0},
  {&__pyx_n_s_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 0, 0, 1, 1},
  {&__pyx_kp_u_Exception_in_callback, __pyx_k_Exception_in_callback, sizeof(__pyx_k_Exception_in_callback), 0, 1, 0, 0},
  {&__pyx_kp_u_Exception_in_default_exception_h, __pyx_k_Exception_in_default_exception_h, sizeof(__pyx_k_Exception_in_default_exception_h), 0, 1, 0, 0},
  {&__pyx_kp_u_Exception_in_default_exception_h_2, __pyx_k_Exception_in_default_exception_h_2, sizeof(__pyx_k_Exception_in_default_exception_h_2), 0, 1, 0, 0},
  {&__pyx_kp_u_Fatal_error_on_server, __pyx_k_Fatal_error_on_server, sizeof(__pyx_k_Fatal_error_on_server), 0, 1, 0, 0},
  {&__pyx_kp_u_Fatal_error_on_transport, __pyx_k_Fatal_error_on_transport, sizeof(__pyx_k_Fatal_error_on_transport), 0, 1, 0, 0},
  {&__pyx_kp_u_Fatal_write_error_on_datagram_tr, __pyx_k_Fatal_write_error_on_datagram_tr, sizeof(__pyx_k_Fatal_write_error_on_datagram_tr), 0, 1, 0, 0},
  {&__pyx_n_s_FileExistsError, __pyx_k_FileExistsError, sizeof(__pyx_k_FileExistsError), 0, 0, 1, 1},
  {&__pyx_n_s_FileNotFoundError, __pyx_k_FileNotFoundError, sizeof(__pyx_k_FileNotFoundError), 0, 0, 1, 1},
  {&__pyx_n_s_Future, __pyx_k_Future, sizeof(__pyx_k_Future), 0, 0, 1, 1},
  {&__pyx_kp_u_Handle_cancelled_x, __pyx_k_Handle_cancelled_x, sizeof(__pyx_k_Handle_cancelled_x), 0, 1, 0, 0},
  {&__pyx_kp_u_Handle_r_x, __pyx_k_Handle_r_x, sizeof(__pyx_k_Handle_r_x), 0, 1, 0, 0},
  {&__pyx_n_u_IPPROTO_IPV6, __pyx_k_IPPROTO_IPV6, sizeof(__pyx_k_IPPROTO_IPV6), 0, 1, 0, 1},
  {&__pyx_kp_u_IPv4_sockaddr_must_be_2_tuple, __pyx_k_IPv4_sockaddr_must_be_2_tuple, sizeof(__pyx_k_IPv4_sockaddr_must_be_2_tuple), 0, 1, 0, 0},
  {&__pyx_n_s_InterruptedError, __pyx_k_InterruptedError, sizeof(__pyx_k_InterruptedError), 0, 0, 1, 1},
  {&__pyx_kp_u_Invalid_address_must_be_None_or, __pyx_k_Invalid_address_must_be_None_or, sizeof(__pyx_k_Invalid_address_must_be_None_or), 0, 1, 0, 0},
  {&__pyx_n_s_IsADirectoryError, __pyx_k_IsADirectoryError, sizeof(__pyx_k_IsADirectoryError), 0, 0, 1, 1},
  {&__pyx_n_s_Iterable, __pyx_k_Iterable, sizeof(__pyx_k_Iterable), 0, 0, 1, 1},
  {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
  {&__pyx_n_s_KeyboardInterrupt, __pyx_k_KeyboardInterrupt, sizeof(__pyx_k_KeyboardInterrupt), 0, 0, 1, 1},
  {&__pyx_n_s_Loop___subprocess_run, __pyx_k_Loop___subprocess_run, sizeof(__pyx_k_Loop___subprocess_run), 0, 0, 1, 1},
  {&__pyx_n_s_Loop__getaddrinfo_locals_callbac, __pyx_k_Loop__getaddrinfo_locals_callbac, sizeof(__pyx_k_Loop__getaddrinfo_locals_callbac), 0, 0, 1, 1},
  {&__pyx_n_s_Loop__getnameinfo_locals_callbac, __pyx_k_Loop__getnameinfo_locals_callbac, sizeof(__pyx_k_Loop__getnameinfo_locals_callbac), 0, 0, 1, 1},
  {&__pyx_kp_u_Loop__sock_accept, __pyx_k_Loop__sock_accept, sizeof(__pyx_k_Loop__sock_accept), 0, 1, 0, 0},
  {&__pyx_kp_u_Loop__sock_connect, __pyx_k_Loop__sock_connect, sizeof(__pyx_k_Loop__sock_connect), 0, 1, 0, 0},
  {&__pyx_n_s_Loop__sock_connect_locals_lambda, __pyx_k_Loop__sock_connect_locals_lambda, sizeof(__pyx_k_Loop__sock_connect_locals_lambda), 0, 0, 1, 1},
  {&__pyx_kp_u_Loop__sock_recv, __pyx_k_Loop__sock_recv, sizeof(__pyx_k_Loop__sock_recv), 0, 1, 0, 0},
  {&__pyx_kp_u_Loop__sock_sendall, __pyx_k_Loop__sock_sendall, sizeof(__pyx_k_Loop__sock_sendall), 0, 1, 0, 0},
  {&__pyx_kp_u_Loop__stop, __pyx_k_Loop__stop, sizeof(__pyx_k_Loop__stop), 0, 1, 0, 0},
  {&__pyx_n_s_Loop_connect_read_pipe, __pyx_k_Loop_connect_read_pipe, sizeof(__pyx_k_Loop_connect_read_pipe), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_connect_write_pipe, __pyx_k_Loop_connect_write_pipe, sizeof(__pyx_k_Loop_connect_write_pipe), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_create_connection, __pyx_k_Loop_create_connection, sizeof(__pyx_k_Loop_create_connection), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_create_datagram_endpoint, __pyx_k_Loop_create_datagram_endpoint, sizeof(__pyx_k_Loop_create_datagram_endpoint), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_create_server, __pyx_k_Loop_create_server, sizeof(__pyx_k_Loop_create_server), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_create_unix_connection, __pyx_k_Loop_create_unix_connection, sizeof(__pyx_k_Loop_create_unix_connection), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_create_unix_server, __pyx_k_Loop_create_unix_server, sizeof(__pyx_k_Loop_create_unix_server), 0, 0, 1, 1},
  {&__pyx_n_s_Loop_getnameinfo, __pyx_k_Loop_getnameinfo, sizeof(__pyx_k_Loop_getnameinfo), 0, 0, 1, 1},
  {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
  {&__pyx_kp_u_Multiple_exceptions, __pyx_k_Multiple_exceptions, sizeof(__pyx_k_Multiple_exceptions), 0, 1, 0, 0},
  {&__pyx_n_s_NSIG, __pyx_k_NSIG, sizeof(__pyx_k_NSIG), 0, 0, 1, 1},
  {&__pyx_kp_u_Neither_host_port_nor_sock_were, __pyx_k_Neither_host_port_nor_sock_were, sizeof(__pyx_k_Neither_host_port_nor_sock_were), 0, 1, 0, 0},
  {&__pyx_kp_u_Non_thread_safe_operation_invoke, __pyx_k_Non_thread_safe_operation_invoke, sizeof(__pyx_k_Non_thread_safe_operation_invoke), 0, 1, 0, 0},
  {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
  {&__pyx_kp_u_Not_paused, __pyx_k_Not_paused, sizeof(__pyx_k_Not_paused), 0, 1, 0, 0},
  {&__pyx_n_s_OSError, __pyx_k_OSError, sizeof(__pyx_k_OSError), 0, 0, 1, 1},
  {&__pyx_n_s_O_RDWR, __pyx_k_O_RDWR, sizeof(__pyx_k_O_RDWR), 0, 0, 1, 1},
  {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1},
  {&__pyx_n_s_PIPE, __pyx_k_PIPE, sizeof(__pyx_k_PIPE), 0, 0, 1, 1},
  {&__pyx_n_u_PYTHONASYNCIODEBUG, __pyx_k_PYTHONASYNCIODEBUG, sizeof(__pyx_k_PYTHONASYNCIODEBUG), 0, 1, 0, 1},
  {&__pyx_n_s_PermissionError, __pyx_k_PermissionError, sizeof(__pyx_k_PermissionError), 0, 0, 1, 1},
  {&__pyx_n_s_ProcessLookupError, __pyx_k_ProcessLookupError, sizeof(__pyx_k_ProcessLookupError), 0, 0, 1, 1},
  {&__pyx_n_s_Protocol, __pyx_k_Protocol, sizeof(__pyx_k_Protocol), 0, 0, 1, 1},
  {&__pyx_n_s_ReadSubprocessPipeProto, __pyx_k_ReadSubprocessPipeProto, sizeof(__pyx_k_ReadSubprocessPipeProto), 0, 0, 1, 1},
  {&__pyx_n_s_ReadSubprocessPipeProto_data_rec, __pyx_k_ReadSubprocessPipeProto_data_rec, sizeof(__pyx_k_ReadSubprocessPipeProto_data_rec), 0, 0, 1, 1},
  {&__pyx_n_s_ResourceWarning, __pyx_k_ResourceWarning, sizeof(__pyx_k_ResourceWarning), 0, 0, 1, 1},
  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s_RuntimeWarning, __pyx_k_RuntimeWarning, sizeof(__pyx_k_RuntimeWarning), 0, 0, 1, 1},
  {&__pyx_n_u_SO_REUSEPORT, __pyx_k_SO_REUSEPORT, sizeof(__pyx_k_SO_REUSEPORT), 0, 1, 0, 1},
  {&__pyx_n_s_SSLContext, __pyx_k_SSLContext, sizeof(__pyx_k_SSLContext), 0, 0, 1, 1},
  {&__pyx_n_s_SSLProtocol, __pyx_k_SSLProtocol, sizeof(__pyx_k_SSLProtocol), 0, 0, 1, 1},
  {&__pyx_n_s_STDOUT, __pyx_k_STDOUT, sizeof(__pyx_k_STDOUT), 0, 0, 1, 1},
  {&__pyx_n_s_Server_wait_closed, __pyx_k_Server_wait_closed, sizeof(__pyx_k_Server_wait_closed), 0, 0, 1, 1},
  {&__pyx_kp_u_SignalsStack_save_wasn_t_called, __pyx_k_SignalsStack_save_wasn_t_called, sizeof(__pyx_k_SignalsStack_save_wasn_t_called), 0, 1, 0, 0},
  {&__pyx_n_s_SystemExit, __pyx_k_SystemExit, sizeof(__pyx_k_SystemExit), 0, 0, 1, 1},
  {&__pyx_n_s_Task, __pyx_k_Task, sizeof(__pyx_k_Task), 0, 0, 1, 1},
  {&__pyx_n_s_ThreadPoolExecutor, __pyx_k_ThreadPoolExecutor, sizeof(__pyx_k_ThreadPoolExecutor), 0, 0, 1, 1},
  {&__pyx_n_s_TimeoutError, __pyx_k_TimeoutError, sizeof(__pyx_k_TimeoutError), 0, 0, 1, 1},
  {&__pyx_kp_u_TimerHandle_cancelled_x, __pyx_k_TimerHandle_cancelled_x, sizeof(__pyx_k_TimerHandle_cancelled_x), 0, 1, 0, 0},
  {&__pyx_kp_u_TimerHandle_r_x, __pyx_k_TimerHandle_r_x, sizeof(__pyx_k_TimerHandle_r_x), 0, 1, 0, 0},
  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
  {&__pyx_kp_u_UDPTransport_family_is_undefined, __pyx_k_UDPTransport_family_is_undefined, sizeof(__pyx_k_UDPTransport_family_is_undefined), 0, 1, 0, 0},
  {&__pyx_kp_u_UDPTransport_family_is_undefined_2, __pyx_k_UDPTransport_family_is_undefined_2, sizeof(__pyx_k_UDPTransport_family_is_undefined_2), 0, 1, 0, 0},
  {&__pyx_kp_u_UVProcessTransport__call_connect, __pyx_k_UVProcessTransport__call_connect, sizeof(__pyx_k_UVProcessTransport__call_connect), 0, 1, 0, 0},
  {&__pyx_kp_u_UVProcess__close_after_spawn_cal, __pyx_k_UVProcess__close_after_spawn_cal, sizeof(__pyx_k_UVProcess__close_after_spawn_cal), 0, 1, 0, 0},
  {&__pyx_kp_u_UVStream_shutdown_callback_calle, __pyx_k_UVStream_shutdown_callback_calle, sizeof(__pyx_k_UVStream_shutdown_callback_calle), 0, 1, 0, 0},
  {&__pyx_kp_u_UVStream_write_callback_called_w, __pyx_k_UVStream_write_callback_called_w, sizeof(__pyx_k_UVStream_write_callback_called_w), 0, 1, 0, 0},
  {&__pyx_kp_u_UVTransport__call_connection_los, __pyx_k_UVTransport__call_connection_los, sizeof(__pyx_k_UVTransport__call_connection_los), 0, 1, 0, 0},
  {&__pyx_kp_u_UVTransport__call_connection_mad, __pyx_k_UVTransport__call_connection_mad, sizeof(__pyx_k_UVTransport__call_connection_mad), 0, 1, 0, 0},
  {&__pyx_kp_u_UVTransport__start_reading, __pyx_k_UVTransport__start_reading, sizeof(__pyx_k_UVTransport__start_reading), 0, 1, 0, 0},
  {&__pyx_kp_u_Unable_to_deallocate_request_for, __pyx_k_Unable_to_deallocate_request_for, sizeof(__pyx_k_Unable_to_deallocate_request_for), 0, 1, 0, 0},
  {&__pyx_kp_u_Unhandled_error_in_exception_han, __pyx_k_Unhandled_error_in_exception_han, sizeof(__pyx_k_Unhandled_error_in_exception_han), 0, 1, 0, 0},
  {&__pyx_kp_u_Unhandled_exception_in_event_loo, __pyx_k_Unhandled_exception_in_event_loo, sizeof(__pyx_k_Unhandled_exception_in_event_loo), 0, 1, 0, 0},
  {&__pyx_kp_s_Users_yury_dev_magic_uvloop_uvl, __pyx_k_Users_yury_dev_magic_uvloop_uvl, sizeof(__pyx_k_Users_yury_dev_magic_uvloop_uvl), 0, 0, 1, 0},
  {&__pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_k_Users_yury_dev_magic_uvloop_uvl_2, sizeof(__pyx_k_Users_yury_dev_magic_uvloop_uvl_2), 0, 0, 1, 0},
  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto, __pyx_k_WriteSubprocessPipeProto, sizeof(__pyx_k_WriteSubprocessPipeProto), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto___init, __pyx_k_WriteSubprocessPipeProto___init, sizeof(__pyx_k_WriteSubprocessPipeProto___init), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto___repr, __pyx_k_WriteSubprocessPipeProto___repr, sizeof(__pyx_k_WriteSubprocessPipeProto___repr), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto_connect, __pyx_k_WriteSubprocessPipeProto_connect, sizeof(__pyx_k_WriteSubprocessPipeProto_connect), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto_connect_2, __pyx_k_WriteSubprocessPipeProto_connect_2, sizeof(__pyx_k_WriteSubprocessPipeProto_connect_2), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto_pause_w, __pyx_k_WriteSubprocessPipeProto_pause_w, sizeof(__pyx_k_WriteSubprocessPipeProto_pause_w), 0, 0, 1, 1},
  {&__pyx_n_s_WriteSubprocessPipeProto_resume, __pyx_k_WriteSubprocessPipeProto_resume, sizeof(__pyx_k_WriteSubprocessPipeProto_resume), 0, 0, 1, 1},
  {&__pyx_kp_u_You_must_set_server_hostname_whe, __pyx_k_You_must_set_server_hostname_whe, sizeof(__pyx_k_You_must_set_server_hostname_whe), 0, 1, 0, 0},
  {&__pyx_kp_b__104, __pyx_k__104, sizeof(__pyx_k__104), 0, 0, 0, 0},
  {&__pyx_kp_b__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 0, 0, 0},
  {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0},
  {&__pyx_kp_u__42, __pyx_k__42, sizeof(__pyx_k__42), 0, 1, 0, 0},
  {&__pyx_kp_u__53, __pyx_k__53, sizeof(__pyx_k__53), 0, 1, 0, 0},
  {&__pyx_kp_u__54, __pyx_k__54, sizeof(__pyx_k__54), 0, 1, 0, 0},
  {&__pyx_kp_u__76, __pyx_k__76, sizeof(__pyx_k__76), 0, 1, 0, 0},
  {&__pyx_kp_u__85, __pyx_k__85, sizeof(__pyx_k__85), 0, 1, 0, 0},
  {&__pyx_n_s_accept, __pyx_k_accept, sizeof(__pyx_k_accept), 0, 0, 1, 1},
  {&__pyx_n_s_add_done_callback, __pyx_k_add_done_callback, sizeof(__pyx_k_add_done_callback), 0, 0, 1, 1},
  {&__pyx_n_s_addr, __pyx_k_addr, sizeof(__pyx_k_addr), 0, 0, 1, 1},
  {&__pyx_n_s_address, __pyx_k_address, sizeof(__pyx_k_address), 0, 0, 1, 1},
  {&__pyx_kp_u_all_args_must_be_str_or_bytes, __pyx_k_all_args_must_be_str_or_bytes, sizeof(__pyx_k_all_args_must_be_str_or_bytes), 0, 1, 0, 0},
  {&__pyx_kp_u_all_environment_values_must_be_b, __pyx_k_all_environment_values_must_be_b, sizeof(__pyx_k_all_environment_values_must_be_b), 0, 1, 0, 0},
  {&__pyx_kp_u_all_environment_vars_must_be_byt, __pyx_k_all_environment_vars_must_be_byt, sizeof(__pyx_k_all_environment_vars_must_be_byt), 0, 1, 0, 0},
  {&__pyx_n_s_allow_broadcast, __pyx_k_allow_broadcast, sizeof(__pyx_k_allow_broadcast), 0, 0, 1, 1},
  {&__pyx_n_s_app_transport, __pyx_k_app_transport, sizeof(__pyx_k_app_transport), 0, 0, 1, 1},
  {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio, __pyx_k_asyncio, sizeof(__pyx_k_asyncio), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_base_events, __pyx_k_asyncio_base_events, sizeof(__pyx_k_asyncio_base_events), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_log, __pyx_k_asyncio_log, sizeof(__pyx_k_asyncio_log), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_sslproto, __pyx_k_asyncio_sslproto, sizeof(__pyx_k_asyncio_sslproto), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_tasks, __pyx_k_asyncio_tasks, sizeof(__pyx_k_asyncio_tasks), 0, 0, 1, 1},
  {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1},
  {&__pyx_n_s_backlog, __pyx_k_backlog, sizeof(__pyx_k_backlog), 0, 0, 1, 1},
  {&__pyx_n_s_base_events, __pyx_k_base_events, sizeof(__pyx_k_base_events), 0, 0, 1, 1},
  {&__pyx_kp_b_bin_sh, __pyx_k_bin_sh, sizeof(__pyx_k_bin_sh), 0, 0, 0, 0},
  {&__pyx_n_s_bind, __pyx_k_bind, sizeof(__pyx_k_bind), 0, 0, 1, 1},
  {&__pyx_n_s_bufsize, __pyx_k_bufsize, sizeof(__pyx_k_bufsize), 0, 0, 1, 1},
  {&__pyx_kp_u_bufsize_must_be_0, __pyx_k_bufsize_must_be_0, sizeof(__pyx_k_bufsize_must_be_0), 0, 1, 0, 0},
  {&__pyx_kp_b_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 0, 0},
  {&__pyx_n_s_call_exception_handler, __pyx_k_call_exception_handler, sizeof(__pyx_k_call_exception_handler), 0, 0, 1, 1},
  {&__pyx_n_s_call_later, __pyx_k_call_later, sizeof(__pyx_k_call_later), 0, 0, 1, 1},
  {&__pyx_n_s_call_soon, __pyx_k_call_soon, sizeof(__pyx_k_call_soon), 0, 0, 1, 1},
  {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1},
  {&__pyx_kp_u_called_after_destroying_the_UVH, __pyx_k_called_after_destroying_the_UVH, sizeof(__pyx_k_called_after_destroying_the_UVH), 0, 1, 0, 0},
  {&__pyx_kp_u_called_with_handle_data_NULL, __pyx_k_called_with_handle_data_NULL, sizeof(__pyx_k_called_with_handle_data_NULL), 0, 1, 0, 0},
  {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1},
  {&__pyx_n_s_cancelled, __pyx_k_cancelled, sizeof(__pyx_k_cancelled), 0, 0, 1, 1},
  {&__pyx_kp_u_cannot_apply_subprocess_STDOUT, __pyx_k_cannot_apply_subprocess_STDOUT, sizeof(__pyx_k_cannot_apply_subprocess_STDOUT), 0, 1, 0, 0},
  {&__pyx_kp_u_cannot_convert_sockaddr_into_Pyt, __pyx_k_cannot_convert_sockaddr_into_Pyt, sizeof(__pyx_k_cannot_convert_sockaddr_into_Pyt), 0, 1, 0, 0},
  {&__pyx_kp_u_cannot_open_a_UDP_handle_invalid, __pyx_k_cannot_open_a_UDP_handle_invalid, sizeof(__pyx_k_cannot_open_a_UDP_handle_invalid), 0, 1, 0, 0},
  {&__pyx_kp_u_cannot_spawn_a_process_args_are, __pyx_k_cannot_spawn_a_process_args_are, sizeof(__pyx_k_cannot_spawn_a_process_args_are), 0, 1, 0, 0},
  {&__pyx_n_s_chain, __pyx_k_chain, sizeof(__pyx_k_chain), 0, 0, 1, 1},
  {&__pyx_n_s_check_resolved_address, __pyx_k_check_resolved_address, sizeof(__pyx_k_check_resolved_address), 0, 0, 1, 1},
  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
  {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1},
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
  {&__pyx_n_s_close_fds, __pyx_k_close_fds, sizeof(__pyx_k_close_fds), 0, 0, 1, 1},
  {&__pyx_kp_u_closed_reading_x, __pyx_k_closed_reading_x, sizeof(__pyx_k_closed_reading_x), 0, 1, 0, 0},
  {&__pyx_kp_u_closed_x, __pyx_k_closed_x, sizeof(__pyx_k_closed_x), 0, 1, 0, 0},
  {&__pyx_n_s_cmd, __pyx_k_cmd, sizeof(__pyx_k_cmd), 0, 0, 1, 1},
  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
  {&__pyx_n_s_concurrent, __pyx_k_concurrent, sizeof(__pyx_k_concurrent), 0, 0, 1, 1},
  {&__pyx_kp_u_concurrent_allocations, __pyx_k_concurrent_allocations, sizeof(__pyx_k_concurrent_allocations), 0, 1, 0, 0},
  {&__pyx_n_s_concurrent_futures, __pyx_k_concurrent_futures, sizeof(__pyx_k_concurrent_futures), 0, 0, 1, 1},
  {&__pyx_n_s_connect, __pyx_k_connect, sizeof(__pyx_k_connect), 0, 0, 1, 1},
  {&__pyx_kp_u_connect_failed, __pyx_k_connect_failed, sizeof(__pyx_k_connect_failed), 0, 1, 0, 0},
  {&__pyx_n_s_connect_read_pipe, __pyx_k_connect_read_pipe, sizeof(__pyx_k_connect_read_pipe), 0, 0, 1, 1},
  {&__pyx_n_s_connect_write_pipe, __pyx_k_connect_write_pipe, sizeof(__pyx_k_connect_write_pipe), 0, 0, 1, 1},
  {&__pyx_n_s_connection_lost, __pyx_k_connection_lost, sizeof(__pyx_k_connection_lost), 0, 0, 1, 1},
  {&__pyx_n_s_connection_made, __pyx_k_connection_made, sizeof(__pyx_k_connection_made), 0, 0, 1, 1},
  {&__pyx_n_u_context, __pyx_k_context, sizeof(__pyx_k_context), 0, 1, 0, 1},
  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
  {&__pyx_n_s_coroutine, __pyx_k_coroutine, sizeof(__pyx_k_coroutine), 0, 0, 1, 1},
  {&__pyx_n_s_coroutines, __pyx_k_coroutines, sizeof(__pyx_k_coroutines), 0, 0, 1, 1},
  {&__pyx_kp_u_coroutines_cannot_be_used_with_a, __pyx_k_coroutines_cannot_be_used_with_a, sizeof(__pyx_k_coroutines_cannot_be_used_with_a), 0, 1, 0, 0},
  {&__pyx_kp_u_coroutines_cannot_be_used_with_r, __pyx_k_coroutines_cannot_be_used_with_r, sizeof(__pyx_k_coroutines_cannot_be_used_with_r), 0, 1, 0, 0},
  {&__pyx_kp_u_could_not_bind_to_local_addr, __pyx_k_could_not_bind_to_local_addr, sizeof(__pyx_k_could_not_bind_to_local_addr), 0, 1, 0, 0},
  {&__pyx_kp_u_could_not_bind_to_remote_addr, __pyx_k_could_not_bind_to_remote_addr, sizeof(__pyx_k_could_not_bind_to_remote_addr), 0, 1, 0, 0},
  {&__pyx_kp_u_could_not_close_attached_file_ob, __pyx_k_could_not_close_attached_file_ob, sizeof(__pyx_k_could_not_close_attached_file_ob), 0, 1, 0, 0},
  {&__pyx_n_s_create_connection, __pyx_k_create_connection, sizeof(__pyx_k_create_connection), 0, 0, 1, 1},
  {&__pyx_n_s_create_connection_locals_genexpr, __pyx_k_create_connection_locals_genexpr, sizeof(__pyx_k_create_connection_locals_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_create_datagram_endpoint, __pyx_k_create_datagram_endpoint, sizeof(__pyx_k_create_datagram_endpoint), 0, 0, 1, 1},
  {&__pyx_n_s_create_datagram_endpoint_locals, __pyx_k_create_datagram_endpoint_locals, sizeof(__pyx_k_create_datagram_endpoint_locals), 0, 0, 1, 1},
  {&__pyx_n_s_create_server, __pyx_k_create_server, sizeof(__pyx_k_create_server), 0, 0, 1, 1},
  {&__pyx_n_s_create_unix_connection, __pyx_k_create_unix_connection, sizeof(__pyx_k_create_unix_connection), 0, 0, 1, 1},
  {&__pyx_n_s_create_unix_server, __pyx_k_create_unix_server, sizeof(__pyx_k_create_unix_server), 0, 0, 1, 1},
  {&__pyx_n_s_creationflags, __pyx_k_creationflags, sizeof(__pyx_k_creationflags), 0, 0, 1, 1},
  {&__pyx_kp_u_creationflags_is_not_supported, __pyx_k_creationflags_is_not_supported, sizeof(__pyx_k_creationflags_is_not_supported), 0, 1, 0, 0},
  {&__pyx_n_s_cwd, __pyx_k_cwd, sizeof(__pyx_k_cwd), 0, 0, 1, 1},
  {&__pyx_kp_u_cwd_must_be_a_str_or_bytes_objec, __pyx_k_cwd_must_be_a_str_or_bytes_objec, sizeof(__pyx_k_cwd_must_be_a_str_or_bytes_objec), 0, 1, 0, 0},
  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
  {&__pyx_n_s_data_received, __pyx_k_data_received, sizeof(__pyx_k_data_received), 0, 0, 1, 1},
  {&__pyx_n_s_datagram_received, __pyx_k_datagram_received, sizeof(__pyx_k_datagram_received), 0, 0, 1, 1},
  {&__pyx_kp_u_dealloc____handle_is_NULL__cl, __pyx_k_dealloc____handle_is_NULL__cl, sizeof(__pyx_k_dealloc____handle_is_NULL__cl), 0, 1, 0, 0},
  {&__pyx_kp_u_deallocating_a_running_event_loo, __pyx_k_deallocating_a_running_event_loo, sizeof(__pyx_k_deallocating_a_running_event_loo), 0, 1, 0, 0},
  {&__pyx_kp_u_deallocating_an_open_event_loop, __pyx_k_deallocating_an_open_event_loop, sizeof(__pyx_k_deallocating_an_open_event_loop), 0, 1, 0, 0},
  {&__pyx_n_s_debug_wrapper, __pyx_k_debug_wrapper, sizeof(__pyx_k_debug_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1},
  {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1},
  {&__pyx_n_s_default_exception_handler, __pyx_k_default_exception_handler, sizeof(__pyx_k_default_exception_handler), 0, 0, 1, 1},
  {&__pyx_n_s_delay, __pyx_k_delay, sizeof(__pyx_k_delay), 0, 0, 1, 1},
  {&__pyx_n_s_deque, __pyx_k_deque, sizeof(__pyx_k_deque), 0, 0, 1, 1},
  {&__pyx_n_s_detach, __pyx_k_detach, sizeof(__pyx_k_detach), 0, 0, 1, 1},
  {&__pyx_n_s_devnull, __pyx_k_devnull, sizeof(__pyx_k_devnull), 0, 0, 1, 1},
  {&__pyx_n_s_disconnected, __pyx_k_disconnected, sizeof(__pyx_k_disconnected), 0, 0, 1, 1},
  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
  {&__pyx_n_s_done, __pyx_k_done, sizeof(__pyx_k_done), 0, 0, 1, 1},
  {&__pyx_n_s_dup, __pyx_k_dup, sizeof(__pyx_k_dup), 0, 0, 1, 1},
  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
  {&__pyx_n_s_ensure_future, __pyx_k_ensure_future, sizeof(__pyx_k_ensure_future), 0, 0, 1, 1},
  {&__pyx_n_s_env, __pyx_k_env, sizeof(__pyx_k_env), 0, 0, 1, 1},
  {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1},
  {&__pyx_n_s_eof_received, __pyx_k_eof_received, sizeof(__pyx_k_eof_received), 0, 0, 1, 1},
  {&__pyx_kp_u_epected_AF_INET_or_AF_INET6_fami, __pyx_k_epected_AF_INET_or_AF_INET6_fami, sizeof(__pyx_k_epected_AF_INET_or_AF_INET6_fami), 0, 1, 0, 0},
  {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1},
  {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
  {&__pyx_n_s_error_received, __pyx_k_error_received, sizeof(__pyx_k_error_received), 0, 0, 1, 1},
  {&__pyx_kp_u_error_status_in_uv_stream_t_list, __pyx_k_error_status_in_uv_stream_t_list, sizeof(__pyx_k_error_status_in_uv_stream_t_list), 0, 1, 0, 0},
  {&__pyx_kp_u_error_status_in_uv_stream_t_read, __pyx_k_error_status_in_uv_stream_t_read, sizeof(__pyx_k_error_status_in_uv_stream_t_read), 0, 1, 0, 0},
  {&__pyx_kp_u_error_status_in_uv_stream_t_shut, __pyx_k_error_status_in_uv_stream_t_shut, sizeof(__pyx_k_error_status_in_uv_stream_t_shut), 0, 1, 0, 0},
  {&__pyx_kp_u_error_status_in_uv_stream_t_writ, __pyx_k_error_status_in_uv_stream_t_writ, sizeof(__pyx_k_error_status_in_uv_stream_t_writ), 0, 1, 0, 0},
  {&__pyx_kp_u_error_while_attempting_to_bind_o, __pyx_k_error_while_attempting_to_bind_o, sizeof(__pyx_k_error_while_attempting_to_bind_o), 0, 1, 0, 0},
  {&__pyx_n_s_ex, __pyx_k_ex, sizeof(__pyx_k_ex), 0, 0, 1, 1},
  {&__pyx_n_s_exc, __pyx_k_exc, sizeof(__pyx_k_exc), 0, 0, 1, 1},
  {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1},
  {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1},
  {&__pyx_n_u_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 1, 0, 1},
  {&__pyx_n_s_executable, __pyx_k_executable, sizeof(__pyx_k_executable), 0, 0, 1, 1},
  {&__pyx_n_s_executor, __pyx_k_executor, sizeof(__pyx_k_executor), 0, 0, 1, 1},
  {&__pyx_kp_u_failed_to_restore_signal_sigfill, __pyx_k_failed_to_restore_signal_sigfill, sizeof(__pyx_k_failed_to_restore_signal_sigfill), 0, 1, 0, 0},
  {&__pyx_kp_u_failed_to_set_SIGINT_signal_sigf, __pyx_k_failed_to_set_SIGINT_signal_sigf, sizeof(__pyx_k_failed_to_set_SIGINT_signal_sigf), 0, 1, 0, 0},
  {&__pyx_n_s_family, __pyx_k_family, sizeof(__pyx_k_family), 0, 0, 1, 1},
  {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1},
  {&__pyx_n_s_fileno, __pyx_k_fileno, sizeof(__pyx_k_fileno), 0, 0, 1, 1},
  {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
  {&__pyx_n_s_force_close, __pyx_k_force_close, sizeof(__pyx_k_force_close), 0, 0, 1, 1},
  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
  {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1},
  {&__pyx_n_s_functools, __pyx_k_functools, sizeof(__pyx_k_functools), 0, 0, 1, 1},
  {&__pyx_n_s_fut, __pyx_k_fut, sizeof(__pyx_k_fut), 0, 0, 1, 1},
  {&__pyx_n_s_futures, __pyx_k_futures, sizeof(__pyx_k_futures), 0, 0, 1, 1},
  {&__pyx_n_s_gaierror, __pyx_k_gaierror, sizeof(__pyx_k_gaierror), 0, 0, 1, 1},
  {&__pyx_n_s_gather, __pyx_k_gather, sizeof(__pyx_k_gather), 0, 0, 1, 1},
  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
  {&__pyx_n_s_get_coroutine_wrapper, __pyx_k_get_coroutine_wrapper, sizeof(__pyx_k_get_coroutine_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_get_debug, __pyx_k_get_debug, sizeof(__pyx_k_get_debug), 0, 0, 1, 1},
  {&__pyx_n_s_get_extra_info, __pyx_k_get_extra_info, sizeof(__pyx_k_get_extra_info), 0, 0, 1, 1},
  {&__pyx_n_s_get_inheritable, __pyx_k_get_inheritable, sizeof(__pyx_k_get_inheritable), 0, 0, 1, 1},
  {&__pyx_kp_u_getaddrinfo_returned_empty_list, __pyx_k_getaddrinfo_returned_empty_list, sizeof(__pyx_k_getaddrinfo_returned_empty_list), 0, 1, 0, 0},
  {&__pyx_kp_u_getaddrinfo_returned_empty_list_2, __pyx_k_getaddrinfo_returned_empty_list_2, sizeof(__pyx_k_getaddrinfo_returned_empty_list_2), 0, 1, 0, 0},
  {&__pyx_n_s_getnameinfo, __pyx_k_getnameinfo, sizeof(__pyx_k_getnameinfo), 0, 0, 1, 1},
  {&__pyx_kp_u_getnameinfo_argument_1_must_be_a, __pyx_k_getnameinfo_argument_1_must_be_a, sizeof(__pyx_k_getnameinfo_argument_1_must_be_a), 0, 1, 0, 0},
  {&__pyx_n_s_getpeername, __pyx_k_getpeername, sizeof(__pyx_k_getpeername), 0, 0, 1, 1},
  {&__pyx_kp_u_getsockaddrarg_flowinfo_must_be, __pyx_k_getsockaddrarg_flowinfo_must_be, sizeof(__pyx_k_getsockaddrarg_flowinfo_must_be), 0, 1, 0, 0},
  {&__pyx_kp_u_getsockaddrarg_scope_id_must_be, __pyx_k_getsockaddrarg_scope_id_must_be, sizeof(__pyx_k_getsockaddrarg_scope_id_must_be), 0, 1, 0, 0},
  {&__pyx_n_s_getsockname, __pyx_k_getsockname, sizeof(__pyx_k_getsockname), 0, 0, 1, 1},
  {&__pyx_n_s_getsockopt, __pyx_k_getsockopt, sizeof(__pyx_k_getsockopt), 0, 0, 1, 1},
  {&__pyx_n_s_gettimeout, __pyx_k_gettimeout, sizeof(__pyx_k_gettimeout), 0, 0, 1, 1},
  {&__pyx_kp_u_handle_data_is_NULL_in___close_a, __pyx_k_handle_data_is_NULL_in___close_a, sizeof(__pyx_k_handle_data_is_NULL_in___close_a), 0, 1, 0, 0},
  {&__pyx_kp_u_handle_data_is___NOHANDLE___yet, __pyx_k_handle_data_is___NOHANDLE___yet, sizeof(__pyx_k_handle_data_is___NOHANDLE___yet), 0, 1, 0, 0},
  {&__pyx_n_s_high, __pyx_k_high, sizeof(__pyx_k_high), 0, 0, 1, 1},
  {&__pyx_kp_u_high_r_must_be_low_r_must_be_0, __pyx_k_high_r_must_be_low_r_must_be_0, sizeof(__pyx_k_high_r_must_be_low_r_must_be_0), 0, 1, 0, 0},
  {&__pyx_n_s_host, __pyx_k_host, sizeof(__pyx_k_host), 0, 0, 1, 1},
  {&__pyx_kp_u_host_and_port_was_not_specified, __pyx_k_host_and_port_was_not_specified, sizeof(__pyx_k_host_and_port_was_not_specified), 0, 1, 0, 0},
  {&__pyx_kp_u_host_must_be_a_str_or_bytes, __pyx_k_host_must_be_a_str_or_bytes, sizeof(__pyx_k_host_must_be_a_str_or_bytes), 0, 1, 0, 0},
  {&__pyx_kp_u_host_must_be_a_string_or_bytes_o, __pyx_k_host_must_be_a_string_or_bytes_o, sizeof(__pyx_k_host_must_be_a_string_or_bytes_o), 0, 1, 0, 0},
  {&__pyx_kp_u_host_port_and_sock_can_not_be_sp, __pyx_k_host_port_and_sock_can_not_be_sp, sizeof(__pyx_k_host_port_and_sock_can_not_be_sp), 0, 1, 0, 0},
  {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
  {&__pyx_n_s_ident, __pyx_k_ident, sizeof(__pyx_k_ident), 0, 0, 1, 1},
  {&__pyx_n_u_idna, __pyx_k_idna, sizeof(__pyx_k_idna), 0, 1, 0, 1},
  {&__pyx_n_s_ignore_environment, __pyx_k_ignore_environment, sizeof(__pyx_k_ignore_environment), 0, 0, 1, 1},
  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
  {&__pyx_n_s_inspect, __pyx_k_inspect, sizeof(__pyx_k_inspect), 0, 0, 1, 1},
  {&__pyx_kp_u_invalid_Handle_cb_type, __pyx_k_invalid_Handle_cb_type, sizeof(__pyx_k_invalid_Handle_cb_type), 0, 1, 0, 0},
  {&__pyx_kp_u_invalid__init_protocol_call, __pyx_k_invalid__init_protocol_call, sizeof(__pyx_k_invalid__init_protocol_call), 0, 1, 0, 0},
  {&__pyx_kp_u_invalid_stderr_argument_value_r, __pyx_k_invalid_stderr_argument_value_r, sizeof(__pyx_k_invalid_stderr_argument_value_r), 0, 1, 0, 0},
  {&__pyx_kp_u_invalid_stdin_argument_value_r, __pyx_k_invalid_stdin_argument_value_r, sizeof(__pyx_k_invalid_stdin_argument_value_r), 0, 1, 0, 0},
  {&__pyx_kp_u_invalid_stdout_argument_value_r, __pyx_k_invalid_stdout_argument_value_r, sizeof(__pyx_k_invalid_stdout_argument_value_r), 0, 1, 0, 0},
  {&__pyx_kp_u_invalid_waiter_object_r_expected, __pyx_k_invalid_waiter_object_r_expected, sizeof(__pyx_k_invalid_waiter_object_r_expected), 0, 1, 0, 0},
  {&__pyx_n_s_is_closed, __pyx_k_is_closed, sizeof(__pyx_k_is_closed), 0, 0, 1, 1},
  {&__pyx_kp_u_is_not_supposed_to_be_instantia, __pyx_k_is_not_supposed_to_be_instantia, sizeof(__pyx_k_is_not_supposed_to_be_instantia), 0, 1, 0, 0},
  {&__pyx_kp_u_is_open_in___dealloc___with_loo, __pyx_k_is_open_in___dealloc___with_loo, sizeof(__pyx_k_is_open_in___dealloc___with_loo), 0, 1, 0, 0},
  {&__pyx_n_s_is_running, __pyx_k_is_running, sizeof(__pyx_k_is_running), 0, 0, 1, 1},
  {&__pyx_n_s_iscoroutine, __pyx_k_iscoroutine, sizeof(__pyx_k_iscoroutine), 0, 0, 1, 1},
  {&__pyx_n_s_iscoroutinefunction, __pyx_k_iscoroutinefunction, sizeof(__pyx_k_iscoroutinefunction), 0, 0, 1, 1},
  {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
  {&__pyx_n_s_itertools, __pyx_k_itertools, sizeof(__pyx_k_itertools), 0, 0, 1, 1},
  {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
  {&__pyx_n_s_local_addr, __pyx_k_local_addr, sizeof(__pyx_k_local_addr), 0, 0, 1, 1},
  {&__pyx_kp_u_local_addr_must_be_a_tuple_of_ho, __pyx_k_local_addr_must_be_a_tuple_of_ho, sizeof(__pyx_k_local_addr_must_be_a_tuple_of_ho), 0, 1, 0, 0},
  {&__pyx_kp_u_local_addr_must_be_a_tuple_of_ho_2, __pyx_k_local_addr_must_be_a_tuple_of_ho_2, sizeof(__pyx_k_local_addr_must_be_a_tuple_of_ho_2), 0, 1, 0, 0},
  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
  {&__pyx_n_s_log_destroy_pending, __pyx_k_log_destroy_pending, sizeof(__pyx_k_log_destroy_pending), 0, 0, 1, 1},
  {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1},
  {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1},
  {&__pyx_kp_u_loop__on_idle, __pyx_k_loop__on_idle, sizeof(__pyx_k_loop__on_idle), 0, 1, 0, 0},
  {&__pyx_kp_u_loop__on_sighup, __pyx_k_loop__on_sighup, sizeof(__pyx_k_loop__on_sighup), 0, 1, 0, 0},
  {&__pyx_kp_u_loop__on_sigint, __pyx_k_loop__on_sigint, sizeof(__pyx_k_loop__on_sigint), 0, 1, 0, 0},
  {&__pyx_kp_u_loop_set_debug_False_cannot_unse, __pyx_k_loop_set_debug_False_cannot_unse, sizeof(__pyx_k_loop_set_debug_False_cannot_unse), 0, 1, 0, 0},
  {&__pyx_kp_u_loop_set_debug_True_cannot_set_d, __pyx_k_loop_set_debug_True_cannot_set_d, sizeof(__pyx_k_loop_set_debug_True_cannot_set_d), 0, 1, 0, 0},
  {&__pyx_n_s_low, __pyx_k_low, sizeof(__pyx_k_low), 0, 0, 1, 1},
  {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_main_thread, __pyx_k_main_thread, sizeof(__pyx_k_main_thread), 0, 0, 1, 1},
  {&__pyx_n_u_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 1, 0, 1},
  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
  {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
  {&__pyx_kp_u_new_callbacks_were_queued_during, __pyx_k_new_callbacks_were_queued_during, sizeof(__pyx_k_new_callbacks_were_queued_during), 0, 1, 0, 0},
  {&__pyx_kp_u_new_poll_handles_were_queued_dur, __pyx_k_new_poll_handles_were_queued_dur, sizeof(__pyx_k_new_poll_handles_were_queued_dur), 0, 1, 0, 0},
  {&__pyx_kp_u_new_timers_were_queued_during_lo, __pyx_k_new_timers_were_queued_during_lo, sizeof(__pyx_k_new_timers_were_queued_during_lo), 0, 1, 0, 0},
  {&__pyx_kp_u_no_path_and_sock_were_specified, __pyx_k_no_path_and_sock_were_specified, sizeof(__pyx_k_no_path_and_sock_were_specified), 0, 1, 0, 0},
  {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
  {&__pyx_n_s_on_ssl_connected, __pyx_k_on_ssl_connected, sizeof(__pyx_k_on_ssl_connected), 0, 0, 1, 1},
  {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
  {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
  {&__pyx_n_s_partial, __pyx_k_partial, sizeof(__pyx_k_partial), 0, 0, 1, 1},
  {&__pyx_n_s_pass_fds, __pyx_k_pass_fds, sizeof(__pyx_k_pass_fds), 0, 0, 1, 1},
  {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
  {&__pyx_kp_u_path_and_sock_can_not_be_specifi, __pyx_k_path_and_sock_can_not_be_specifi, sizeof(__pyx_k_path_and_sock_can_not_be_specifi), 0, 1, 0, 0},
  {&__pyx_kp_u_path_was_not_specified_and_no_so, __pyx_k_path_was_not_specified_and_no_so, sizeof(__pyx_k_path_was_not_specified_and_no_so), 0, 1, 0, 0},
  {&__pyx_n_s_pause_writing, __pyx_k_pause_writing, sizeof(__pyx_k_pause_writing), 0, 0, 1, 1},
  {&__pyx_n_u_peername, __pyx_k_peername, sizeof(__pyx_k_peername), 0, 1, 0, 1},
  {&__pyx_n_s_pipe, __pyx_k_pipe, sizeof(__pyx_k_pipe), 0, 0, 1, 1},
  {&__pyx_n_u_pipe, __pyx_k_pipe, sizeof(__pyx_k_pipe), 0, 1, 0, 1},
  {&__pyx_n_s_pipe_connection_lost, __pyx_k_pipe_connection_lost, sizeof(__pyx_k_pipe_connection_lost), 0, 0, 1, 1},
  {&__pyx_n_s_pipe_data_received, __pyx_k_pipe_data_received, sizeof(__pyx_k_pipe_data_received), 0, 0, 1, 1},
  {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
  {&__pyx_n_s_popleft, __pyx_k_popleft, sizeof(__pyx_k_popleft), 0, 0, 1, 1},
  {&__pyx_n_s_port, __pyx_k_port, sizeof(__pyx_k_port), 0, 0, 1, 1},
  {&__pyx_kp_u_port_must_be_a_str_bytes_or_int, __pyx_k_port_must_be_a_str_bytes_or_int, sizeof(__pyx_k_port_must_be_a_str_bytes_or_int), 0, 1, 0, 0},
  {&__pyx_n_s_preexec_fn, __pyx_k_preexec_fn, sizeof(__pyx_k_preexec_fn), 0, 0, 1, 1},
  {&__pyx_kp_u_preexec_fn_is_not_supported, __pyx_k_preexec_fn_is_not_supported, sizeof(__pyx_k_preexec_fn_is_not_supported), 0, 1, 0, 0},
  {&__pyx_kp_u_preexec_fn_parameter_is_not_supp, __pyx_k_preexec_fn_parameter_is_not_supp, sizeof(__pyx_k_preexec_fn_parameter_is_not_supp), 0, 1, 0, 0},
  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
  {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
  {&__pyx_n_s_proc, __pyx_k_proc, sizeof(__pyx_k_proc), 0, 0, 1, 1},
  {&__pyx_n_s_process_exited, __pyx_k_process_exited, sizeof(__pyx_k_process_exited), 0, 0, 1, 1},
  {&__pyx_n_s_program, __pyx_k_program, sizeof(__pyx_k_program), 0, 0, 1, 1},
  {&__pyx_n_s_proto, __pyx_k_proto, sizeof(__pyx_k_proto), 0, 0, 1, 1},
  {&__pyx_n_s_proto_factory, __pyx_k_proto_factory, sizeof(__pyx_k_proto_factory), 0, 0, 1, 1},
  {&__pyx_n_u_protocol, __pyx_k_protocol, sizeof(__pyx_k_protocol), 0, 1, 0, 1},
  {&__pyx_n_s_protocol_factory, __pyx_k_protocol_factory, sizeof(__pyx_k_protocol_factory), 0, 0, 1, 1},
  {&__pyx_kp_u_protocol_is_not_set_cannot_call, __pyx_k_protocol_is_not_set_cannot_call, sizeof(__pyx_k_protocol_is_not_set_cannot_call), 0, 1, 0, 0},
  {&__pyx_kp_u_protocol_is_required, __pyx_k_protocol_is_required, sizeof(__pyx_k_protocol_is_required), 0, 1, 0, 0},
  {&__pyx_kp_u_protocol_pause_writing_failed, __pyx_k_protocol_pause_writing_failed, sizeof(__pyx_k_protocol_pause_writing_failed), 0, 1, 0, 0},
  {&__pyx_kp_u_protocol_resume_writing_failed, __pyx_k_protocol_resume_writing_failed, sizeof(__pyx_k_protocol_resume_writing_failed), 0, 1, 0, 0},
  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
  {&__pyx_kp_u_r_fileno_returned_non_integer, __pyx_k_r_fileno_returned_non_integer, sizeof(__pyx_k_r_fileno_returned_non_integer), 0, 1, 0, 0},
  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
  {&__pyx_n_s_recv, __pyx_k_recv, sizeof(__pyx_k_recv), 0, 0, 1, 1},
  {&__pyx_n_s_remote_addr, __pyx_k_remote_addr, sizeof(__pyx_k_remote_addr), 0, 0, 1, 1},
  {&__pyx_kp_u_remote_addr_must_be_a_tuple_of_h, __pyx_k_remote_addr_must_be_a_tuple_of_h, sizeof(__pyx_k_remote_addr_must_be_a_tuple_of_h), 0, 1, 0, 0},
  {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1},
  {&__pyx_n_s_remove_done_callback, __pyx_k_remove_done_callback, sizeof(__pyx_k_remove_done_callback), 0, 0, 1, 1},
  {&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
  {&__pyx_n_s_restore_signals, __pyx_k_restore_signals, sizeof(__pyx_k_restore_signals), 0, 0, 1, 1},
  {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
  {&__pyx_n_s_resume_writing, __pyx_k_resume_writing, sizeof(__pyx_k_resume_writing), 0, 0, 1, 1},
  {&__pyx_n_s_reuse_address, __pyx_k_reuse_address, sizeof(__pyx_k_reuse_address), 0, 0, 1, 1},
  {&__pyx_n_s_reuse_port, __pyx_k_reuse_port, sizeof(__pyx_k_reuse_port), 0, 0, 1, 1},
  {&__pyx_kp_u_reuse_port_not_supported_by_sock, __pyx_k_reuse_port_not_supported_by_sock, sizeof(__pyx_k_reuse_port_not_supported_by_sock), 0, 1, 0, 0},
  {&__pyx_n_s_run_forever, __pyx_k_run_forever, sizeof(__pyx_k_run_forever), 0, 0, 1, 1},
  {&__pyx_n_s_run_until_complete_locals_lambda, __pyx_k_run_until_complete_locals_lambda, sizeof(__pyx_k_run_until_complete_locals_lambda), 0, 0, 1, 1},
  {&__pyx_kp_u_running_closed_debug, __pyx_k_running_closed_debug, sizeof(__pyx_k_running_closed_debug), 0, 1, 0, 0},
  {&__pyx_kp_u_s_fd_s_pipe_r, __pyx_k_s_fd_s_pipe_r, sizeof(__pyx_k_s_fd_s_pipe_r), 0, 1, 0, 0},
  {&__pyx_kp_u_s_sockets_r, __pyx_k_s_sockets_r, sizeof(__pyx_k_s_sockets_r), 0, 1, 0, 0},
  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
  {&__pyx_n_s_server_hostname, __pyx_k_server_hostname, sizeof(__pyx_k_server_hostname), 0, 0, 1, 1},
  {&__pyx_kp_u_server_hostname_is_only_meaningf, __pyx_k_server_hostname_is_only_meaningf, sizeof(__pyx_k_server_hostname_is_only_meaningf), 0, 1, 0, 0},
  {&__pyx_n_s_set_coroutine_wrapper, __pyx_k_set_coroutine_wrapper, sizeof(__pyx_k_set_coroutine_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_set_debug, __pyx_k_set_debug, sizeof(__pyx_k_set_debug), 0, 0, 1, 1},
  {&__pyx_n_s_set_exception, __pyx_k_set_exception, sizeof(__pyx_k_set_exception), 0, 0, 1, 1},
  {&__pyx_n_s_set_inheritable, __pyx_k_set_inheritable, sizeof(__pyx_k_set_inheritable), 0, 0, 1, 1},
  {&__pyx_n_s_set_result, __pyx_k_set_result, sizeof(__pyx_k_set_result), 0, 0, 1, 1},
  {&__pyx_n_s_setblocking, __pyx_k_setblocking, sizeof(__pyx_k_setblocking), 0, 0, 1, 1},
  {&__pyx_n_s_shell, __pyx_k_shell, sizeof(__pyx_k_shell), 0, 0, 1, 1},
  {&__pyx_kp_u_shell_must_be_False, __pyx_k_shell_must_be_False, sizeof(__pyx_k_shell_must_be_False), 0, 1, 0, 0},
  {&__pyx_kp_u_shell_must_be_True, __pyx_k_shell_must_be_True, sizeof(__pyx_k_shell_must_be_True), 0, 1, 0, 0},
  {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1},
  {&__pyx_n_s_sig, __pyx_k_sig, sizeof(__pyx_k_sig), 0, 0, 1, 1},
  {&__pyx_kp_u_sig_cannot_be_caught, __pyx_k_sig_cannot_be_caught, sizeof(__pyx_k_sig_cannot_be_caught), 0, 1, 0, 0},
  {&__pyx_kp_u_sig_must_be_an_int_not_r, __pyx_k_sig_must_be_an_int_not_r, sizeof(__pyx_k_sig_must_be_an_int_not_r), 0, 1, 0, 0},
  {&__pyx_kp_u_sig_out_of_range_1, __pyx_k_sig_out_of_range_1, sizeof(__pyx_k_sig_out_of_range_1), 0, 1, 0, 0},
  {&__pyx_n_s_signal, __pyx_k_signal, sizeof(__pyx_k_signal), 0, 0, 1, 1},
  {&__pyx_n_s_sleep, __pyx_k_sleep, sizeof(__pyx_k_sleep), 0, 0, 1, 1},
  {&__pyx_n_s_sock, __pyx_k_sock, sizeof(__pyx_k_sock), 0, 0, 1, 1},
  {&__pyx_n_s_sockaddr, __pyx_k_sockaddr, sizeof(__pyx_k_sockaddr), 0, 0, 1, 1},
  {&__pyx_kp_u_sockaddr_must_be_a_tuple_of_2_3, __pyx_k_sockaddr_must_be_a_tuple_of_2_3, sizeof(__pyx_k_sockaddr_must_be_a_tuple_of_2_3), 0, 1, 0, 0},
  {&__pyx_kp_u_sockaddr_resolved_to_multiple_ad, __pyx_k_sockaddr_resolved_to_multiple_ad, sizeof(__pyx_k_sockaddr_resolved_to_multiple_ad), 0, 1, 0, 0},
  {&__pyx_n_s_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 0, 1, 1},
  {&__pyx_n_u_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 1, 0, 1},
  {&__pyx_kp_u_socket_modifier_keyword_argument, __pyx_k_socket_modifier_keyword_argument, sizeof(__pyx_k_socket_modifier_keyword_argument), 0, 1, 0, 0},
  {&__pyx_n_s_sockets, __pyx_k_sockets, sizeof(__pyx_k_sockets), 0, 0, 1, 1},
  {&__pyx_n_u_sockname, __pyx_k_sockname, sizeof(__pyx_k_sockname), 0, 1, 0, 1},
  {&__pyx_n_s_ssl, __pyx_k_ssl, sizeof(__pyx_k_ssl), 0, 0, 1, 1},
  {&__pyx_kp_u_ssl_argument_must_be_an_SSLConte, __pyx_k_ssl_argument_must_be_an_SSLConte, sizeof(__pyx_k_ssl_argument_must_be_an_SSLConte), 0, 1, 0, 0},
  {&__pyx_kp_u_ssl_is_expected_to_be_None_or_an, __pyx_k_ssl_is_expected_to_be_None_or_an, sizeof(__pyx_k_ssl_is_expected_to_be_None_or_an), 0, 1, 0, 0},
  {&__pyx_n_s_sslproto, __pyx_k_sslproto, sizeof(__pyx_k_sslproto), 0, 0, 1, 1},
  {&__pyx_n_s_start_new_session, __pyx_k_start_new_session, sizeof(__pyx_k_start_new_session), 0, 0, 1, 1},
  {&__pyx_n_s_startupinfo, __pyx_k_startupinfo, sizeof(__pyx_k_startupinfo), 0, 0, 1, 1},
  {&__pyx_kp_u_startupinfo_is_not_supported, __pyx_k_startupinfo_is_not_supported, sizeof(__pyx_k_startupinfo_is_not_supported), 0, 1, 0, 0},
  {&__pyx_n_s_std_signal, __pyx_k_std_signal, sizeof(__pyx_k_std_signal), 0, 0, 1, 1},
  {&__pyx_n_s_stderr, __pyx_k_stderr, sizeof(__pyx_k_stderr), 0, 0, 1, 1},
  {&__pyx_n_s_stdin, __pyx_k_stdin, sizeof(__pyx_k_stdin), 0, 0, 1, 1},
  {&__pyx_n_s_stdio_fut, __pyx_k_stdio_fut, sizeof(__pyx_k_stdio_fut), 0, 0, 1, 1},
  {&__pyx_n_s_stdio_inited, __pyx_k_stdio_inited, sizeof(__pyx_k_stdio_inited), 0, 0, 1, 1},
  {&__pyx_n_s_stdout, __pyx_k_stdout, sizeof(__pyx_k_stdout), 0, 0, 1, 1},
  {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
  {&__pyx_n_s_strerror, __pyx_k_strerror, sizeof(__pyx_k_strerror), 0, 0, 1, 1},
  {&__pyx_n_s_submit, __pyx_k_submit, sizeof(__pyx_k_submit), 0, 0, 1, 1},
  {&__pyx_n_s_subprocess, __pyx_k_subprocess, sizeof(__pyx_k_subprocess), 0, 0, 1, 1},
  {&__pyx_kp_u_subprocess_STDOUT_is_supported_o, __pyx_k_subprocess_STDOUT_is_supported_o, sizeof(__pyx_k_subprocess_STDOUT_is_supported_o), 0, 1, 0, 0},
  {&__pyx_n_s_subprocess_run, __pyx_k_subprocess_run, sizeof(__pyx_k_subprocess_run), 0, 0, 1, 1},
  {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
  {&__pyx_kp_u_task_factory_must_be_a_callable, __pyx_k_task_factory_must_be_a_callable, sizeof(__pyx_k_task_factory_must_be_a_callable), 0, 1, 0, 0},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_kp_u_the_socket_must_be_non_blocking, __pyx_k_the_socket_must_be_non_blocking, sizeof(__pyx_k_the_socket_must_be_non_blocking), 0, 1, 0, 0},
  {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
  {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1},
  {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_transport, __pyx_k_transport, sizeof(__pyx_k_transport), 0, 0, 1, 1},
  {&__pyx_n_u_transport, __pyx_k_transport, sizeof(__pyx_k_transport), 0, 1, 0, 1},
  {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
  {&__pyx_kp_u_unable_to_listen_no_protocol_fac, __pyx_k_unable_to_listen_no_protocol_fac, sizeof(__pyx_k_unable_to_listen_no_protocol_fac), 0, 1, 0, 0},
  {&__pyx_kp_u_unable_to_perform_operation_on_r, __pyx_k_unable_to_perform_operation_on_r, sizeof(__pyx_k_unable_to_perform_operation_on_r), 0, 1, 0, 0},
  {&__pyx_kp_u_unable_to_start_the_loop_it_was, __pyx_k_unable_to_start_the_loop_it_was, sizeof(__pyx_k_unable_to_start_the_loop_it_was), 0, 1, 0, 0},
  {&__pyx_kp_u_unclosed_resource_r, __pyx_k_unclosed_resource_r, sizeof(__pyx_k_unclosed_resource_r), 0, 1, 0, 0},
  {&__pyx_kp_u_undable_to_perform_send_operatio, __pyx_k_undable_to_perform_send_operatio, sizeof(__pyx_k_undable_to_perform_send_operatio), 0, 1, 0, 0},
  {&__pyx_kp_u_unexpected_address_family, __pyx_k_unexpected_address_family, sizeof(__pyx_k_unexpected_address_family), 0, 1, 0, 0},
  {&__pyx_n_s_universal_newlines, __pyx_k_universal_newlines, sizeof(__pyx_k_universal_newlines), 0, 0, 1, 1},
  {&__pyx_kp_u_universal_newlines_must_be_False, __pyx_k_universal_newlines_must_be_False, sizeof(__pyx_k_universal_newlines_must_be_False), 0, 1, 0, 0},
  {&__pyx_kp_u_unopened_TCPServer, __pyx_k_unopened_TCPServer, sizeof(__pyx_k_unopened_TCPServer), 0, 1, 0, 0},
  {&__pyx_kp_u_uv_handle_t_data_is_NULL_in_clos, __pyx_k_uv_handle_t_data_is_NULL_in_clos, sizeof(__pyx_k_uv_handle_t_data_is_NULL_in_clos), 0, 1, 0, 0},
  {&__pyx_kp_u_uv_udp_receive_callback_addr_is, __pyx_k_uv_udp_receive_callback_addr_is, sizeof(__pyx_k_uv_udp_receive_callback_addr_is), 0, 1, 0, 0},
  {&__pyx_n_s_uvloop_loop, __pyx_k_uvloop_loop, sizeof(__pyx_k_uvloop_loop), 0, 0, 1, 1},
  {&__pyx_n_s_uvloop_sleep_after_fork, __pyx_k_uvloop_sleep_after_fork, sizeof(__pyx_k_uvloop_sleep_after_fork), 0, 0, 1, 1},
  {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
  {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1},
  {&__pyx_n_s_wait_closed, __pyx_k_wait_closed, sizeof(__pyx_k_wait_closed), 0, 0, 1, 1},
  {&__pyx_n_s_waiter, __pyx_k_waiter, sizeof(__pyx_k_waiter), 0, 0, 1, 1},
  {&__pyx_kp_u_waiter_is_not_None_in__call_conn, __pyx_k_waiter_is_not_None_in__call_conn, sizeof(__pyx_k_waiter_is_not_None_in__call_conn), 0, 1, 0, 0},
  {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1},
  {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1},
  {&__pyx_n_s_when, __pyx_k_when, sizeof(__pyx_k_when), 0, 0, 1, 1},
  {&__pyx_n_s_wrap_future, __pyx_k_wrap_future, sizeof(__pyx_k_wrap_future), 0, 0, 1, 1},
  {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_builtin_OSError = __Pyx_GetBuiltinName(__pyx_n_s_OSError); if (!__pyx_builtin_OSError) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_builtin_PermissionError = __Pyx_GetBuiltinName(__pyx_n_s_PermissionError); if (!__pyx_builtin_PermissionError) __PYX_ERR(1, 16, __pyx_L1_error)
  __pyx_builtin_BlockingIOError = __Pyx_GetBuiltinName(__pyx_n_s_BlockingIOError); if (!__pyx_builtin_BlockingIOError) __PYX_ERR(1, 19, __pyx_L1_error)
  __pyx_builtin_BrokenPipeError = __Pyx_GetBuiltinName(__pyx_n_s_BrokenPipeError); if (!__pyx_builtin_BrokenPipeError) __PYX_ERR(1, 22, __pyx_L1_error)
  __pyx_builtin_ConnectionAbortedError = __Pyx_GetBuiltinName(__pyx_n_s_ConnectionAbortedError); if (!__pyx_builtin_ConnectionAbortedError) __PYX_ERR(1, 25, __pyx_L1_error)
  __pyx_builtin_ConnectionRefusedError = __Pyx_GetBuiltinName(__pyx_n_s_ConnectionRefusedError); if (!__pyx_builtin_ConnectionRefusedError) __PYX_ERR(1, 28, __pyx_L1_error)
  __pyx_builtin_ConnectionResetError = __Pyx_GetBuiltinName(__pyx_n_s_ConnectionResetError); if (!__pyx_builtin_ConnectionResetError) __PYX_ERR(1, 31, __pyx_L1_error)
  __pyx_builtin_FileExistsError = __Pyx_GetBuiltinName(__pyx_n_s_FileExistsError); if (!__pyx_builtin_FileExistsError) __PYX_ERR(1, 34, __pyx_L1_error)
  __pyx_builtin_FileNotFoundError = __Pyx_GetBuiltinName(__pyx_n_s_FileNotFoundError); if (!__pyx_builtin_FileNotFoundError) __PYX_ERR(1, 37, __pyx_L1_error)
  __pyx_builtin_InterruptedError = __Pyx_GetBuiltinName(__pyx_n_s_InterruptedError); if (!__pyx_builtin_InterruptedError) __PYX_ERR(1, 40, __pyx_L1_error)
  __pyx_builtin_IsADirectoryError = __Pyx_GetBuiltinName(__pyx_n_s_IsADirectoryError); if (!__pyx_builtin_IsADirectoryError) __PYX_ERR(1, 43, __pyx_L1_error)
  __pyx_builtin_ProcessLookupError = __Pyx_GetBuiltinName(__pyx_n_s_ProcessLookupError); if (!__pyx_builtin_ProcessLookupError) __PYX_ERR(1, 46, __pyx_L1_error)
  __pyx_builtin_TimeoutError = __Pyx_GetBuiltinName(__pyx_n_s_TimeoutError); if (!__pyx_builtin_TimeoutError) __PYX_ERR(1, 49, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 49, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 161, __pyx_L1_error)
  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(2, 176, __pyx_L1_error)
  __pyx_builtin_KeyboardInterrupt = __Pyx_GetBuiltinName(__pyx_n_s_KeyboardInterrupt); if (!__pyx_builtin_KeyboardInterrupt) __PYX_ERR(2, 184, __pyx_L1_error)
  __pyx_builtin_SystemExit = __Pyx_GetBuiltinName(__pyx_n_s_SystemExit); if (!__pyx_builtin_SystemExit) __PYX_ERR(2, 198, __pyx_L1_error)
  __pyx_builtin_BaseException = __Pyx_GetBuiltinName(__pyx_n_s_BaseException); if (!__pyx_builtin_BaseException) __PYX_ERR(2, 220, __pyx_L1_error)
  __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s_Exception); if (!__pyx_builtin_Exception) __PYX_ERR(2, 401, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 411, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 414, __pyx_L1_error)
  __pyx_builtin_RuntimeWarning = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeWarning); if (!__pyx_builtin_RuntimeWarning) __PYX_ERR(2, 720, __pyx_L1_error)
  __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(2, 975, __pyx_L1_error)
  __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(3, 103, __pyx_L1_error)
  __pyx_builtin_ResourceWarning = __Pyx_GetBuiltinName(__pyx_n_s_ResourceWarning); if (!__pyx_builtin_ResourceWarning) __PYX_ERR(0, 67, __pyx_L1_error)
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 215, __pyx_L1_error)
  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(4, 197, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(5, 152, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(6, 103, __pyx_L1_error)
  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(7, 361, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "uvloop/loop.pyx":157
 *     def __init__(self):
 *         self.set_debug((not sys_ignore_environment
 *                         and bool(os_environ.get('PYTHONASYNCIODEBUG'))))             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_PYTHONASYNCIODEBUG); if (unlikely(!__pyx_tuple_)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "uvloop/loop.pyx":161
 *     def __dealloc__(self):
 *         if self._running == 1:
 *             raise RuntimeError('deallocating a running event loop!')             # <<<<<<<<<<<<<<
 *         if self._closed == 0:
 *             aio_logger.error("deallocating an open event loop")
 */
  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_deallocating_a_running_event_loo); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(2, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);

  /* "uvloop/loop.pyx":163
 *             raise RuntimeError('deallocating a running event loop!')
 *         if self._closed == 0:
 *             aio_logger.error("deallocating an open event loop")             # <<<<<<<<<<<<<<
 *             return
 *         PyMem_Free(self.uvloop)
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_deallocating_an_open_event_loop); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(2, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "uvloop/loop.pyx":278
 * 
 *         if self._closed == 1:
 *             raise RuntimeError('unable to start the loop; it was closed')             # <<<<<<<<<<<<<<
 * 
 *         if self._running == 1:
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_unable_to_start_the_loop_it_was); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "uvloop/loop.pyx":281
 * 
 *         if self._running == 1:
 *             raise RuntimeError('Event loop is running.')             # <<<<<<<<<<<<<<
 * 
 *         # reset _last_error
 */
  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Event_loop_is_running); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(2, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);

  /* "uvloop/loop.pyx":315
 * 
 *         if self._running == 1:
 *             raise RuntimeError("Cannot close a running event loop")             # <<<<<<<<<<<<<<
 * 
 *         if self._closed == 1:
 */
  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Cannot_close_a_running_event_loo); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(2, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);

  /* "uvloop/loop.pyx":419
 *     cdef inline _check_closed(self):
 *         if self._closed == 1:
 *             raise RuntimeError('Event loop is closed')             # <<<<<<<<<<<<<<
 * 
 *     cdef inline _check_thread(self):
 */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Event_loop_is_closed); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(2, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "uvloop/loop.pyx":426
 *         cdef long thread_id = PyThread_get_thread_ident()
 *         if thread_id != self._thread_id:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "Non-thread-safe operation invoked on an event loop other "
 *                 "than the current one")
 */
  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Non_thread_safe_operation_invoke); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);

  /* "uvloop/loop.pyx":505
 *             port = str(port).encode()
 *         if port is not None and not isinstance(port, bytes):
 *             raise TypeError('port must be a str, bytes or int')             # <<<<<<<<<<<<<<
 * 
 *         if isinstance(host, str):
 */
  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_port_must_be_a_str_bytes_or_int); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "uvloop/loop.pyx":508
 * 
 *         if isinstance(host, str):
 *             host = host.encode('idna')             # <<<<<<<<<<<<<<
 *         if host is not None:
 *             if not isinstance(host, bytes):
 */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_u_idna); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "uvloop/loop.pyx":511
 *         if host is not None:
 *             if not isinstance(host, bytes):
 *                 raise TypeError('host must be a str or bytes')             # <<<<<<<<<<<<<<
 * 
 *         fut = self._new_future()
 */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_host_must_be_a_str_or_bytes); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(2, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "uvloop/loop.pyx":515
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if AddrInfo.isinstance(result):
 *                 try:
 */
  __pyx_tuple__12 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_data, __pyx_n_s_ex); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(2, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);
  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl, __pyx_n_s_callback, 515, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(2, 515, __pyx_L1_error)

  /* "uvloop/loop.pyx":538
 *         fut = self._new_future()
 * 
 *         def callback(result):             # <<<<<<<<<<<<<<
 *             if isinstance(result, tuple):
 *                 fut.set_result(result)
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_result); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);
  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl, __pyx_n_s_callback, 538, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(2, 538, __pyx_L1_error)

  /* "uvloop/loop.pyx":608
 * 
 *         if n == len(data):
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 *         else:
 *             if n:
 */
  __pyx_tuple__16 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);

  /* "uvloop/loop.pyx":633
 *         try:
 *             conn, address = sock.accept()
 *             conn.setblocking(False)             # <<<<<<<<<<<<<<
 *         except (BlockingIOError, InterruptedError):
 *             handle = new_MethodHandle3(
 */
  __pyx_tuple__17 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);

  /* "uvloop/loop.pyx":673
 *             fut.set_exception(exc)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_connect_cb(self, fut, sock, address):
 */
  __pyx_tuple__18 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);

  /* "uvloop/loop.pyx":690
 *             fut.set_exception(exc)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef _sock_set_reuseport(self, int fd):
 */
  __pyx_tuple__19 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "uvloop/loop.pyx":731
 *                     current_wrapper, RuntimeWarning)
 *             else:
 *                 sys_set_coroutine_wrapper(None)             # <<<<<<<<<<<<<<
 *                 self._coroutine_wrapper_set = False
 * 
 */
  __pyx_tuple__20 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);

  /* "uvloop/loop.pyx":918
 *     def set_task_factory(self, factory):
 *         if factory is not None and not callable(factory):
 *             raise TypeError('task factory must be a callable or None')             # <<<<<<<<<<<<<<
 *         self._task_factory = factory
 * 
 */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_task_factory_must_be_a_callable); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);

  /* "uvloop/loop.pyx":948
 *         future.remove_done_callback(done_cb)
 *         if not future.done():
 *             raise RuntimeError('Event loop stopped before Future completed.')             # <<<<<<<<<<<<<<
 * 
 *         return future.result()
 */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_Event_loop_stopped_before_Future); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);

  /* "uvloop/loop.pyx":965
 * 
 *         if not isinstance(sockaddr, tuple):
 *             raise TypeError('getnameinfo() argument 1 must be a tuple')             # <<<<<<<<<<<<<<
 * 
 *         sl = len(sockaddr)
 */
  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_getnameinfo_argument_1_must_be_a); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);

  /* "uvloop/loop.pyx":970
 * 
 *         if sl < 2 or sl > 4:
 *             raise ValueError('sockaddr must be a tuple of 2, 3 or 4 values')             # <<<<<<<<<<<<<<
 * 
 *         if sl > 2:
 */
  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_sockaddr_must_be_a_tuple_of_2_3); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);

  /* "uvloop/loop.pyx":975
 *             flowinfo = sockaddr[2]
 *             if flowinfo < 0 or flowinfo > 0xfffff:
 *                 raise OverflowError(             # <<<<<<<<<<<<<<
 *                     'getsockaddrarg: flowinfo must be 0-1048575.')
 *         else:
 */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_getsockaddrarg_flowinfo_must_be); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);

  /* "uvloop/loop.pyx":983
 *             scope_id = sockaddr[3]
 *             if scope_id < 0 or scope_id > 2 ** 32:
 *                 raise OverflowError(             # <<<<<<<<<<<<<<
 *                     'getsockaddrarg: scope_id must be unsigned 32 bit integer')
 *         else:
 */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_getsockaddrarg_scope_id_must_be); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);

  /* "uvloop/loop.pyx":999
 * 
 *         if ai.ai_next:
 *             raise OSError("sockaddr resolved to multiple addresses")             # <<<<<<<<<<<<<<
 * 
 *         if ai.ai_family == uv.AF_INET:
 */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u_sockaddr_resolved_to_multiple_ad); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);

  /* "uvloop/loop.pyx":1003
 *         if ai.ai_family == uv.AF_INET:
 *             if sl > 2:
 *                 raise OSError("IPv4 sockaddr must be 2 tuple")             # <<<<<<<<<<<<<<
 *         elif ai.ai_family == uv.AF_INET6:
 *             # Modify some fields in `ai`
 */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u_IPv4_sockaddr_must_be_2_tuple); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 1003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);

  /* "uvloop/loop.pyx":1029
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 *             raise TypeError('ssl argument must be an SSLContext or None')             # <<<<<<<<<<<<<<
 * 
 *         if host is not None or port is not None:
 */
  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_ssl_argument_must_be_an_SSLConte); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);

  /* "uvloop/loop.pyx":1033
 *         if host is not None or port is not None:
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'host/port and sock can not be specified at the same time')
 * 
 */
  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_host_port_and_sock_can_not_be_sp); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);

  /* "uvloop/loop.pyx":1038
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'reuse_port not supported by socket module')
 * 
 */
  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_reuse_port_not_supported_by_sock); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 1038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);

  /* "uvloop/loop.pyx":1060
 *                     while addrinfo != NULL:
 *                         if addrinfo.ai_family == uv.AF_UNSPEC:
 *                             raise RuntimeError('AF_UNSPEC in DNS results')             # <<<<<<<<<<<<<<
 * 
 *                         tcp = TCPServer.new(
 */
  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_AF_UNSPEC_in_DNS_results); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 1060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);

  /* "uvloop/loop.pyx":1089
 *         else:
 *             if sock is None:
 *                 raise ValueError('Neither host/port nor sock were specified')             # <<<<<<<<<<<<<<
 *             tcp = TCPServer.new(self, protocol_factory, server, ssl,
 *                                 uv.AF_UNSPEC)
 */
  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_Neither_host_port_nor_sock_were); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 1089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);

  /* "uvloop/loop.pyx":1125
 *             if server_hostname is None:
 *                 if not host:
 *                     raise ValueError('You must set server_hostname '             # <<<<<<<<<<<<<<
 *                                      'when using ssl without a host')
 *                 server_hostname = host
 */
  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_You_must_set_server_hostname_whe); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 1125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);

  /* "uvloop/loop.pyx":1136
 *         else:
 *             if server_hostname is not None:
 *                 raise ValueError('server_hostname is only meaningful with ssl')             # <<<<<<<<<<<<<<
 * 
 *         if host is not None or port is not None:
 */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_server_hostname_is_only_meaningf); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);

  /* "uvloop/loop.pyx":1149
 *                 if not isinstance(local_addr, (tuple, list)) or \
 *                         len(local_addr) != 2:
 *                     raise ValueError(             # <<<<<<<<<<<<<<
 *                         'local_addr must be a tuple of host and port')
 * 
 */
  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_local_addr_must_be_a_tuple_of_ho); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 1149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);

  /* "uvloop/loop.pyx":1161
 *             ai_remote = f1.result()
 *             if ai_remote.data is NULL:
 *                 raise OSError('getaddrinfo() returned empty list')             # <<<<<<<<<<<<<<
 * 
 *             if f2 is not None:
 */
  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_getaddrinfo_returned_empty_list); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 1161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);

  /* "uvloop/loop.pyx":1166
 *                 ai_local = f2.result()
 *                 if ai_local.data is NULL:
 *                     raise OSError(             # <<<<<<<<<<<<<<
 *                         'getaddrinfo() returned empty list for local_addr')
 * 
 */
  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_getaddrinfo_returned_empty_list_2); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);

  /* "uvloop/loop.pyx":1221
 *         else:
 *             if sock is None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'host and port was not specified and no sock specified')
 * 
 */
  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_u_host_and_port_was_not_specified); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 1221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);

  /* "uvloop/loop.pyx":1253
 * 
 *         if ssl is not None and not isinstance(ssl, ssl_SSLContext):
 *             raise TypeError('ssl argument must be an SSLContext or None')             # <<<<<<<<<<<<<<
 * 
 *         pipe = UnixServer.new(self, protocol_factory, server, ssl)
 */
  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_ssl_argument_must_be_an_SSLConte); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);

  /* "uvloop/loop.pyx":1259
 *         if path is not None:
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path and sock can not be specified at the same time')
 * 
 */
  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_u_path_and_sock_can_not_be_specifi); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);

  /* "uvloop/loop.pyx":1270
 *         else:
 *             if sock is None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path was not specified, and no sock specified')
 * 
 */
  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_u_path_was_not_specified_and_no_so); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(2, 1270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);

  /* "uvloop/loop.pyx":1310
 *         if ssl:
 *             if server_hostname is None:
 *                 raise ValueError('You must set server_hostname '             # <<<<<<<<<<<<<<
 *                                  'when using ssl without a host')
 * 
 */
  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_u_You_must_set_server_hostname_whe); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(2, 1310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);

  /* "uvloop/loop.pyx":1320
 *         else:
 *             if server_hostname is not None:
 *                 raise ValueError('server_hostname is only meaningful with ssl')             # <<<<<<<<<<<<<<
 * 
 *         if path is not None:
 */
  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_u_server_hostname_is_only_meaningf); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(2, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);

  /* "uvloop/loop.pyx":1327
 * 
 *             if sock is not None:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'path and sock can not be specified at the same time')
 * 
 */
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_u_path_and_sock_can_not_be_specifi); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(2, 1327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);

  /* "uvloop/loop.pyx":1341
 *         else:
 *             if sock is None:
 *                 raise ValueError('no path and sock were specified')             # <<<<<<<<<<<<<<
 * 
 *             if sock.family != uv.AF_UNIX:
 */
  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_u_no_path_and_sock_were_specified); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(2, 1341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);

  /* "uvloop/loop.pyx":1367
 * 
 *     def default_exception_handler(self, context):
 *         message = context.get('message')             # <<<<<<<<<<<<<<
 *         if not message:
 *             message = 'Unhandled exception in event loop'
 */
  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_n_u_message); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(2, 1367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);

  /* "uvloop/loop.pyx":1371
 *             message = 'Unhandled exception in event loop'
 * 
 *         exception = context.get('exception')             # <<<<<<<<<<<<<<
 *         if exception is not None:
 *             exc_info = (type(exception), exception, exception.__traceback__)
 */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_u_exception); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(2, 1371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);

  /* "uvloop/loop.pyx":1404
 *                 # in the default implementation, as well as for subclassed
 *                 # event loops with overloaded "default_exception_handler".
 *                 aio_logger.error('Exception in default exception handler',             # <<<<<<<<<<<<<<
 *                                  exc_info=True)
 *         else:
 */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_u_Exception_in_default_exception_h); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(2, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);

  /* "uvloop/loop.pyx":1421
 *                     # Guard 'default_exception_handler' in case it is
 *                     # overloaded.
 *                     aio_logger.error('Exception in default exception handler '             # <<<<<<<<<<<<<<
 *                                      'while handling an unexpected error '
 *                                      'in custom exception handler',
 */
  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_u_Exception_in_default_exception_h_2); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(2, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);

  /* "uvloop/loop.pyx":1444
 *     def sock_recv(self, sock, n):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         self._sock_recv(fut, 0, sock, n)
 */
  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_u_the_socket_must_be_non_blocking); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(2, 1444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);

  /* "uvloop/loop.pyx":1451
 *     def sock_sendall(self, sock, data):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         if data:
 */
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_u_the_socket_must_be_non_blocking); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(2, 1451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);

  /* "uvloop/loop.pyx":1456
 *             self._sock_sendall(fut, 0, sock, data)
 *         else:
 *             fut.set_result(None)             # <<<<<<<<<<<<<<
 *         return fut
 * 
 */
  __pyx_tuple__59 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(2, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);

  /* "uvloop/loop.pyx":1461
 *     def sock_accept(self, sock):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         self._sock_accept(fut, 0, sock)
 */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_u_the_socket_must_be_non_blocking); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(2, 1461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);

  /* "uvloop/loop.pyx":1468
 *     def sock_connect(self, sock, address):
 *         if self._debug and sock.gettimeout() != 0:
 *             raise ValueError("the socket must be non-blocking")             # <<<<<<<<<<<<<<
 *         fut = self._new_future()
 *         try:
 */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_u_the_socket_must_be_non_blocking); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(2, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);

  /* "uvloop/loop.pyx":1481
 *     def run_in_executor(self, executor, func, *args):
 *         if aio_iscoroutine(func) or aio_iscoroutinefunction(func):
 *             raise TypeError("coroutines cannot be used with run_in_executor()")             # <<<<<<<<<<<<<<
 * 
 *         self._check_closed()
 */
  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_u_coroutines_cannot_be_used_with_r); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(2, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);

  /* "uvloop/loop.pyx":1488
 *             executor = self._default_executor
 *             if executor is None:
 *                 executor = cc_ThreadPoolExecutor(MAX_THREADPOOL_WORKERS)             # <<<<<<<<<<<<<<
 *                 self._default_executor = executor
 * 
 */
  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_int_5); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(2, 1488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);

  /* "uvloop/loop.pyx":1528
 * 
 *         if preexec_fn is not None:
 *             raise ValueError('preexec_fn parameter is not supported')             # <<<<<<<<<<<<<<
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")
 */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_u_preexec_fn_parameter_is_not_supp); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(2, 1528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);

  /* "uvloop/loop.pyx":1530
 *             raise ValueError('preexec_fn parameter is not supported')
 *         if universal_newlines:
 *             raise ValueError("universal_newlines must be False")             # <<<<<<<<<<<<<<
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")
 */
  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_u_universal_newlines_must_be_False); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(2, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);

  /* "uvloop/loop.pyx":1532
 *             raise ValueError("universal_newlines must be False")
 *         if bufsize != 0:
 *             raise ValueError("bufsize must be 0")             # <<<<<<<<<<<<<<
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')
 */
  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_u_bufsize_must_be_0); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(2, 1532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);

  /* "uvloop/loop.pyx":1534
 *             raise ValueError("bufsize must be 0")
 *         if preexec_fn:
 *             raise ValueError('preexec_fn is not supported')             # <<<<<<<<<<<<<<
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')
 */
  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_u_preexec_fn_is_not_supported); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(2, 1534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);

  /* "uvloop/loop.pyx":1536
 *             raise ValueError('preexec_fn is not supported')
 *         if startupinfo is not None:
 *             raise ValueError('startupinfo is not supported')             # <<<<<<<<<<<<<<
 *         if creationflags != 0:
 *             raise ValueError('creationflags is not supported')
 */
  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_u_startupinfo_is_not_supported); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(2, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);

  /* "uvloop/loop.pyx":1538
 *             raise ValueError('startupinfo is not supported')
 *         if creationflags != 0:
 *             raise ValueError('creationflags is not supported')             # <<<<<<<<<<<<<<
 * 
 *         if executable is not None:
 */
  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_u_creationflags_is_not_supported); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(2, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);

  /* "uvloop/loop.pyx":1567
 * 
 *         if not shell:
 *             raise ValueError("shell must be True")             # <<<<<<<<<<<<<<
 * 
 *         args = [cmd]
 */
  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_u_shell_must_be_True); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(2, 1567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__73);
  __Pyx_GIVEREF(__pyx_tuple__73);

  /* "uvloop/loop.pyx":1580
 * 
 *         if shell:
 *             raise ValueError("shell must be False")             # <<<<<<<<<<<<<<
 * 
 *         args = list((program,) + args)
 */
  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_u_shell_must_be_False); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(2, 1580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);

  /* "uvloop/loop.pyx":1634
 *         if (aio_iscoroutine(callback)
 *                 or aio_iscoroutinefunction(callback)):
 *             raise TypeError("coroutines cannot be used "             # <<<<<<<<<<<<<<
 *                             "with add_signal_handler()")
 * 
 */
  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_u_coroutines_cannot_be_used_with_a); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(2, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__75);
  __Pyx_GIVEREF(__pyx_tuple__75);

  /* "uvloop/loop.pyx":1718
 *                     'socket modifier keyword arguments can not be used '
 *                     'when sock is specified. ({})'.format(problems))
 *             sock.setblocking(False)             # <<<<<<<<<<<<<<
 *             udp = UDPTransport.__new__(UDPTransport)
 *             udp._init(self, uv.AF_UNSPEC)
 */
  __pyx_tuple__77 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(2, 1718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__77);
  __Pyx_GIVEREF(__pyx_tuple__77);

  /* "uvloop/loop.pyx":1727
 *             reuse_port = bool(reuse_port)
 *             if reuse_port and not has_SO_REUSEPORT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'reuse_port not supported by socket module')
 * 
 */
  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_u_reuse_port_not_supported_by_sock); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(2, 1727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);

  /* "uvloop/loop.pyx":1734
 *                 if (not isinstance(local_addr, (tuple, list)) or
 *                         len(local_addr) != 2):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'local_addr must be a tuple of (host, port)')
 *                 lads = await self._getaddrinfo(
 */
  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_u_local_addr_must_be_a_tuple_of_ho_2); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(2, 1734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__79);
  __Pyx_GIVEREF(__pyx_tuple__79);

  /* "uvloop/loop.pyx":1745
 *                 if (not isinstance(remote_addr, (tuple, list)) or
 *                         len(remote_addr) != 2):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'remote_addr must be a tuple of (host, port)')
 *                 rads = await self._getaddrinfo(
 */
  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_u_remote_addr_must_be_a_tuple_of_h); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(2, 1745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__80);
  __Pyx_GIVEREF(__pyx_tuple__80);

  /* "uvloop/loop.pyx":1761
 *                 else:
 *                     if family not in (uv.AF_INET, uv.AF_INET6):
 *                         raise ValueError('unexpected address family')             # <<<<<<<<<<<<<<
 *                     udp = UDPTransport.__new__(UDPTransport)
 *                     udp._init(self, family)
 */
  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_u_unexpected_address_family); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(2, 1761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__81);
  __Pyx_GIVEREF(__pyx_tuple__81);

  /* "uvloop/loop.pyx":1769
 * 
 *                 socket = udp._get_socket()
 *                 socket.bind(('0.0.0.0', 0))             # <<<<<<<<<<<<<<
 *             else:
 *                 lai = (<AddrInfo>lads).data
 */
  __pyx_tuple__82 = PyTuple_Pack(2, __pyx_kp_u_0_0_0_0, __pyx_int_0); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(2, 1769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__82);
  __Pyx_GIVEREF(__pyx_tuple__82);
  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_tuple__82); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(2, 1769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__83);
  __Pyx_GIVEREF(__pyx_tuple__83);

  /* "uvloop/loop.pyx":1833
 *     if loop._recv_buffer_in_use == 1:
 *         buf.len = 0
 *         exc = RuntimeError('concurrent allocations')             # <<<<<<<<<<<<<<
 *         loop._handle_exception(exc)
 *         return
 */
  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_kp_u_concurrent_allocations); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(2, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__84);
  __Pyx_GIVEREF(__pyx_tuple__84);

  /* "uvloop/handles/basetransport.pyx":120
 *         cdef Py_ssize_t _loop_ready_len
 *         if self._protocol is None:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'protocol is not set, cannot call connection_made()')
 * 
 */
  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_u_protocol_is_not_set_cannot_call); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(4, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);

  /* "uvloop/handles/basetransport.pyx":147
 *         if self._waiter is not None:
 *             if not self._waiter.cancelled():
 *                 self._waiter.set_result(True)             # <<<<<<<<<<<<<<
 *             self._waiter = None
 * 
 */
  __pyx_tuple__87 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(4, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__87);
  __Pyx_GIVEREF(__pyx_tuple__87);

  /* "uvloop/handles/basetransport.pyx":202
 *     cdef inline _init_protocol(self):
 *         if self._protocol is None:
 *             raise RuntimeError('invalid _init_protocol call')             # <<<<<<<<<<<<<<
 *         self._schedule_call_connection_made()
 * 
 */
  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_u_invalid__init_protocol_call); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__88);
  __Pyx_GIVEREF(__pyx_tuple__88);

  /* "uvloop/handles/basetransport.pyx":237
 * 
 *     def abort(self):
 *         self._force_close(None)             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __pyx_tuple__89 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(4, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__89);
  __Pyx_GIVEREF(__pyx_tuple__89);

  /* "uvloop/handles/stream.pyx":271
 * 
 *         if protocol is None:
 *             raise TypeError('protocol is required')             # <<<<<<<<<<<<<<
 * 
 *         self._set_protocol(protocol)
 */
  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_u_protocol_is_required); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(15, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);

  /* "uvloop/handles/stream.pyx":306
 * 
 *         if self._eof:
 *             raise RuntimeError('Cannot call write() after write_eof()')             # <<<<<<<<<<<<<<
 *         if not buf:
 *             return
 */
  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_u_Cannot_call_write_after_write_eo); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(15, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__91);
  __Pyx_GIVEREF(__pyx_tuple__91);

  /* "uvloop/handles/stream.pyx":344
 * 
 *         if self._closing:
 *             raise RuntimeError('Cannot pause_reading() when closing')             # <<<<<<<<<<<<<<
 *         if not self._is_reading():
 *             raise RuntimeError('Already paused')
 */
  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_u_Cannot_pause_reading_when_closin); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(15, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);

  /* "uvloop/handles/stream.pyx":346
 *             raise RuntimeError('Cannot pause_reading() when closing')
 *         if not self._is_reading():
 *             raise RuntimeError('Already paused')             # <<<<<<<<<<<<<<
 *         self._stop_reading()
 * 
 */
  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_kp_u_Already_paused); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(15, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__93);
  __Pyx_GIVEREF(__pyx_tuple__93);

  /* "uvloop/handles/stream.pyx":353
 * 
 *         if self._is_reading():
 *             raise RuntimeError('Not paused')             # <<<<<<<<<<<<<<
 *         if self._closing:
 *             return
 */
  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_u_Not_paused); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(15, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);

  /* "uvloop/handles/streamserver.pyx":28
 * 
 *         if self.protocol_factory is None:
 *             raise RuntimeError('unable to listen(); no protocol_factory')             # <<<<<<<<<<<<<<
 * 
 *         if self.opened != 1:
 */
  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_u_unable_to_listen_no_protocol_fac); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(16, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__95);
  __Pyx_GIVEREF(__pyx_tuple__95);

  /* "uvloop/handles/streamserver.pyx":31
 * 
 *         if self.opened != 1:
 *             raise RuntimeError('unopened TCPServer')             # <<<<<<<<<<<<<<
 * 
 *         err = uv.uv_listen(<uv.uv_stream_t*> self._handle,
 */
  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_kp_u_unopened_TCPServer); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(16, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__96);
  __Pyx_GIVEREF(__pyx_tuple__96);

  /* "uvloop/handles/process.pyx":69
 * 
 *         if debug_flags & __PROCESS_DEBUG_SLEEP_AFTER_FORK:
 *             time_sleep(1)             # <<<<<<<<<<<<<<
 * 
 *     cdef _close_after_spawn(self, int fd):
 */
  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(6, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__97);
  __Pyx_GIVEREF(__pyx_tuple__97);

  /* "uvloop/handles/process.pyx":73
 *     cdef _close_after_spawn(self, int fd):
 *         if self._fds_to_close is None:
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'UVProcess._close_after_spawn called after uv_spawn')
 *         self._fds_to_close.add(fd)
 */
  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_u_UVProcess__close_after_spawn_cal); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(6, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__98);
  __Pyx_GIVEREF(__pyx_tuple__98);

  /* "uvloop/handles/process.pyx":132
 *                 cwd = PyUnicode_EncodeFSDefault(cwd)
 *             if not isinstance(cwd, bytes):
 *                 raise ValueError('cwd must be a str or bytes object')             # <<<<<<<<<<<<<<
 *             self.__cwd = cwd
 *             self.options.cwd = PyBytes_AsString(self.__cwd)
 */
  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_u_cwd_must_be_a_str_or_bytes_objec); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(6, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__99);
  __Pyx_GIVEREF(__pyx_tuple__99);

  /* "uvloop/handles/process.pyx":146
 * 
 *         if an < 1:
 *             raise ValueError('cannot spawn a process: args are empty')             # <<<<<<<<<<<<<<
 * 
 *         self.__args = args.copy()
 */
  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_kp_u_cannot_spawn_a_process_args_are); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(6, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);

  /* "uvloop/handles/process.pyx":154
 *                 self.__args[i] = PyUnicode_EncodeFSDefault(arg)
 *             elif not isinstance(arg, bytes):
 *                 raise TypeError('all args must be str or bytes')             # <<<<<<<<<<<<<<
 * 
 *         path = self.__args[0]
 */
  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_u_all_args_must_be_str_or_bytes); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(6, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__101);
  __Pyx_GIVEREF(__pyx_tuple__101);

  /* "uvloop/handles/process.pyx":169
 *                     key = PyUnicode_EncodeFSDefault(key)
 *                 elif not isinstance(key, bytes):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'all environment vars must be bytes or str')
 * 
 */
  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_kp_u_all_environment_vars_must_be_byt); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(6, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__102);
  __Pyx_GIVEREF(__pyx_tuple__102);

  /* "uvloop/handles/process.pyx":175
 *                     val = PyUnicode_EncodeFSDefault(val)
 *                 elif not isinstance(val, bytes):
 *                     raise TypeError(             # <<<<<<<<<<<<<<
 *                         'all environment values must be bytes or str')
 * 
 */
  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_u_all_environment_values_must_be_b); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(6, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__103);
  __Pyx_GIVEREF(__pyx_tuple__103);

  /* "uvloop/handles/process.pyx":308
 *                 io[0] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 */
  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_kp_u_subprocess_STDOUT_is_supported_o); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(6, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__105);
  __Pyx_GIVEREF(__pyx_tuple__105);

  /* "uvloop/handles/process.pyx":337
 *                 io[1] = self._file_devnull()
 *             elif stdout == subprocess_STDOUT:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     'subprocess.STDOUT is supported only by stderr parameter')
 *             else:
 */
  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_kp_u_subprocess_STDOUT_is_supported_o); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(6, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__106);
  __Pyx_GIVEREF(__pyx_tuple__106);

  /* "uvloop/handles/process.pyx":360
 *                 if io[1] is None:
 *                     # shouldn't ever happen
 *                     raise RuntimeError('cannot apply subprocess.STDOUT')             # <<<<<<<<<<<<<<
 * 
 *                 newfd = os_dup(io[1])
 */
  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_u_cannot_apply_subprocess_STDOUT); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(6, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);

  /* "uvloop/handles/process.pyx":391
 *         else:
 *             if waiter is not None and not waiter.cancelled():
 *                 waiter.set_result(True)             # <<<<<<<<<<<<<<
 * 
 *         self._stdio_ready = 1
 */
  __pyx_tuple__108 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(6, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__108);
  __Pyx_GIVEREF(__pyx_tuple__108);

  /* "uvloop/dns.pyx":39
 *         )
 * 
 *     raise RuntimeError("cannot convert sockaddr into Python object")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_u_cannot_convert_sockaddr_into_Pyt); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(19, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__109);
  __Pyx_GIVEREF(__pyx_tuple__109);

  /* "uvloop/dns.pyx":52
 *     if family == uv.AF_INET:
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET address must be tuple')             # <<<<<<<<<<<<<<
 *         if len(addr) != 2:
 *             raise ValueError('AF_INET address must be tuple of (host, port)')
 */
  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_u_AF_INET_address_must_be_tuple); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(19, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__110);
  __Pyx_GIVEREF(__pyx_tuple__110);

  /* "uvloop/dns.pyx":54
 *             raise TypeError('AF_INET address must be tuple')
 *         if len(addr) != 2:
 *             raise ValueError('AF_INET address must be tuple of (host, port)')             # <<<<<<<<<<<<<<
 *         host, port = addr
 *         if isinstance(host, str):
 */
  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_kp_u_AF_INET_address_must_be_tuple_of); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(19, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__111);
  __Pyx_GIVEREF(__pyx_tuple__111);

  /* "uvloop/dns.pyx":59
 *             host = host.encode()
 *         if not isinstance(host, (bytes, bytearray)):
 *             raise TypeError('host must be a string or bytes object')             # <<<<<<<<<<<<<<
 *         if isinstance(port, bytes):
 *             port = port.decode()
 */
  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_kp_u_host_must_be_a_string_or_bytes_o); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(19, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__112);
  __Pyx_GIVEREF(__pyx_tuple__112);

  /* "uvloop/dns.pyx":71
 *     elif family == uv.AF_INET6:
 *         if not isinstance(addr, tuple):
 *             raise TypeError('AF_INET6 address must be tuple')             # <<<<<<<<<<<<<<
 * 
 *         addr_len = len(addr)
 */
  __pyx_tuple__113 = PyTuple_Pack(1, __pyx_kp_u_AF_INET6_address_must_be_tuple); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(19, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__113);
  __Pyx_GIVEREF(__pyx_tuple__113);

  /* "uvloop/dns.pyx":75
 *         addr_len = len(addr)
 *         if addr_len < 2 or addr_len > 4:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 'AF_INET6 must be a tuple of 2-4 parameters: '
 *                 '(host, port, flowinfo?, scope_id?)')
 */
  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_u_AF_INET6_must_be_a_tuple_of_2_4); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(19, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__114);
  __Pyx_GIVEREF(__pyx_tuple__114);

  /* "uvloop/dns.pyx":123
 * 
 *         if self.data is NULL:
 *             raise RuntimeError('AddrInfo.data is NULL')             # <<<<<<<<<<<<<<
 * 
 *         ptr = self.data
 */
  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_u_AddrInfo_data_is_NULL); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(19, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);

  /* "uvloop/dns.pyx":235
 * 
 *     if resolver.data is NULL:
 *         aio_logger.error(             # <<<<<<<<<<<<<<
 *             'AddrInfoRequest callback called with NULL resolver.data')
 *         return
 */
  __pyx_tuple__116 = PyTuple_Pack(1, __pyx_kp_u_AddrInfoRequest_callback_called); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(19, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__116);
  __Pyx_GIVEREF(__pyx_tuple__116);

  /* "uvloop/handles/udp.pyx":186
 *     cdef _new_socket(self):
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 'UDPTransport.family is undefined; cannot create python socket')
 * 
 */
  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_u_UDPTransport_family_is_undefined); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(7, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__117);
  __Pyx_GIVEREF(__pyx_tuple__117);

  /* "uvloop/handles/udp.pyx":197
 * 
 *         if self._family not in (uv.AF_INET, uv.AF_INET6):
 *             raise RuntimeError('UDPTransport.family is undefined; cannot send')             # <<<<<<<<<<<<<<
 * 
 *         if self._address_set and addr is not None:
 */
  __pyx_tuple__118 = PyTuple_Pack(1, __pyx_kp_u_UDPTransport_family_is_undefined_2); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(7, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__118);
  __Pyx_GIVEREF(__pyx_tuple__118);

  /* "uvloop/handles/udp.pyx":216
 *                     ctx.addr = self._address
 *                 else:
 *                     raise RuntimeError(             # <<<<<<<<<<<<<<
 *                         'undable to perform send operation: no address')
 *             else:
 */
  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_u_undable_to_perform_send_operatio); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(7, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__119);
  __Pyx_GIVEREF(__pyx_tuple__119);

  /* "uvloop/handles/udp.pyx":326
 *     if pyaddr is None:
 *         udp._fatal_error(
 *             RuntimeError(             # <<<<<<<<<<<<<<
 *                 'uv_udp.receive callback: addr is NULL and nread >= 0'),
 *             False)
 */
  __pyx_tuple__120 = PyTuple_Pack(1, __pyx_kp_u_uv_udp_receive_callback_addr_is); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(7, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__120);
  __Pyx_GIVEREF(__pyx_tuple__120);

  /* "uvloop/os_signal.pyx":28
 * 
 *         if not self.saved:
 *             raise RuntimeError("SignalsStack.save() wasn't called")             # <<<<<<<<<<<<<<
 * 
 *         for i in range(MAX_SIG):
 */
  __pyx_tuple__121 = PyTuple_Pack(1, __pyx_kp_u_SignalsStack_save_wasn_t_called); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(21, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__121);
  __Pyx_GIVEREF(__pyx_tuple__121);

  /* "uvloop/os_signal.pyx":36
 *             memset(&sa, 0, sizeof(sa))
 *             if sigfillset(&sa.sa_mask):
 *                 raise RuntimeError(             # <<<<<<<<<<<<<<
 *                     'failed to restore signal (sigfillset failed)')
 *             sa.sa_handler = self.signals[i]
 */
  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_kp_u_failed_to_restore_signal_sigfill); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(21, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__122);
  __Pyx_GIVEREF(__pyx_tuple__122);

  /* "uvloop/os_signal.pyx":67
 *     memset(&sa, 0, sizeof(sa))
 *     if sigfillset(&sa.sa_mask):
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             'failed to set SIGINT signal (sigfillset failed)')
 *     sa.sa_handler = __signal_handler_sigint
 */
  __pyx_tuple__123 = PyTuple_Pack(1, __pyx_kp_u_failed_to_set_SIGINT_signal_sigf); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(21, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__123);
  __Pyx_GIVEREF(__pyx_tuple__123);

  /* "uvloop/handles/process.pyx":525
 * class WriteSubprocessPipeProto(aio_BaseProtocol):
 * 
 *     def __init__(self, proc, fd):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if type(proc) is not UVProcessTransport:
 */
  __pyx_tuple__124 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_proc, __pyx_n_s_fd); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(6, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__124);
  __Pyx_GIVEREF(__pyx_tuple__124);
  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_init, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) __PYX_ERR(6, 525, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":536
 *         self.disconnected = False
 * 
 *     def connection_made(self, transport):             # <<<<<<<<<<<<<<
 *         self.pipe = transport
 * 
 */
  __pyx_tuple__126 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_transport); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(6, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__126);
  __Pyx_GIVEREF(__pyx_tuple__126);
  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_connection_made, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(6, 536, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":539
 *         self.pipe = transport
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return ('<%s fd=%s pipe=%r>'
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 */
  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(6, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__128);
  __Pyx_GIVEREF(__pyx_tuple__128);
  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_repr, 539, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(6, 539, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":543
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 * 
 *     def connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 */
  __pyx_tuple__130 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_exc); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(6, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__130);
  __Pyx_GIVEREF(__pyx_tuple__130);
  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_connection_lost, 543, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(6, 543, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":548
 *         self.proc = None
 * 
 *     def pause_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 */
  __pyx_tuple__132 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(6, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__132);
  __Pyx_GIVEREF(__pyx_tuple__132);
  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_pause_writing, 548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(6, 548, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":551
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 *     def resume_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.resume_writing()
 * 
 */
  __pyx_tuple__134 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(6, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__134);
  __Pyx_GIVEREF(__pyx_tuple__134);
  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_resume_writing, 551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(6, 551, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":558
 *                               aio_Protocol):
 * 
 *     def data_received(self, data):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._pipe_data_received(self.fd, data)
 * 
 */
  __pyx_tuple__136 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(6, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__136);
  __Pyx_GIVEREF(__pyx_tuple__136);
  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_yury_dev_magic_uvloop_uvl_2, __pyx_n_s_data_received, 558, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(6, 558, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_InitGlobals(void) {
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(2, 1, __pyx_L1_error);
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_1048575 = PyInt_FromLong(1048575L); if (unlikely(!__pyx_int_1048575)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_4294967296 = PyInt_FromString((char *)"4294967296", 0, 0); if (unlikely(!__pyx_int_4294967296)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(2, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initloop(void); /*proto*/
PyMODINIT_FUNC initloop(void)
#else
PyMODINIT_FUNC PyInit_loop(void); /*proto*/
PyMODINIT_FUNC PyInit_loop(void)
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannyDeclarations
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_loop(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(2, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("loop", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) __PYX_ERR(2, 1, __pyx_L1_error)
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(2, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(2, 1, __pyx_L1_error)
  #if CYTHON_COMPILING_IN_PYPY
  Py_INCREF(__pyx_b);
  #endif
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(2, 1, __pyx_L1_error);
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_uvloop__loop) {
    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(2, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "uvloop.loop")) {
      if (unlikely(PyDict_SetItemString(modules, "uvloop.loop", __pyx_m) < 0)) __PYX_ERR(2, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  /*--- Global init code ---*/
  __pyx_v_6uvloop_4loop_aio_CancelledError = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_TimeoutError = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_Future = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_Task = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_ensure_future = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_gather = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_wait = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_logger = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_coroutine = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio__check_resolved_address = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_iscoroutine = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_iscoroutinefunction = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_wrap_future = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_BaseProtocol = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_Protocol = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_SSLProtocol = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_aio_debug_wrapper = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_col_deque = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_col_Iterable = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_col_Counter = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_cc_ThreadPoolExecutor = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_ft_partial = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_iter_chain = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_socket_gaierror = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_socket_error = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_socket_timeout = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_socket_socket = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_environ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_dup = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_set_inheritable = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_get_inheritable = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_close = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_open = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_devnull = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_os_O_RDWR = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_sys_ignore_environment = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_sys_exc_info = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_ssl_SSLContext = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_time_sleep = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop_warnings_warn = Py_None; Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop___main_loop__ = ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6uvloop_4loop___NOHANDLE__ = Py_None; Py_INCREF(Py_None);
  /*--- Variable export code ---*/
  /*--- Function export code ---*/
  /*--- Type init code ---*/
  __pyx_vtabptr_6uvloop_4loop_UVHandle = &__pyx_vtable_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVHandle._start_init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_8UVHandle__start_init;
  __pyx_vtable_6uvloop_4loop_UVHandle._abort_init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__abort_init;
  __pyx_vtable_6uvloop_4loop_UVHandle._finish_init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__finish_init;
  __pyx_vtable_6uvloop_4loop_UVHandle._is_alive = (int (*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__is_alive;
  __pyx_vtable_6uvloop_4loop_UVHandle._ensure_alive = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__ensure_alive;
  __pyx_vtable_6uvloop_4loop_UVHandle._error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_8UVHandle__error;
  __pyx_vtable_6uvloop_4loop_UVHandle._fatal_error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args))__pyx_f_6uvloop_4loop_8UVHandle__fatal_error;
  __pyx_vtable_6uvloop_4loop_UVHandle._free = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__free;
  __pyx_vtable_6uvloop_4loop_UVHandle._close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVHandle__close;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVHandle) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVHandle.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVHandle.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVHandle) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVHandle", (PyObject *)&__pyx_type_6uvloop_4loop_UVHandle) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVHandle = &__pyx_type_6uvloop_4loop_UVHandle;
  __pyx_vtabptr_6uvloop_4loop_UVAsync = &__pyx_vtable_6uvloop_4loop_UVAsync;
  __pyx_vtable_6uvloop_4loop_UVAsync.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVAsync._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVAsync *, struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *))__pyx_f_6uvloop_4loop_7UVAsync__init;
  __pyx_vtable_6uvloop_4loop_UVAsync.send = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVAsync *))__pyx_f_6uvloop_4loop_7UVAsync_send;
  __pyx_vtable_6uvloop_4loop_UVAsync.new = (struct __pyx_obj_6uvloop_4loop_UVAsync *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *))__pyx_f_6uvloop_4loop_7UVAsync_new;
  __pyx_type_6uvloop_4loop_UVAsync.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVAsync) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVAsync.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVAsync.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVAsync) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVAsync", (PyObject *)&__pyx_type_6uvloop_4loop_UVAsync) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVAsync = &__pyx_type_6uvloop_4loop_UVAsync;
  __pyx_vtabptr_6uvloop_4loop_UVTimer = &__pyx_vtable_6uvloop_4loop_UVTimer;
  __pyx_vtable_6uvloop_4loop_UVTimer.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVTimer._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVTimer *, struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *, uint64_t))__pyx_f_6uvloop_4loop_7UVTimer__init;
  __pyx_vtable_6uvloop_4loop_UVTimer.stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVTimer *))__pyx_f_6uvloop_4loop_7UVTimer_stop;
  __pyx_vtable_6uvloop_4loop_UVTimer.start = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVTimer *))__pyx_f_6uvloop_4loop_7UVTimer_start;
  __pyx_vtable_6uvloop_4loop_UVTimer.new = (struct __pyx_obj_6uvloop_4loop_UVTimer *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, __pyx_t_6uvloop_4loop_method_t *, PyObject *, uint64_t))__pyx_f_6uvloop_4loop_7UVTimer_new;
  __pyx_type_6uvloop_4loop_UVTimer.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVTimer) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVTimer.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVTimer.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVTimer) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVTimer", (PyObject *)&__pyx_type_6uvloop_4loop_UVTimer) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVTimer = &__pyx_type_6uvloop_4loop_UVTimer;
  __pyx_vtabptr_6uvloop_4loop_UVSignal = &__pyx_vtable_6uvloop_4loop_UVSignal;
  __pyx_vtable_6uvloop_4loop_UVSignal.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVSignal._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSignal *, struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *, int))__pyx_f_6uvloop_4loop_8UVSignal__init;
  __pyx_vtable_6uvloop_4loop_UVSignal.stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSignal *))__pyx_f_6uvloop_4loop_8UVSignal_stop;
  __pyx_vtable_6uvloop_4loop_UVSignal.start = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSignal *))__pyx_f_6uvloop_4loop_8UVSignal_start;
  __pyx_vtable_6uvloop_4loop_UVSignal.new = (struct __pyx_obj_6uvloop_4loop_UVSignal *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *, int))__pyx_f_6uvloop_4loop_8UVSignal_new;
  __pyx_type_6uvloop_4loop_UVSignal.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVSignal) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVSignal.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVSignal.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVSignal) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVSignal", (PyObject *)&__pyx_type_6uvloop_4loop_UVSignal) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVSignal = &__pyx_type_6uvloop_4loop_UVSignal;
  __pyx_vtabptr_6uvloop_4loop_UVIdle = &__pyx_vtable_6uvloop_4loop_UVIdle;
  __pyx_vtable_6uvloop_4loop_UVIdle.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVIdle._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVIdle *, struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6UVIdle__init;
  __pyx_vtable_6uvloop_4loop_UVIdle.stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVIdle *))__pyx_f_6uvloop_4loop_6UVIdle_stop;
  __pyx_vtable_6uvloop_4loop_UVIdle.start = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVIdle *))__pyx_f_6uvloop_4loop_6UVIdle_start;
  __pyx_vtable_6uvloop_4loop_UVIdle.new = (struct __pyx_obj_6uvloop_4loop_UVIdle *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6UVIdle_new;
  __pyx_type_6uvloop_4loop_UVIdle.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVIdle) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVIdle.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVIdle.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVIdle) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVIdle", (PyObject *)&__pyx_type_6uvloop_4loop_UVIdle) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVIdle = &__pyx_type_6uvloop_4loop_UVIdle;
  __pyx_vtabptr_6uvloop_4loop_Loop = &__pyx_vtable_6uvloop_4loop_Loop;
  __pyx_vtable_6uvloop_4loop_Loop._on_wake = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__on_wake;
  __pyx_vtable_6uvloop_4loop_Loop._on_idle = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__on_idle;
  __pyx_vtable_6uvloop_4loop_Loop._on_sigint = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__on_sigint;
  __pyx_vtable_6uvloop_4loop_Loop._on_sighup = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__on_sighup;
  __pyx_vtable_6uvloop_4loop_Loop._check_sigint = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__check_sigint;
  __pyx_vtable_6uvloop_4loop_Loop.__pyx___run = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, uv_run_mode))__pyx_f_6uvloop_4loop_4Loop___run;
  __pyx_vtable_6uvloop_4loop_Loop._run = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, uv_run_mode))__pyx_f_6uvloop_4loop_4Loop__run;
  __pyx_vtable_6uvloop_4loop_Loop._close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__close;
  __pyx_vtable_6uvloop_4loop_Loop._stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__stop;
  __pyx_vtable_6uvloop_4loop_Loop._time = (uint64_t (*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__time;
  __pyx_vtable_6uvloop_4loop_Loop._call_soon = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__call_soon;
  __pyx_vtable_6uvloop_4loop_Loop._call_soon_handle = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_4Loop__call_soon_handle;
  __pyx_vtable_6uvloop_4loop_Loop._call_later = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, uint64_t, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__call_later;
  __pyx_vtable_6uvloop_4loop_Loop._handle_exception = (void (*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__handle_exception;
  __pyx_vtable_6uvloop_4loop_Loop._new_future = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__new_future;
  __pyx_vtable_6uvloop_4loop_Loop._check_signal = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__check_signal;
  __pyx_vtable_6uvloop_4loop_Loop._check_closed = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__check_closed;
  __pyx_vtable_6uvloop_4loop_Loop._check_thread = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_4Loop__check_thread;
  __pyx_vtable_6uvloop_4loop_Loop._getaddrinfo = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, int, int, int, int, int))__pyx_f_6uvloop_4loop_4Loop__getaddrinfo;
  __pyx_vtable_6uvloop_4loop_Loop._getnameinfo = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, struct sockaddr *, int))__pyx_f_6uvloop_4loop_4Loop__getnameinfo;
  __pyx_vtable_6uvloop_4loop_Loop._add_reader = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_4Loop__add_reader;
  __pyx_vtable_6uvloop_4loop_Loop._remove_reader = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__remove_reader;
  __pyx_vtable_6uvloop_4loop_Loop._add_writer = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_4Loop__add_writer;
  __pyx_vtable_6uvloop_4loop_Loop._remove_writer = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__remove_writer;
  __pyx_vtable_6uvloop_4loop_Loop._sock_recv = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__sock_recv;
  __pyx_vtable_6uvloop_4loop_Loop._sock_sendall = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__sock_sendall;
  __pyx_vtable_6uvloop_4loop_Loop._sock_accept = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, int, PyObject *))__pyx_f_6uvloop_4loop_4Loop__sock_accept;
  __pyx_vtable_6uvloop_4loop_Loop._sock_connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__sock_connect;
  __pyx_vtable_6uvloop_4loop_Loop._sock_connect_cb = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_4Loop__sock_connect_cb;
  __pyx_vtable_6uvloop_4loop_Loop._sock_set_reuseport = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, int))__pyx_f_6uvloop_4loop_4Loop__sock_set_reuseport;
  __pyx_vtable_6uvloop_4loop_Loop._set_coroutine_wrapper = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, int))__pyx_f_6uvloop_4loop_4Loop__set_coroutine_wrapper;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_Loop) < 0) __PYX_ERR(2, 39, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_Loop.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_Loop.tp_dict, __pyx_vtabptr_6uvloop_4loop_Loop) < 0) __PYX_ERR(2, 39, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "Loop", (PyObject *)&__pyx_type_6uvloop_4loop_Loop) < 0) __PYX_ERR(2, 39, __pyx_L1_error)
  if (__pyx_type_6uvloop_4loop_Loop.tp_weaklistoffset == 0) __pyx_type_6uvloop_4loop_Loop.tp_weaklistoffset = offsetof(struct __pyx_obj_6uvloop_4loop_Loop, __weakref__);
  __pyx_ptype_6uvloop_4loop_Loop = &__pyx_type_6uvloop_4loop_Loop;
  __pyx_vtabptr_6uvloop_4loop_Handle = &__pyx_vtable_6uvloop_4loop_Handle;
  __pyx_vtable_6uvloop_4loop_Handle._set_loop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Handle *, struct __pyx_obj_6uvloop_4loop_Loop *))__pyx_f_6uvloop_4loop_6Handle__set_loop;
  __pyx_vtable_6uvloop_4loop_Handle._run = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6Handle__run;
  __pyx_vtable_6uvloop_4loop_Handle._cancel = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6Handle__cancel;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_Handle) < 0) __PYX_ERR(3, 3, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_Handle.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_Handle.tp_dict, __pyx_vtabptr_6uvloop_4loop_Handle) < 0) __PYX_ERR(3, 3, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "Handle", (PyObject *)&__pyx_type_6uvloop_4loop_Handle) < 0) __PYX_ERR(3, 3, __pyx_L1_error)
  if (__pyx_type_6uvloop_4loop_Handle.tp_weaklistoffset == 0) __pyx_type_6uvloop_4loop_Handle.tp_weaklistoffset = offsetof(struct __pyx_obj_6uvloop_4loop_Handle, __weakref__);
  __pyx_ptype_6uvloop_4loop_Handle = &__pyx_type_6uvloop_4loop_Handle;
  __pyx_vtabptr_6uvloop_4loop_TimerHandle = &__pyx_vtable_6uvloop_4loop_TimerHandle;
  __pyx_vtable_6uvloop_4loop_TimerHandle._run = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TimerHandle *))__pyx_f_6uvloop_4loop_11TimerHandle__run;
  __pyx_vtable_6uvloop_4loop_TimerHandle._cancel = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TimerHandle *))__pyx_f_6uvloop_4loop_11TimerHandle__cancel;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_TimerHandle) < 0) __PYX_ERR(3, 115, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_TimerHandle.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_TimerHandle.tp_dict, __pyx_vtabptr_6uvloop_4loop_TimerHandle) < 0) __PYX_ERR(3, 115, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "TimerHandle", (PyObject *)&__pyx_type_6uvloop_4loop_TimerHandle) < 0) __PYX_ERR(3, 115, __pyx_L1_error)
  if (__pyx_type_6uvloop_4loop_TimerHandle.tp_weaklistoffset == 0) __pyx_type_6uvloop_4loop_TimerHandle.tp_weaklistoffset = offsetof(struct __pyx_obj_6uvloop_4loop_TimerHandle, __weakref__);
  __pyx_ptype_6uvloop_4loop_TimerHandle = &__pyx_type_6uvloop_4loop_TimerHandle;
  __pyx_vtabptr_6uvloop_4loop_UVSocketHandle = &__pyx_vtable_6uvloop_4loop_UVSocketHandle;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle.__pyx_base._close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_14UVSocketHandle__close;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle._fileno = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_14UVSocketHandle__fileno;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_14UVSocketHandle__new_socket;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle._get_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_14UVSocketHandle__get_socket;
  __pyx_vtable_6uvloop_4loop_UVSocketHandle._attach_fileobj = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *, PyObject *))__pyx_f_6uvloop_4loop_14UVSocketHandle__attach_fileobj;
  __pyx_type_6uvloop_4loop_UVSocketHandle.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVSocketHandle) < 0) __PYX_ERR(0, 197, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVSocketHandle.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVSocketHandle.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVSocketHandle) < 0) __PYX_ERR(0, 197, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVSocketHandle", (PyObject *)&__pyx_type_6uvloop_4loop_UVSocketHandle) < 0) __PYX_ERR(0, 197, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVSocketHandle = &__pyx_type_6uvloop_4loop_UVSocketHandle;
  __pyx_vtabptr_6uvloop_4loop_UVPoll = &__pyx_vtable_6uvloop_4loop_UVPoll;
  __pyx_vtable_6uvloop_4loop_UVPoll.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVPoll.__pyx_base._fatal_error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args))__pyx_f_6uvloop_4loop_6UVPoll__fatal_error;
  __pyx_vtable_6uvloop_4loop_UVPoll.__pyx_base._close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_6UVPoll__close;
  __pyx_vtable_6uvloop_4loop_UVPoll._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Loop *, int))__pyx_f_6uvloop_4loop_6UVPoll__init;
  __pyx_vtable_6uvloop_4loop_UVPoll._poll_start = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *, int))__pyx_f_6uvloop_4loop_6UVPoll__poll_start;
  __pyx_vtable_6uvloop_4loop_UVPoll._poll_stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *))__pyx_f_6uvloop_4loop_6UVPoll__poll_stop;
  __pyx_vtable_6uvloop_4loop_UVPoll.is_active = (int (*)(struct __pyx_obj_6uvloop_4loop_UVPoll *))__pyx_f_6uvloop_4loop_6UVPoll_is_active;
  __pyx_vtable_6uvloop_4loop_UVPoll.start_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6UVPoll_start_reading;
  __pyx_vtable_6uvloop_4loop_UVPoll.start_writing = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *, struct __pyx_obj_6uvloop_4loop_Handle *))__pyx_f_6uvloop_4loop_6UVPoll_start_writing;
  __pyx_vtable_6uvloop_4loop_UVPoll.stop_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *))__pyx_f_6uvloop_4loop_6UVPoll_stop_reading;
  __pyx_vtable_6uvloop_4loop_UVPoll.stop_writing = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *))__pyx_f_6uvloop_4loop_6UVPoll_stop_writing;
  __pyx_vtable_6uvloop_4loop_UVPoll.stop = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVPoll *))__pyx_f_6uvloop_4loop_6UVPoll_stop;
  __pyx_vtable_6uvloop_4loop_UVPoll.new = (struct __pyx_obj_6uvloop_4loop_UVPoll *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, int))__pyx_f_6uvloop_4loop_6UVPoll_new;
  __pyx_type_6uvloop_4loop_UVPoll.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVPoll) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVPoll.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVPoll.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVPoll) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVPoll", (PyObject *)&__pyx_type_6uvloop_4loop_UVPoll) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVPoll = &__pyx_type_6uvloop_4loop_UVPoll;
  __pyx_vtabptr_6uvloop_4loop_UVBaseTransport = &__pyx_vtable_6uvloop_4loop_UVBaseTransport;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVSocketHandle;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport.__pyx_base.__pyx_base._fatal_error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args))__pyx_f_6uvloop_4loop_15UVBaseTransport__fatal_error;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._set_write_buffer_limits = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_opt_args_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits *__pyx_optional_args))__pyx_f_6uvloop_4loop_15UVBaseTransport__set_write_buffer_limits;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._maybe_pause_protocol = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_pause_protocol;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._maybe_resume_protocol = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__maybe_resume_protocol;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._schedule_call_connection_made = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_made;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._schedule_call_connection_lost = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *))__pyx_f_6uvloop_4loop_15UVBaseTransport__schedule_call_connection_lost;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._call_connection_made = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_made;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._call_connection_lost = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *))__pyx_f_6uvloop_4loop_15UVBaseTransport__call_connection_lost;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._set_server = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, struct __pyx_obj_6uvloop_4loop_Server *))__pyx_f_6uvloop_4loop_15UVBaseTransport__set_server;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._set_waiter = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *))__pyx_f_6uvloop_4loop_15UVBaseTransport__set_waiter;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._set_protocol = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *))__pyx_f_6uvloop_4loop_15UVBaseTransport__set_protocol;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._init_protocol = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__init_protocol;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._add_extra_info = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_15UVBaseTransport__add_extra_info;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._get_write_buffer_size = (size_t (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__get_write_buffer_size;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._is_reading = (int (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__is_reading;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._start_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__start_reading;
  __pyx_vtable_6uvloop_4loop_UVBaseTransport._stop_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_15UVBaseTransport__stop_reading;
  __pyx_type_6uvloop_4loop_UVBaseTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVSocketHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVBaseTransport) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVBaseTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVBaseTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVBaseTransport) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVBaseTransport", (PyObject *)&__pyx_type_6uvloop_4loop_UVBaseTransport) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVBaseTransport = &__pyx_type_6uvloop_4loop_UVBaseTransport;
  __pyx_vtabptr_6uvloop_4loop_UVStream = &__pyx_vtable_6uvloop_4loop_UVStream;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVBaseTransport;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base.__pyx_base.__pyx_base._close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_8UVStream__close;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base._get_write_buffer_size = (size_t (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_8UVStream__get_write_buffer_size;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base._is_reading = (int (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_8UVStream__is_reading;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base._start_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_8UVStream__start_reading;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx_base._stop_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_8UVStream__stop_reading;
  __pyx_vtable_6uvloop_4loop_UVStream._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_8UVStream__init;
  __pyx_vtable_6uvloop_4loop_UVStream._shutdown = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__shutdown;
  __pyx_vtable_6uvloop_4loop_UVStream._accept = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__accept;
  __pyx_vtable_6uvloop_4loop_UVStream._close_on_read_error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__close_on_read_error;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx___reading_started = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream___reading_started;
  __pyx_vtable_6uvloop_4loop_UVStream.__pyx___reading_stopped = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream___reading_stopped;
  __pyx_vtable_6uvloop_4loop_UVStream._write = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *))__pyx_f_6uvloop_4loop_8UVStream__write;
  __pyx_vtable_6uvloop_4loop_UVStream._try_write = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *))__pyx_f_6uvloop_4loop_8UVStream__try_write;
  __pyx_vtable_6uvloop_4loop_UVStream._on_accept = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__on_accept;
  __pyx_vtable_6uvloop_4loop_UVStream._on_read = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *))__pyx_f_6uvloop_4loop_8UVStream__on_read;
  __pyx_vtable_6uvloop_4loop_UVStream._on_eof = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__on_eof;
  __pyx_vtable_6uvloop_4loop_UVStream._on_write = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *))__pyx_f_6uvloop_4loop_8UVStream__on_write;
  __pyx_vtable_6uvloop_4loop_UVStream._on_connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *))__pyx_f_6uvloop_4loop_8UVStream__on_connect;
  __pyx_type_6uvloop_4loop_UVStream.tp_base = __pyx_ptype_6uvloop_4loop_UVBaseTransport;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVStream) < 0) __PYX_ERR(15, 66, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVStream.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVStream.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVStream) < 0) __PYX_ERR(15, 66, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVStream", (PyObject *)&__pyx_type_6uvloop_4loop_UVStream) < 0) __PYX_ERR(15, 66, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVStream = &__pyx_type_6uvloop_4loop_UVStream;
  __pyx_vtabptr_6uvloop_4loop_UVStreamServer = &__pyx_vtable_6uvloop_4loop_UVStreamServer;
  __pyx_vtable_6uvloop_4loop_UVStreamServer.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVSocketHandle;
  __pyx_vtable_6uvloop_4loop_UVStreamServer.__pyx_base.__pyx_base._fatal_error = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *, PyObject *, PyObject *, struct __pyx_opt_args_6uvloop_4loop_8UVHandle__fatal_error *__pyx_optional_args))__pyx_f_6uvloop_4loop_14UVStreamServer__fatal_error;
  __pyx_vtable_6uvloop_4loop_UVStreamServer._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_14UVStreamServer__init;
  __pyx_vtable_6uvloop_4loop_UVStreamServer._mark_as_open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *))__pyx_f_6uvloop_4loop_14UVStreamServer__mark_as_open;
  __pyx_vtable_6uvloop_4loop_UVStreamServer.listen = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, int))__pyx_f_6uvloop_4loop_14UVStreamServer_listen;
  __pyx_vtable_6uvloop_4loop_UVStreamServer._on_listen = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *))__pyx_f_6uvloop_4loop_14UVStreamServer__on_listen;
  __pyx_vtable_6uvloop_4loop_UVStreamServer._make_new_transport = (struct __pyx_obj_6uvloop_4loop_UVStream *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_14UVStreamServer__make_new_transport;
  __pyx_type_6uvloop_4loop_UVStreamServer.tp_base = __pyx_ptype_6uvloop_4loop_UVSocketHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVStreamServer) < 0) __PYX_ERR(16, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVStreamServer.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVStreamServer.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVStreamServer) < 0) __PYX_ERR(16, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVStreamServer", (PyObject *)&__pyx_type_6uvloop_4loop_UVStreamServer) < 0) __PYX_ERR(16, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVStreamServer = &__pyx_type_6uvloop_4loop_UVStreamServer;
  __pyx_vtabptr_6uvloop_4loop_TCPServer = &__pyx_vtable_6uvloop_4loop_TCPServer;
  __pyx_vtable_6uvloop_4loop_TCPServer.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStreamServer;
  __pyx_vtable_6uvloop_4loop_TCPServer.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_9TCPServer__new_socket;
  __pyx_vtable_6uvloop_4loop_TCPServer.__pyx_base._make_new_transport = (struct __pyx_obj_6uvloop_4loop_UVStream *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_9TCPServer__make_new_transport;
  __pyx_vtable_6uvloop_4loop_TCPServer.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TCPServer *, int))__pyx_f_6uvloop_4loop_9TCPServer_open;
  __pyx_vtable_6uvloop_4loop_TCPServer.bind = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TCPServer *, struct sockaddr *, struct __pyx_opt_args_6uvloop_4loop_9TCPServer_bind *__pyx_optional_args))__pyx_f_6uvloop_4loop_9TCPServer_bind;
  __pyx_vtable_6uvloop_4loop_TCPServer.new = (struct __pyx_obj_6uvloop_4loop_TCPServer *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *, unsigned int))__pyx_f_6uvloop_4loop_9TCPServer_new;
  __pyx_type_6uvloop_4loop_TCPServer.tp_base = __pyx_ptype_6uvloop_4loop_UVStreamServer;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_TCPServer) < 0) __PYX_ERR(5, 57, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_TCPServer.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_TCPServer.tp_dict, __pyx_vtabptr_6uvloop_4loop_TCPServer) < 0) __PYX_ERR(5, 57, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "TCPServer", (PyObject *)&__pyx_type_6uvloop_4loop_TCPServer) < 0) __PYX_ERR(5, 57, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_TCPServer = &__pyx_type_6uvloop_4loop_TCPServer;
  __pyx_vtabptr_6uvloop_4loop_TCPTransport = &__pyx_vtable_6uvloop_4loop_TCPTransport;
  __pyx_vtable_6uvloop_4loop_TCPTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStream;
  __pyx_vtable_6uvloop_4loop_TCPTransport.__pyx_base.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_12TCPTransport__new_socket;
  __pyx_vtable_6uvloop_4loop_TCPTransport.__pyx_base.__pyx_base._call_connection_made = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_12TCPTransport__call_connection_made;
  __pyx_vtable_6uvloop_4loop_TCPTransport.bind = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, struct sockaddr *, struct __pyx_opt_args_6uvloop_4loop_12TCPTransport_bind *__pyx_optional_args))__pyx_f_6uvloop_4loop_12TCPTransport_bind;
  __pyx_vtable_6uvloop_4loop_TCPTransport.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, int))__pyx_f_6uvloop_4loop_12TCPTransport_open;
  __pyx_vtable_6uvloop_4loop_TCPTransport.connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_TCPTransport *, struct sockaddr *))__pyx_f_6uvloop_4loop_12TCPTransport_connect;
  __pyx_vtable_6uvloop_4loop_TCPTransport.new = (struct __pyx_obj_6uvloop_4loop_TCPTransport *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_12TCPTransport_new;
  __pyx_type_6uvloop_4loop_TCPTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVStream;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_TCPTransport) < 0) __PYX_ERR(5, 97, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_TCPTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_TCPTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_TCPTransport) < 0) __PYX_ERR(5, 97, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "TCPTransport", (PyObject *)&__pyx_type_6uvloop_4loop_TCPTransport) < 0) __PYX_ERR(5, 97, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_TCPTransport = &__pyx_type_6uvloop_4loop_TCPTransport;
  __pyx_vtabptr_6uvloop_4loop_UnixServer = &__pyx_vtable_6uvloop_4loop_UnixServer;
  __pyx_vtable_6uvloop_4loop_UnixServer.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStreamServer;
  __pyx_vtable_6uvloop_4loop_UnixServer.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_10UnixServer__new_socket;
  __pyx_vtable_6uvloop_4loop_UnixServer.__pyx_base._make_new_transport = (struct __pyx_obj_6uvloop_4loop_UVStream *(*)(struct __pyx_obj_6uvloop_4loop_UVStreamServer *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_10UnixServer__make_new_transport;
  __pyx_vtable_6uvloop_4loop_UnixServer.bind = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UnixServer *, PyObject *))__pyx_f_6uvloop_4loop_10UnixServer_bind;
  __pyx_vtable_6uvloop_4loop_UnixServer.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UnixServer *, int))__pyx_f_6uvloop_4loop_10UnixServer_open;
  __pyx_vtable_6uvloop_4loop_UnixServer.new = (struct __pyx_obj_6uvloop_4loop_UnixServer *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_10UnixServer_new;
  __pyx_type_6uvloop_4loop_UnixServer.tp_base = __pyx_ptype_6uvloop_4loop_UVStreamServer;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UnixServer) < 0) __PYX_ERR(17, 37, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UnixServer.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UnixServer.tp_dict, __pyx_vtabptr_6uvloop_4loop_UnixServer) < 0) __PYX_ERR(17, 37, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UnixServer", (PyObject *)&__pyx_type_6uvloop_4loop_UnixServer) < 0) __PYX_ERR(17, 37, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UnixServer = &__pyx_type_6uvloop_4loop_UnixServer;
  __pyx_vtabptr_6uvloop_4loop_UnixTransport = &__pyx_vtable_6uvloop_4loop_UnixTransport;
  __pyx_vtable_6uvloop_4loop_UnixTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStream;
  __pyx_vtable_6uvloop_4loop_UnixTransport.__pyx_base.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_13UnixTransport__new_socket;
  __pyx_vtable_6uvloop_4loop_UnixTransport.new = (struct __pyx_obj_6uvloop_4loop_UnixTransport *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_13UnixTransport_new;
  __pyx_vtable_6uvloop_4loop_UnixTransport.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UnixTransport *, int))__pyx_f_6uvloop_4loop_13UnixTransport_open;
  __pyx_vtable_6uvloop_4loop_UnixTransport.connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UnixTransport *, char *))__pyx_f_6uvloop_4loop_13UnixTransport_connect;
  __pyx_type_6uvloop_4loop_UnixTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVStream;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UnixTransport) < 0) __PYX_ERR(17, 76, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UnixTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UnixTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_UnixTransport) < 0) __PYX_ERR(17, 76, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UnixTransport", (PyObject *)&__pyx_type_6uvloop_4loop_UnixTransport) < 0) __PYX_ERR(17, 76, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UnixTransport = &__pyx_type_6uvloop_4loop_UnixTransport;
  __pyx_vtabptr_6uvloop_4loop_ReadUnixTransport = &__pyx_vtable_6uvloop_4loop_ReadUnixTransport;
  __pyx_vtable_6uvloop_4loop_ReadUnixTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStream;
  __pyx_vtable_6uvloop_4loop_ReadUnixTransport.__pyx_base.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_17ReadUnixTransport__new_socket;
  __pyx_vtable_6uvloop_4loop_ReadUnixTransport.new = (struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_17ReadUnixTransport_new;
  __pyx_vtable_6uvloop_4loop_ReadUnixTransport.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_ReadUnixTransport *, int))__pyx_f_6uvloop_4loop_17ReadUnixTransport_open;
  __pyx_type_6uvloop_4loop_ReadUnixTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVStream;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_ReadUnixTransport) < 0) __PYX_ERR(17, 101, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_ReadUnixTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_ReadUnixTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_ReadUnixTransport) < 0) __PYX_ERR(17, 101, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "ReadUnixTransport", (PyObject *)&__pyx_type_6uvloop_4loop_ReadUnixTransport) < 0) __PYX_ERR(17, 101, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_ReadUnixTransport = &__pyx_type_6uvloop_4loop_ReadUnixTransport;
  __pyx_vtabptr_6uvloop_4loop_WriteUnixTransport = &__pyx_vtable_6uvloop_4loop_WriteUnixTransport;
  __pyx_vtable_6uvloop_4loop_WriteUnixTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVStream;
  __pyx_vtable_6uvloop_4loop_WriteUnixTransport.__pyx_base.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_18WriteUnixTransport__new_socket;
  __pyx_vtable_6uvloop_4loop_WriteUnixTransport.new = (struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, struct __pyx_obj_6uvloop_4loop_Server *, PyObject *))__pyx_f_6uvloop_4loop_18WriteUnixTransport_new;
  __pyx_vtable_6uvloop_4loop_WriteUnixTransport.open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_WriteUnixTransport *, int))__pyx_f_6uvloop_4loop_18WriteUnixTransport_open;
  __pyx_type_6uvloop_4loop_WriteUnixTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVStream;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_WriteUnixTransport) < 0) __PYX_ERR(17, 144, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_WriteUnixTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_WriteUnixTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_WriteUnixTransport) < 0) __PYX_ERR(17, 144, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "WriteUnixTransport", (PyObject *)&__pyx_type_6uvloop_4loop_WriteUnixTransport) < 0) __PYX_ERR(17, 144, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_WriteUnixTransport = &__pyx_type_6uvloop_4loop_WriteUnixTransport;
  __pyx_vtabptr_6uvloop_4loop_UVProcess = &__pyx_vtable_6uvloop_4loop_UVProcess;
  __pyx_vtable_6uvloop_4loop_UVProcess.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVHandle;
  __pyx_vtable_6uvloop_4loop_UVProcess.__pyx_base._free = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVHandle *))__pyx_f_6uvloop_4loop_9UVProcess__free;
  __pyx_vtable_6uvloop_4loop_UVProcess._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess__init;
  __pyx_vtable_6uvloop_4loop_UVProcess.__pyx___to_cstring_array = (char **(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess___to_cstring_array;
  __pyx_vtable_6uvloop_4loop_UVProcess._init_args = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess__init_args;
  __pyx_vtable_6uvloop_4loop_UVProcess._init_env = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess__init_env;
  __pyx_vtable_6uvloop_4loop_UVProcess._init_files = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess__init_files;
  __pyx_vtable_6uvloop_4loop_UVProcess._init_options = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_9UVProcess__init_options;
  __pyx_vtable_6uvloop_4loop_UVProcess._close_after_spawn = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int))__pyx_f_6uvloop_4loop_9UVProcess__close_after_spawn;
  __pyx_vtable_6uvloop_4loop_UVProcess._on_exit = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int64_t, int))__pyx_f_6uvloop_4loop_9UVProcess__on_exit;
  __pyx_vtable_6uvloop_4loop_UVProcess._kill = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int))__pyx_f_6uvloop_4loop_9UVProcess__kill;
  __pyx_type_6uvloop_4loop_UVProcess.tp_base = __pyx_ptype_6uvloop_4loop_UVHandle;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVProcess) < 0) __PYX_ERR(6, 2, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVProcess.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVProcess.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVProcess) < 0) __PYX_ERR(6, 2, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVProcess", (PyObject *)&__pyx_type_6uvloop_4loop_UVProcess) < 0) __PYX_ERR(6, 2, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVProcess = &__pyx_type_6uvloop_4loop_UVProcess;
  __pyx_vtabptr_6uvloop_4loop_UVProcessTransport = &__pyx_vtable_6uvloop_4loop_UVProcessTransport;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVProcess;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport.__pyx_base._init_files = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_18UVProcessTransport__init_files;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport.__pyx_base._on_exit = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcess *, int64_t, int))__pyx_f_6uvloop_4loop_18UVProcessTransport__on_exit;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._file_redirect_stdio = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int))__pyx_f_6uvloop_4loop_18UVProcessTransport__file_redirect_stdio;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._file_devnull = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *))__pyx_f_6uvloop_4loop_18UVProcessTransport__file_devnull;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._file_inpipe = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *))__pyx_f_6uvloop_4loop_18UVProcessTransport__file_inpipe;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._file_outpipe = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *))__pyx_f_6uvloop_4loop_18UVProcessTransport__file_outpipe;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._check_proc = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *))__pyx_f_6uvloop_4loop_18UVProcessTransport__check_proc;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._pipe_connection_lost = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int, PyObject *))__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_connection_lost;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._pipe_data_received = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, int, PyObject *))__pyx_f_6uvloop_4loop_18UVProcessTransport__pipe_data_received;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._call_connection_made = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *, PyObject *))__pyx_f_6uvloop_4loop_18UVProcessTransport__call_connection_made;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport._try_finish = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVProcessTransport *))__pyx_f_6uvloop_4loop_18UVProcessTransport__try_finish;
  __pyx_vtable_6uvloop_4loop_UVProcessTransport.new = (struct __pyx_obj_6uvloop_4loop_UVProcessTransport *(*)(struct __pyx_obj_6uvloop_4loop_Loop *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_18UVProcessTransport_new;
  __pyx_type_6uvloop_4loop_UVProcessTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVProcess;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVProcessTransport) < 0) __PYX_ERR(6, 213, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVProcessTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVProcessTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVProcessTransport) < 0) __PYX_ERR(6, 213, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVProcessTransport", (PyObject *)&__pyx_type_6uvloop_4loop_UVProcessTransport) < 0) __PYX_ERR(6, 213, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVProcessTransport = &__pyx_type_6uvloop_4loop_UVProcessTransport;
  __pyx_vtabptr_6uvloop_4loop_UVRequest = &__pyx_vtable_6uvloop_4loop_UVRequest;
  __pyx_vtable_6uvloop_4loop_UVRequest.on_done = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVRequest *))__pyx_f_6uvloop_4loop_9UVRequest_on_done;
  __pyx_vtable_6uvloop_4loop_UVRequest.cancel = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVRequest *))__pyx_f_6uvloop_4loop_9UVRequest_cancel;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UVRequest) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UVRequest.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UVRequest.tp_dict, __pyx_vtabptr_6uvloop_4loop_UVRequest) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UVRequest", (PyObject *)&__pyx_type_6uvloop_4loop_UVRequest) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UVRequest = &__pyx_type_6uvloop_4loop_UVRequest;
  __pyx_vtabptr_6uvloop_4loop_UDPTransport = &__pyx_vtable_6uvloop_4loop_UDPTransport;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVBaseTransport;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base.__pyx_base._new_socket = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVSocketHandle *))__pyx_f_6uvloop_4loop_12UDPTransport__new_socket;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base._get_write_buffer_size = (size_t (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_12UDPTransport__get_write_buffer_size;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base._is_reading = (int (*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_12UDPTransport__is_reading;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base._start_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_12UDPTransport__start_reading;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx_base._stop_reading = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UVBaseTransport *))__pyx_f_6uvloop_4loop_12UDPTransport__stop_reading;
  __pyx_vtable_6uvloop_4loop_UDPTransport._init = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct __pyx_obj_6uvloop_4loop_Loop *, unsigned int))__pyx_f_6uvloop_4loop_12UDPTransport__init;
  __pyx_vtable_6uvloop_4loop_UDPTransport._set_remote_address = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct sockaddr))__pyx_f_6uvloop_4loop_12UDPTransport__set_remote_address;
  __pyx_vtable_6uvloop_4loop_UDPTransport._bind = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, struct sockaddr *, int))__pyx_f_6uvloop_4loop_12UDPTransport__bind;
  __pyx_vtable_6uvloop_4loop_UDPTransport._open = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, int, int))__pyx_f_6uvloop_4loop_12UDPTransport__open;
  __pyx_vtable_6uvloop_4loop_UDPTransport._set_broadcast = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, int))__pyx_f_6uvloop_4loop_12UDPTransport__set_broadcast;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx___receiving_started = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *))__pyx_f_6uvloop_4loop_12UDPTransport___receiving_started;
  __pyx_vtable_6uvloop_4loop_UDPTransport.__pyx___receiving_stopped = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *))__pyx_f_6uvloop_4loop_12UDPTransport___receiving_stopped;
  __pyx_vtable_6uvloop_4loop_UDPTransport._send = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_12UDPTransport__send;
  __pyx_vtable_6uvloop_4loop_UDPTransport._on_receive = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *, PyObject *, PyObject *))__pyx_f_6uvloop_4loop_12UDPTransport__on_receive;
  __pyx_vtable_6uvloop_4loop_UDPTransport._on_sent = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *))__pyx_f_6uvloop_4loop_12UDPTransport__on_sent;
  __pyx_type_6uvloop_4loop_UDPTransport.tp_base = __pyx_ptype_6uvloop_4loop_UVBaseTransport;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_UDPTransport) < 0) __PYX_ERR(7, 54, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_UDPTransport.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_UDPTransport.tp_dict, __pyx_vtabptr_6uvloop_4loop_UDPTransport) < 0) __PYX_ERR(7, 54, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "UDPTransport", (PyObject *)&__pyx_type_6uvloop_4loop_UDPTransport) < 0) __PYX_ERR(7, 54, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_UDPTransport = &__pyx_type_6uvloop_4loop_UDPTransport;
  __pyx_vtabptr_6uvloop_4loop_Server = &__pyx_vtable_6uvloop_4loop_Server;
  __pyx_vtable_6uvloop_4loop_Server._add_server = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Server *, struct __pyx_obj_6uvloop_4loop_UVStreamServer *))__pyx_f_6uvloop_4loop_6Server__add_server;
  __pyx_vtable_6uvloop_4loop_Server._wakeup = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Server *))__pyx_f_6uvloop_4loop_6Server__wakeup;
  __pyx_vtable_6uvloop_4loop_Server._attach = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Server *))__pyx_f_6uvloop_4loop_6Server__attach;
  __pyx_vtable_6uvloop_4loop_Server._detach = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_Server *))__pyx_f_6uvloop_4loop_6Server__detach;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_Server) < 0) __PYX_ERR(20, 1, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_Server.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_Server.tp_dict, __pyx_vtabptr_6uvloop_4loop_Server) < 0) __PYX_ERR(20, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "Server", (PyObject *)&__pyx_type_6uvloop_4loop_Server) < 0) __PYX_ERR(20, 1, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_Server = &__pyx_type_6uvloop_4loop_Server;
  __pyx_vtabptr_6uvloop_4loop_SignalsStack = &__pyx_vtable_6uvloop_4loop_SignalsStack;
  __pyx_vtable_6uvloop_4loop_SignalsStack.save = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_SignalsStack *))__pyx_f_6uvloop_4loop_12SignalsStack_save;
  __pyx_vtable_6uvloop_4loop_SignalsStack.restore = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_SignalsStack *))__pyx_f_6uvloop_4loop_12SignalsStack_restore;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_SignalsStack) < 0) __PYX_ERR(21, 5, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_SignalsStack.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_SignalsStack.tp_dict, __pyx_vtabptr_6uvloop_4loop_SignalsStack) < 0) __PYX_ERR(21, 5, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "SignalsStack", (PyObject *)&__pyx_type_6uvloop_4loop_SignalsStack) < 0) __PYX_ERR(21, 5, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_SignalsStack = &__pyx_type_6uvloop_4loop_SignalsStack;
  __pyx_vtabptr_6uvloop_4loop__StreamWriteContext = &__pyx_vtable_6uvloop_4loop__StreamWriteContext;
  __pyx_vtable_6uvloop_4loop__StreamWriteContext.close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop__StreamWriteContext *))__pyx_f_6uvloop_4loop_19_StreamWriteContext_close;
  __pyx_vtable_6uvloop_4loop__StreamWriteContext.new = (struct __pyx_obj_6uvloop_4loop__StreamWriteContext *(*)(struct __pyx_obj_6uvloop_4loop_UVStream *, PyObject *))__pyx_f_6uvloop_4loop_19_StreamWriteContext_new;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop__StreamWriteContext) < 0) __PYX_ERR(15, 3, __pyx_L1_error)
  __pyx_type_6uvloop_4loop__StreamWriteContext.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop__StreamWriteContext.tp_dict, __pyx_vtabptr_6uvloop_4loop__StreamWriteContext) < 0) __PYX_ERR(15, 3, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "_StreamWriteContext", (PyObject *)&__pyx_type_6uvloop_4loop__StreamWriteContext) < 0) __PYX_ERR(15, 3, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop__StreamWriteContext = &__pyx_type_6uvloop_4loop__StreamWriteContext;
  __pyx_vtabptr_6uvloop_4loop__TCPConnectRequest = &__pyx_vtable_6uvloop_4loop__TCPConnectRequest;
  __pyx_vtable_6uvloop_4loop__TCPConnectRequest.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVRequest;
  __pyx_vtable_6uvloop_4loop__TCPConnectRequest.connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop__TCPConnectRequest *, struct sockaddr *))__pyx_f_6uvloop_4loop_18_TCPConnectRequest_connect;
  __pyx_type_6uvloop_4loop__TCPConnectRequest.tp_base = __pyx_ptype_6uvloop_4loop_UVRequest;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop__TCPConnectRequest) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  __pyx_type_6uvloop_4loop__TCPConnectRequest.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop__TCPConnectRequest.tp_dict, __pyx_vtabptr_6uvloop_4loop__TCPConnectRequest) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "_TCPConnectRequest", (PyObject *)&__pyx_type_6uvloop_4loop__TCPConnectRequest) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop__TCPConnectRequest = &__pyx_type_6uvloop_4loop__TCPConnectRequest;
  __pyx_vtabptr_6uvloop_4loop__PipeConnectRequest = &__pyx_vtable_6uvloop_4loop__PipeConnectRequest;
  __pyx_vtable_6uvloop_4loop__PipeConnectRequest.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVRequest;
  __pyx_vtable_6uvloop_4loop__PipeConnectRequest.connect = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop__PipeConnectRequest *, char *))__pyx_f_6uvloop_4loop_19_PipeConnectRequest_connect;
  __pyx_type_6uvloop_4loop__PipeConnectRequest.tp_base = __pyx_ptype_6uvloop_4loop_UVRequest;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop__PipeConnectRequest) < 0) __PYX_ERR(17, 175, __pyx_L1_error)
  __pyx_type_6uvloop_4loop__PipeConnectRequest.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop__PipeConnectRequest.tp_dict, __pyx_vtabptr_6uvloop_4loop__PipeConnectRequest) < 0) __PYX_ERR(17, 175, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "_PipeConnectRequest", (PyObject *)&__pyx_type_6uvloop_4loop__PipeConnectRequest) < 0) __PYX_ERR(17, 175, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop__PipeConnectRequest = &__pyx_type_6uvloop_4loop__PipeConnectRequest;
  __pyx_vtabptr_6uvloop_4loop_AddrInfo = &__pyx_vtable_6uvloop_4loop_AddrInfo;
  __pyx_vtable_6uvloop_4loop_AddrInfo.set_data = (void (*)(struct __pyx_obj_6uvloop_4loop_AddrInfo *, struct addrinfo *))__pyx_f_6uvloop_4loop_8AddrInfo_set_data;
  __pyx_vtable_6uvloop_4loop_AddrInfo.unpack = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_AddrInfo *))__pyx_f_6uvloop_4loop_8AddrInfo_unpack;
  __pyx_vtable_6uvloop_4loop_AddrInfo.isinstance = (int (*)(PyObject *))__pyx_f_6uvloop_4loop_8AddrInfo_isinstance;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_AddrInfo) < 0) __PYX_ERR(19, 102, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_AddrInfo.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_AddrInfo.tp_dict, __pyx_vtabptr_6uvloop_4loop_AddrInfo) < 0) __PYX_ERR(19, 102, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "AddrInfo", (PyObject *)&__pyx_type_6uvloop_4loop_AddrInfo) < 0) __PYX_ERR(19, 102, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_AddrInfo = &__pyx_type_6uvloop_4loop_AddrInfo;
  __pyx_vtabptr_6uvloop_4loop_AddrInfoRequest = &__pyx_vtable_6uvloop_4loop_AddrInfoRequest;
  __pyx_vtable_6uvloop_4loop_AddrInfoRequest.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVRequest;
  __pyx_type_6uvloop_4loop_AddrInfoRequest.tp_base = __pyx_ptype_6uvloop_4loop_UVRequest;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_AddrInfoRequest) < 0) __PYX_ERR(19, 146, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_AddrInfoRequest.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_AddrInfoRequest.tp_dict, __pyx_vtabptr_6uvloop_4loop_AddrInfoRequest) < 0) __PYX_ERR(19, 146, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "AddrInfoRequest", (PyObject *)&__pyx_type_6uvloop_4loop_AddrInfoRequest) < 0) __PYX_ERR(19, 146, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_AddrInfoRequest = &__pyx_type_6uvloop_4loop_AddrInfoRequest;
  __pyx_vtabptr_6uvloop_4loop_NameInfoRequest = &__pyx_vtable_6uvloop_4loop_NameInfoRequest;
  __pyx_vtable_6uvloop_4loop_NameInfoRequest.__pyx_base = *__pyx_vtabptr_6uvloop_4loop_UVRequest;
  __pyx_vtable_6uvloop_4loop_NameInfoRequest.query = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop_NameInfoRequest *, struct sockaddr *, int))__pyx_f_6uvloop_4loop_15NameInfoRequest_query;
  __pyx_type_6uvloop_4loop_NameInfoRequest.tp_base = __pyx_ptype_6uvloop_4loop_UVRequest;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop_NameInfoRequest) < 0) __PYX_ERR(19, 205, __pyx_L1_error)
  __pyx_type_6uvloop_4loop_NameInfoRequest.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop_NameInfoRequest.tp_dict, __pyx_vtabptr_6uvloop_4loop_NameInfoRequest) < 0) __PYX_ERR(19, 205, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "NameInfoRequest", (PyObject *)&__pyx_type_6uvloop_4loop_NameInfoRequest) < 0) __PYX_ERR(19, 205, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop_NameInfoRequest = &__pyx_type_6uvloop_4loop_NameInfoRequest;
  __pyx_vtabptr_6uvloop_4loop__UDPSendContext = &__pyx_vtable_6uvloop_4loop__UDPSendContext;
  __pyx_vtable_6uvloop_4loop__UDPSendContext.close = (PyObject *(*)(struct __pyx_obj_6uvloop_4loop__UDPSendContext *))__pyx_f_6uvloop_4loop_15_UDPSendContext_close;
  __pyx_vtable_6uvloop_4loop__UDPSendContext.new = (struct __pyx_obj_6uvloop_4loop__UDPSendContext *(*)(struct __pyx_obj_6uvloop_4loop_UDPTransport *, PyObject *))__pyx_f_6uvloop_4loop_15_UDPSendContext_new;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop__UDPSendContext) < 0) __PYX_ERR(7, 3, __pyx_L1_error)
  __pyx_type_6uvloop_4loop__UDPSendContext.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_6uvloop_4loop__UDPSendContext.tp_dict, __pyx_vtabptr_6uvloop_4loop__UDPSendContext) < 0) __PYX_ERR(7, 3, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "_UDPSendContext", (PyObject *)&__pyx_type_6uvloop_4loop__UDPSendContext) < 0) __PYX_ERR(7, 3, __pyx_L1_error)
  __pyx_ptype_6uvloop_4loop__UDPSendContext = &__pyx_type_6uvloop_4loop__UDPSendContext;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct___getaddrinfo) < 0) __PYX_ERR(2, 495, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct___getaddrinfo.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct___getaddrinfo = &__pyx_type_6uvloop_4loop___pyx_scope_struct___getaddrinfo;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_1__getnameinfo) < 0) __PYX_ERR(2, 534, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_1__getnameinfo.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_1__getnameinfo = &__pyx_type_6uvloop_4loop___pyx_scope_struct_1__getnameinfo;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_2__sock_connect) < 0) __PYX_ERR(2, 648, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_2__sock_connect.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_2__sock_connect = &__pyx_type_6uvloop_4loop___pyx_scope_struct_2__sock_connect;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_3_run_until_complete) < 0) __PYX_ERR(2, 924, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_3_run_until_complete.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_3_run_until_complete = &__pyx_type_6uvloop_4loop___pyx_scope_struct_3_run_until_complete;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_4_getnameinfo) < 0) __PYX_ERR(2, 958, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_4_getnameinfo.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_4_getnameinfo = &__pyx_type_6uvloop_4loop___pyx_scope_struct_4_getnameinfo;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_5_create_server) < 0) __PYX_ERR(2, 1013, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_5_create_server.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_5_create_server = &__pyx_type_6uvloop_4loop___pyx_scope_struct_5_create_server;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_6_create_connection) < 0) __PYX_ERR(2, 1105, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_6_create_connection.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_6_create_connection = &__pyx_type_6uvloop_4loop___pyx_scope_struct_6_create_connection;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_7_genexpr) < 0) __PYX_ERR(2, 1213, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_7_genexpr.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_7_genexpr = &__pyx_type_6uvloop_4loop___pyx_scope_struct_7_genexpr;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_8_genexpr) < 0) __PYX_ERR(2, 1218, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_8_genexpr.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_8_genexpr = &__pyx_type_6uvloop_4loop___pyx_scope_struct_8_genexpr;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_9_create_unix_server) < 0) __PYX_ERR(2, 1245, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_9_create_unix_server.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_9_create_unix_server = &__pyx_type_6uvloop_4loop___pyx_scope_struct_9_create_unix_server;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection) < 0) __PYX_ERR(2, 1296, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection = &__pyx_type_6uvloop_4loop___pyx_scope_struct_10_create_unix_connection;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_11___subprocess_run) < 0) __PYX_ERR(2, 1497, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_11___subprocess_run.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_11___subprocess_run = &__pyx_type_6uvloop_4loop___pyx_scope_struct_11___subprocess_run;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe) < 0) __PYX_ERR(2, 1588, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe = &__pyx_type_6uvloop_4loop___pyx_scope_struct_12_connect_read_pipe;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe) < 0) __PYX_ERR(2, 1608, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe = &__pyx_type_6uvloop_4loop___pyx_scope_struct_13_connect_write_pipe;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint) < 0) __PYX_ERR(2, 1693, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint = &__pyx_type_6uvloop_4loop___pyx_scope_struct_14_create_datagram_endpoint;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_15_genexpr) < 0) __PYX_ERR(2, 1714, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_15_genexpr.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_15_genexpr = &__pyx_type_6uvloop_4loop___pyx_scope_struct_15_genexpr;
  if (PyType_Ready(&__pyx_type_6uvloop_4loop___pyx_scope_struct_16_wait_closed) < 0) __PYX_ERR(20, 36, __pyx_L1_error)
  __pyx_type_6uvloop_4loop___pyx_scope_struct_16_wait_closed.tp_print = 0;
  __pyx_ptype_6uvloop_4loop___pyx_scope_struct_16_wait_closed = &__pyx_type_6uvloop_4loop___pyx_scope_struct_16_wait_closed;
  /*--- Type import code ---*/
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
  #if CYTHON_COMPILING_IN_PYPY
  sizeof(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject),
  #endif
  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(22, 9, __pyx_L1_error)
  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) __PYX_ERR(23, 8, __pyx_L1_error)
  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) __PYX_ERR(24, 15, __pyx_L1_error)
  /*--- Variable import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif

  /* "uvloop/includes/stdlib.pxi":1
 * import asyncio, asyncio.log, asyncio.base_events, \             # <<<<<<<<<<<<<<
 *        asyncio.sslproto, asyncio.coroutines
 * import collections
 */
  __pyx_t_1 = __Pyx_patch_asyncio(__Pyx_Import(__pyx_n_s_asyncio, 0, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_asyncio_log, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_asyncio_base_events, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":2
 * import asyncio, asyncio.log, asyncio.base_events, \
 *        asyncio.sslproto, asyncio.coroutines             # <<<<<<<<<<<<<<
 * import collections
 * import concurrent.futures
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_asyncio_sslproto, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_asyncio_coroutines, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":3
 * import asyncio, asyncio.log, asyncio.base_events, \
 *        asyncio.sslproto, asyncio.coroutines
 * import collections             # <<<<<<<<<<<<<<
 * import concurrent.futures
 * import functools
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_collections, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_1) < 0) __PYX_ERR(25, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":4
 *        asyncio.sslproto, asyncio.coroutines
 * import collections
 * import concurrent.futures             # <<<<<<<<<<<<<<
 * import functools
 * import itertools
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_concurrent_futures, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_concurrent, __pyx_t_1) < 0) __PYX_ERR(25, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":5
 * import collections
 * import concurrent.futures
 * import functools             # <<<<<<<<<<<<<<
 * import itertools
 * import os
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_functools, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_functools, __pyx_t_1) < 0) __PYX_ERR(25, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":6
 * import concurrent.futures
 * import functools
 * import itertools             # <<<<<<<<<<<<<<
 * import os
 * import signal as std_signal
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_itertools, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_itertools, __pyx_t_1) < 0) __PYX_ERR(25, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":7
 * import functools
 * import itertools
 * import os             # <<<<<<<<<<<<<<
 * import signal as std_signal
 * import socket
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(25, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":8
 * import itertools
 * import os
 * import signal as std_signal             # <<<<<<<<<<<<<<
 * import socket
 * import subprocess
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_signal, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_std_signal, __pyx_t_1) < 0) __PYX_ERR(25, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":9
 * import os
 * import signal as std_signal
 * import socket             # <<<<<<<<<<<<<<
 * import subprocess
 * import ssl
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_socket, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket, __pyx_t_1) < 0) __PYX_ERR(25, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":10
 * import signal as std_signal
 * import socket
 * import subprocess             # <<<<<<<<<<<<<<
 * import ssl
 * import sys
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_subprocess, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_subprocess, __pyx_t_1) < 0) __PYX_ERR(25, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":11
 * import socket
 * import subprocess
 * import ssl             # <<<<<<<<<<<<<<
 * import sys
 * import threading
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_ssl, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ssl, __pyx_t_1) < 0) __PYX_ERR(25, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":12
 * import subprocess
 * import ssl
 * import sys             # <<<<<<<<<<<<<<
 * import threading
 * import time
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(25, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":13
 * import ssl
 * import sys
 * import threading             # <<<<<<<<<<<<<<
 * import time
 * import warnings
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_threading, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_1) < 0) __PYX_ERR(25, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":14
 * import sys
 * import threading
 * import time             # <<<<<<<<<<<<<<
 * import warnings
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(25, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":15
 * import threading
 * import time
 * import warnings             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(25, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":18
 * 
 * 
 * cdef aio_CancelledError = asyncio.CancelledError             # <<<<<<<<<<<<<<
 * cdef aio_TimeoutError = asyncio.TimeoutError
 * cdef aio_Future = asyncio.Future
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_CancelledError); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_CancelledError);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_CancelledError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":19
 * 
 * cdef aio_CancelledError = asyncio.CancelledError
 * cdef aio_TimeoutError = asyncio.TimeoutError             # <<<<<<<<<<<<<<
 * cdef aio_Future = asyncio.Future
 * cdef aio_Task = asyncio.Task
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_TimeoutError); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_TimeoutError);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_TimeoutError, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":20
 * cdef aio_CancelledError = asyncio.CancelledError
 * cdef aio_TimeoutError = asyncio.TimeoutError
 * cdef aio_Future = asyncio.Future             # <<<<<<<<<<<<<<
 * cdef aio_Task = asyncio.Task
 * cdef aio_ensure_future = asyncio.ensure_future
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Future); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_Future);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_Future, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":21
 * cdef aio_TimeoutError = asyncio.TimeoutError
 * cdef aio_Future = asyncio.Future
 * cdef aio_Task = asyncio.Task             # <<<<<<<<<<<<<<
 * cdef aio_ensure_future = asyncio.ensure_future
 * cdef aio_gather = asyncio.gather
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Task); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_Task);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_Task, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":22
 * cdef aio_Future = asyncio.Future
 * cdef aio_Task = asyncio.Task
 * cdef aio_ensure_future = asyncio.ensure_future             # <<<<<<<<<<<<<<
 * cdef aio_gather = asyncio.gather
 * cdef aio_wait = asyncio.wait
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ensure_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_ensure_future);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_ensure_future, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":23
 * cdef aio_Task = asyncio.Task
 * cdef aio_ensure_future = asyncio.ensure_future
 * cdef aio_gather = asyncio.gather             # <<<<<<<<<<<<<<
 * cdef aio_wait = asyncio.wait
 * cdef aio_logger = asyncio.log.logger
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_gather); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_gather);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_gather, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":24
 * cdef aio_ensure_future = asyncio.ensure_future
 * cdef aio_gather = asyncio.gather
 * cdef aio_wait = asyncio.wait             # <<<<<<<<<<<<<<
 * cdef aio_logger = asyncio.log.logger
 * cdef aio_coroutine = asyncio.coroutine
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_wait); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_wait);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_wait, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":25
 * cdef aio_gather = asyncio.gather
 * cdef aio_wait = asyncio.wait
 * cdef aio_logger = asyncio.log.logger             # <<<<<<<<<<<<<<
 * cdef aio_coroutine = asyncio.coroutine
 * cdef aio__check_resolved_address = asyncio.base_events._check_resolved_address
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_logger);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_logger, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":26
 * cdef aio_wait = asyncio.wait
 * cdef aio_logger = asyncio.log.logger
 * cdef aio_coroutine = asyncio.coroutine             # <<<<<<<<<<<<<<
 * cdef aio__check_resolved_address = asyncio.base_events._check_resolved_address
 * cdef aio_iscoroutine = asyncio.iscoroutine
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_coroutine); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_coroutine, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":27
 * cdef aio_logger = asyncio.log.logger
 * cdef aio_coroutine = asyncio.coroutine
 * cdef aio__check_resolved_address = asyncio.base_events._check_resolved_address             # <<<<<<<<<<<<<<
 * cdef aio_iscoroutine = asyncio.iscoroutine
 * cdef aio_iscoroutinefunction = asyncio.iscoroutinefunction
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_base_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_check_resolved_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio__check_resolved_address);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio__check_resolved_address, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":28
 * cdef aio_coroutine = asyncio.coroutine
 * cdef aio__check_resolved_address = asyncio.base_events._check_resolved_address
 * cdef aio_iscoroutine = asyncio.iscoroutine             # <<<<<<<<<<<<<<
 * cdef aio_iscoroutinefunction = asyncio.iscoroutinefunction
 * cdef aio_wrap_future = asyncio.wrap_future
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_iscoroutine); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_iscoroutine);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_iscoroutine, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":29
 * cdef aio__check_resolved_address = asyncio.base_events._check_resolved_address
 * cdef aio_iscoroutine = asyncio.iscoroutine
 * cdef aio_iscoroutinefunction = asyncio.iscoroutinefunction             # <<<<<<<<<<<<<<
 * cdef aio_wrap_future = asyncio.wrap_future
 * cdef aio_BaseProtocol = asyncio.BaseProtocol
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_iscoroutinefunction);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_iscoroutinefunction, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":30
 * cdef aio_iscoroutine = asyncio.iscoroutine
 * cdef aio_iscoroutinefunction = asyncio.iscoroutinefunction
 * cdef aio_wrap_future = asyncio.wrap_future             # <<<<<<<<<<<<<<
 * cdef aio_BaseProtocol = asyncio.BaseProtocol
 * cdef aio_Protocol = asyncio.Protocol
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_wrap_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_wrap_future);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_wrap_future, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":31
 * cdef aio_iscoroutinefunction = asyncio.iscoroutinefunction
 * cdef aio_wrap_future = asyncio.wrap_future
 * cdef aio_BaseProtocol = asyncio.BaseProtocol             # <<<<<<<<<<<<<<
 * cdef aio_Protocol = asyncio.Protocol
 * cdef aio_SSLProtocol = asyncio.sslproto.SSLProtocol
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_BaseProtocol); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_BaseProtocol);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_BaseProtocol, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":32
 * cdef aio_wrap_future = asyncio.wrap_future
 * cdef aio_BaseProtocol = asyncio.BaseProtocol
 * cdef aio_Protocol = asyncio.Protocol             # <<<<<<<<<<<<<<
 * cdef aio_SSLProtocol = asyncio.sslproto.SSLProtocol
 * cdef aio_debug_wrapper = asyncio.coroutines.debug_wrapper
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Protocol); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_Protocol);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_Protocol, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":33
 * cdef aio_BaseProtocol = asyncio.BaseProtocol
 * cdef aio_Protocol = asyncio.Protocol
 * cdef aio_SSLProtocol = asyncio.sslproto.SSLProtocol             # <<<<<<<<<<<<<<
 * cdef aio_debug_wrapper = asyncio.coroutines.debug_wrapper
 * 
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sslproto); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SSLProtocol); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_SSLProtocol);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_SSLProtocol, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":34
 * cdef aio_Protocol = asyncio.Protocol
 * cdef aio_SSLProtocol = asyncio.sslproto.SSLProtocol
 * cdef aio_debug_wrapper = asyncio.coroutines.debug_wrapper             # <<<<<<<<<<<<<<
 * 
 * cdef col_deque = collections.deque
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_coroutines); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug_wrapper); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_aio_debug_wrapper);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_aio_debug_wrapper, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":36
 * cdef aio_debug_wrapper = asyncio.coroutines.debug_wrapper
 * 
 * cdef col_deque = collections.deque             # <<<<<<<<<<<<<<
 * cdef col_Iterable = collections.Iterable
 * cdef col_Counter = collections.Counter
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_deque); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_col_deque);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_col_deque, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":37
 * 
 * cdef col_deque = collections.deque
 * cdef col_Iterable = collections.Iterable             # <<<<<<<<<<<<<<
 * cdef col_Counter = collections.Counter
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_col_Iterable);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_col_Iterable, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":38
 * cdef col_deque = collections.deque
 * cdef col_Iterable = collections.Iterable
 * cdef col_Counter = collections.Counter             # <<<<<<<<<<<<<<
 * 
 * cdef cc_ThreadPoolExecutor = concurrent.futures.ThreadPoolExecutor
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_col_Counter);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_col_Counter, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":40
 * cdef col_Counter = collections.Counter
 * 
 * cdef cc_ThreadPoolExecutor = concurrent.futures.ThreadPoolExecutor             # <<<<<<<<<<<<<<
 * 
 * cdef ft_partial = functools.partial
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_concurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_futures); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ThreadPoolExecutor); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_cc_ThreadPoolExecutor);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_cc_ThreadPoolExecutor, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":42
 * cdef cc_ThreadPoolExecutor = concurrent.futures.ThreadPoolExecutor
 * 
 * cdef ft_partial = functools.partial             # <<<<<<<<<<<<<<
 * 
 * cdef iter_chain = itertools.chain
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_functools); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_partial); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_ft_partial);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_ft_partial, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":44
 * cdef ft_partial = functools.partial
 * 
 * cdef iter_chain = itertools.chain             # <<<<<<<<<<<<<<
 * 
 * cdef int has_AF_INET6 = hasattr(socket, 'AF_INET6')
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_itertools); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_chain); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_iter_chain);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_iter_chain, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":46
 * cdef iter_chain = itertools.chain
 * 
 * cdef int has_AF_INET6 = hasattr(socket, 'AF_INET6')             # <<<<<<<<<<<<<<
 * cdef int has_SO_REUSEPORT = hasattr(socket, 'SO_REUSEPORT')
 * cdef int has_IPPROTO_IPV6 = hasattr(socket, 'IPPROTO_IPV6')
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_HasAttr(__pyx_t_1, __pyx_n_u_AF_INET6); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(25, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_has_AF_INET6 = __pyx_t_3;

  /* "uvloop/includes/stdlib.pxi":47
 * 
 * cdef int has_AF_INET6 = hasattr(socket, 'AF_INET6')
 * cdef int has_SO_REUSEPORT = hasattr(socket, 'SO_REUSEPORT')             # <<<<<<<<<<<<<<
 * cdef int has_IPPROTO_IPV6 = hasattr(socket, 'IPPROTO_IPV6')
 * cdef int SO_REUSEPORT = getattr(socket, 'SO_REUSEPORT', 0)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_HasAttr(__pyx_t_1, __pyx_n_u_SO_REUSEPORT); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_has_SO_REUSEPORT = __pyx_t_3;

  /* "uvloop/includes/stdlib.pxi":48
 * cdef int has_AF_INET6 = hasattr(socket, 'AF_INET6')
 * cdef int has_SO_REUSEPORT = hasattr(socket, 'SO_REUSEPORT')
 * cdef int has_IPPROTO_IPV6 = hasattr(socket, 'IPPROTO_IPV6')             # <<<<<<<<<<<<<<
 * cdef int SO_REUSEPORT = getattr(socket, 'SO_REUSEPORT', 0)
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_HasAttr(__pyx_t_1, __pyx_n_u_IPPROTO_IPV6); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_has_IPPROTO_IPV6 = __pyx_t_3;

  /* "uvloop/includes/stdlib.pxi":49
 * cdef int has_SO_REUSEPORT = hasattr(socket, 'SO_REUSEPORT')
 * cdef int has_IPPROTO_IPV6 = hasattr(socket, 'IPPROTO_IPV6')
 * cdef int SO_REUSEPORT = getattr(socket, 'SO_REUSEPORT', 0)             # <<<<<<<<<<<<<<
 * 
 * cdef socket_gaierror = socket.gaierror
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_SO_REUSEPORT, __pyx_int_0); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_SO_REUSEPORT = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":51
 * cdef int SO_REUSEPORT = getattr(socket, 'SO_REUSEPORT', 0)
 * 
 * cdef socket_gaierror = socket.gaierror             # <<<<<<<<<<<<<<
 * cdef socket_error = socket.error
 * cdef socket_timeout = socket.timeout
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_gaierror); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_socket_gaierror);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_socket_gaierror, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":52
 * 
 * cdef socket_gaierror = socket.gaierror
 * cdef socket_error = socket.error             # <<<<<<<<<<<<<<
 * cdef socket_timeout = socket.timeout
 * cdef socket_socket = socket.socket
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_socket_error);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_socket_error, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":53
 * cdef socket_gaierror = socket.gaierror
 * cdef socket_error = socket.error
 * cdef socket_timeout = socket.timeout             # <<<<<<<<<<<<<<
 * cdef socket_socket = socket.socket
 * 
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_socket_timeout);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_socket_timeout, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":54
 * cdef socket_error = socket.error
 * cdef socket_timeout = socket.timeout
 * cdef socket_socket = socket.socket             # <<<<<<<<<<<<<<
 * 
 * cdef int socket_EAI_ADDRFAMILY = getattr(socket, 'EAI_ADDRFAMILY', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_socket_socket);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_socket_socket, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":56
 * cdef socket_socket = socket.socket
 * 
 * cdef int socket_EAI_ADDRFAMILY = getattr(socket, 'EAI_ADDRFAMILY', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_AGAIN      = getattr(socket, 'EAI_AGAIN', -1)
 * cdef int socket_EAI_BADFLAGS   = getattr(socket, 'EAI_BADFLAGS', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_ADDRFAMILY, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_ADDRFAMILY = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":57
 * 
 * cdef int socket_EAI_ADDRFAMILY = getattr(socket, 'EAI_ADDRFAMILY', -1)
 * cdef int socket_EAI_AGAIN      = getattr(socket, 'EAI_AGAIN', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_BADFLAGS   = getattr(socket, 'EAI_BADFLAGS', -1)
 * cdef int socket_EAI_BADHINTS   = getattr(socket, 'EAI_BADHINTS', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_AGAIN, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_AGAIN = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":58
 * cdef int socket_EAI_ADDRFAMILY = getattr(socket, 'EAI_ADDRFAMILY', -1)
 * cdef int socket_EAI_AGAIN      = getattr(socket, 'EAI_AGAIN', -1)
 * cdef int socket_EAI_BADFLAGS   = getattr(socket, 'EAI_BADFLAGS', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_BADHINTS   = getattr(socket, 'EAI_BADHINTS', -1)
 * cdef int socket_EAI_CANCELED   = getattr(socket, 'EAI_CANCELED', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_BADFLAGS, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_BADFLAGS = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":59
 * cdef int socket_EAI_AGAIN      = getattr(socket, 'EAI_AGAIN', -1)
 * cdef int socket_EAI_BADFLAGS   = getattr(socket, 'EAI_BADFLAGS', -1)
 * cdef int socket_EAI_BADHINTS   = getattr(socket, 'EAI_BADHINTS', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_CANCELED   = getattr(socket, 'EAI_CANCELED', -1)
 * cdef int socket_EAI_FAIL       = getattr(socket, 'EAI_FAIL', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_BADHINTS, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_BADHINTS = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":60
 * cdef int socket_EAI_BADFLAGS   = getattr(socket, 'EAI_BADFLAGS', -1)
 * cdef int socket_EAI_BADHINTS   = getattr(socket, 'EAI_BADHINTS', -1)
 * cdef int socket_EAI_CANCELED   = getattr(socket, 'EAI_CANCELED', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_FAIL       = getattr(socket, 'EAI_FAIL', -1)
 * cdef int socket_EAI_FAMILY     = getattr(socket, 'EAI_FAMILY', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_CANCELED, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_CANCELED = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":61
 * cdef int socket_EAI_BADHINTS   = getattr(socket, 'EAI_BADHINTS', -1)
 * cdef int socket_EAI_CANCELED   = getattr(socket, 'EAI_CANCELED', -1)
 * cdef int socket_EAI_FAIL       = getattr(socket, 'EAI_FAIL', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_FAMILY     = getattr(socket, 'EAI_FAMILY', -1)
 * cdef int socket_EAI_MEMORY     = getattr(socket, 'EAI_MEMORY', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_FAIL, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_FAIL = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":62
 * cdef int socket_EAI_CANCELED   = getattr(socket, 'EAI_CANCELED', -1)
 * cdef int socket_EAI_FAIL       = getattr(socket, 'EAI_FAIL', -1)
 * cdef int socket_EAI_FAMILY     = getattr(socket, 'EAI_FAMILY', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_MEMORY     = getattr(socket, 'EAI_MEMORY', -1)
 * cdef int socket_EAI_NODATA     = getattr(socket, 'EAI_NODATA', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_FAMILY, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_FAMILY = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":63
 * cdef int socket_EAI_FAIL       = getattr(socket, 'EAI_FAIL', -1)
 * cdef int socket_EAI_FAMILY     = getattr(socket, 'EAI_FAMILY', -1)
 * cdef int socket_EAI_MEMORY     = getattr(socket, 'EAI_MEMORY', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_NODATA     = getattr(socket, 'EAI_NODATA', -1)
 * cdef int socket_EAI_NONAME     = getattr(socket, 'EAI_NONAME', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_MEMORY, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_MEMORY = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":64
 * cdef int socket_EAI_FAMILY     = getattr(socket, 'EAI_FAMILY', -1)
 * cdef int socket_EAI_MEMORY     = getattr(socket, 'EAI_MEMORY', -1)
 * cdef int socket_EAI_NODATA     = getattr(socket, 'EAI_NODATA', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_NONAME     = getattr(socket, 'EAI_NONAME', -1)
 * cdef int socket_EAI_OVERFLOW   = getattr(socket, 'EAI_OVERFLOW', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_NODATA, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_NODATA = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":65
 * cdef int socket_EAI_MEMORY     = getattr(socket, 'EAI_MEMORY', -1)
 * cdef int socket_EAI_NODATA     = getattr(socket, 'EAI_NODATA', -1)
 * cdef int socket_EAI_NONAME     = getattr(socket, 'EAI_NONAME', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_OVERFLOW   = getattr(socket, 'EAI_OVERFLOW', -1)
 * cdef int socket_EAI_PROTOCOL   = getattr(socket, 'EAI_PROTOCOL', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_NONAME, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_NONAME = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":66
 * cdef int socket_EAI_NODATA     = getattr(socket, 'EAI_NODATA', -1)
 * cdef int socket_EAI_NONAME     = getattr(socket, 'EAI_NONAME', -1)
 * cdef int socket_EAI_OVERFLOW   = getattr(socket, 'EAI_OVERFLOW', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_PROTOCOL   = getattr(socket, 'EAI_PROTOCOL', -1)
 * cdef int socket_EAI_SERVICE    = getattr(socket, 'EAI_SERVICE', -1)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_OVERFLOW, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_OVERFLOW = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":67
 * cdef int socket_EAI_NONAME     = getattr(socket, 'EAI_NONAME', -1)
 * cdef int socket_EAI_OVERFLOW   = getattr(socket, 'EAI_OVERFLOW', -1)
 * cdef int socket_EAI_PROTOCOL   = getattr(socket, 'EAI_PROTOCOL', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_SERVICE    = getattr(socket, 'EAI_SERVICE', -1)
 * cdef int socket_EAI_SOCKTYPE   = getattr(socket, 'EAI_SOCKTYPE', -1)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_PROTOCOL, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_PROTOCOL = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":68
 * cdef int socket_EAI_OVERFLOW   = getattr(socket, 'EAI_OVERFLOW', -1)
 * cdef int socket_EAI_PROTOCOL   = getattr(socket, 'EAI_PROTOCOL', -1)
 * cdef int socket_EAI_SERVICE    = getattr(socket, 'EAI_SERVICE', -1)             # <<<<<<<<<<<<<<
 * cdef int socket_EAI_SOCKTYPE   = getattr(socket, 'EAI_SOCKTYPE', -1)
 * 
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_2, __pyx_n_u_EAI_SERVICE, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_SERVICE = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":69
 * cdef int socket_EAI_PROTOCOL   = getattr(socket, 'EAI_PROTOCOL', -1)
 * cdef int socket_EAI_SERVICE    = getattr(socket, 'EAI_SERVICE', -1)
 * cdef int socket_EAI_SOCKTYPE   = getattr(socket, 'EAI_SOCKTYPE', -1)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_u_EAI_SOCKTYPE, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_6uvloop_4loop_socket_EAI_SOCKTYPE = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":72
 * 
 * 
 * cdef str os_name = os.name             # <<<<<<<<<<<<<<
 * cdef os_environ = os.environ
 * cdef os_dup = os.dup
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(25, 72, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_name);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_name, ((PyObject*)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":73
 * 
 * cdef str os_name = os.name
 * cdef os_environ = os.environ             # <<<<<<<<<<<<<<
 * cdef os_dup = os.dup
 * cdef os_set_inheritable = os.set_inheritable
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_environ); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_environ);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_environ, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":74
 * cdef str os_name = os.name
 * cdef os_environ = os.environ
 * cdef os_dup = os.dup             # <<<<<<<<<<<<<<
 * cdef os_set_inheritable = os.set_inheritable
 * cdef os_get_inheritable = os.get_inheritable
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dup); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_dup);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_dup, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":75
 * cdef os_environ = os.environ
 * cdef os_dup = os.dup
 * cdef os_set_inheritable = os.set_inheritable             # <<<<<<<<<<<<<<
 * cdef os_get_inheritable = os.get_inheritable
 * cdef os_close = os.close
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_set_inheritable); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_set_inheritable);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_set_inheritable, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":76
 * cdef os_dup = os.dup
 * cdef os_set_inheritable = os.set_inheritable
 * cdef os_get_inheritable = os.get_inheritable             # <<<<<<<<<<<<<<
 * cdef os_close = os.close
 * cdef os_open = os.open
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_inheritable); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_get_inheritable);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_get_inheritable, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":77
 * cdef os_set_inheritable = os.set_inheritable
 * cdef os_get_inheritable = os.get_inheritable
 * cdef os_close = os.close             # <<<<<<<<<<<<<<
 * cdef os_open = os.open
 * cdef os_devnull = os.devnull
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_close);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_close, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":78
 * cdef os_get_inheritable = os.get_inheritable
 * cdef os_close = os.close
 * cdef os_open = os.open             # <<<<<<<<<<<<<<
 * cdef os_devnull = os.devnull
 * cdef os_O_RDWR = os.O_RDWR
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_open);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_open, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":79
 * cdef os_close = os.close
 * cdef os_open = os.open
 * cdef os_devnull = os.devnull             # <<<<<<<<<<<<<<
 * cdef os_O_RDWR = os.O_RDWR
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_devnull); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_devnull);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_devnull, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":80
 * cdef os_open = os.open
 * cdef os_devnull = os.devnull
 * cdef os_O_RDWR = os.O_RDWR             # <<<<<<<<<<<<<<
 * 
 * cdef sys_ignore_environment = sys.flags.ignore_environment
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_O_RDWR); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_os_O_RDWR);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_os_O_RDWR, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":82
 * cdef os_O_RDWR = os.O_RDWR
 * 
 * cdef sys_ignore_environment = sys.flags.ignore_environment             # <<<<<<<<<<<<<<
 * cdef sys_exc_info = sys.exc_info
 * cdef sys_set_coroutine_wrapper = sys.set_coroutine_wrapper
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ignore_environment); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_sys_ignore_environment);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_sys_ignore_environment, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":83
 * 
 * cdef sys_ignore_environment = sys.flags.ignore_environment
 * cdef sys_exc_info = sys.exc_info             # <<<<<<<<<<<<<<
 * cdef sys_set_coroutine_wrapper = sys.set_coroutine_wrapper
 * cdef sys_get_coroutine_wrapper = sys.get_coroutine_wrapper
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_sys_exc_info);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_sys_exc_info, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":84
 * cdef sys_ignore_environment = sys.flags.ignore_environment
 * cdef sys_exc_info = sys.exc_info
 * cdef sys_set_coroutine_wrapper = sys.set_coroutine_wrapper             # <<<<<<<<<<<<<<
 * cdef sys_get_coroutine_wrapper = sys.get_coroutine_wrapper
 * 
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_coroutine_wrapper); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_sys_set_coroutine_wrapper, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":85
 * cdef sys_exc_info = sys.exc_info
 * cdef sys_set_coroutine_wrapper = sys.set_coroutine_wrapper
 * cdef sys_get_coroutine_wrapper = sys.get_coroutine_wrapper             # <<<<<<<<<<<<<<
 * 
 * cdef ssl_SSLContext = ssl.SSLContext
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_coroutine_wrapper); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_sys_get_coroutine_wrapper, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "uvloop/includes/stdlib.pxi":87
 * cdef sys_get_coroutine_wrapper = sys.get_coroutine_wrapper
 * 
 * cdef ssl_SSLContext = ssl.SSLContext             # <<<<<<<<<<<<<<
 * 
 * cdef long MAIN_THREAD_ID = <long>threading.main_thread().ident
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ssl); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SSLContext); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_ssl_SSLContext);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_ssl_SSLContext, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":89
 * cdef ssl_SSLContext = ssl.SSLContext
 * 
 * cdef long MAIN_THREAD_ID = <long>threading.main_thread().ident             # <<<<<<<<<<<<<<
 * 
 * cdef int subprocess_PIPE = subprocess.PIPE
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_main_thread); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 89, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ident); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_long(__pyx_t_5); if (unlikely((__pyx_t_6 == (long)-1) && PyErr_Occurred())) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_6uvloop_4loop_MAIN_THREAD_ID = ((long)__pyx_t_6);

  /* "uvloop/includes/stdlib.pxi":91
 * cdef long MAIN_THREAD_ID = <long>threading.main_thread().ident
 * 
 * cdef int subprocess_PIPE = subprocess.PIPE             # <<<<<<<<<<<<<<
 * cdef int subprocess_STDOUT = subprocess.STDOUT
 * cdef int subprocess_DEVNULL = subprocess.DEVNULL
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_subprocess); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_PIPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_subprocess_PIPE = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":92
 * 
 * cdef int subprocess_PIPE = subprocess.PIPE
 * cdef int subprocess_STDOUT = subprocess.STDOUT             # <<<<<<<<<<<<<<
 * cdef int subprocess_DEVNULL = subprocess.DEVNULL
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_subprocess); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_STDOUT); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_6uvloop_4loop_subprocess_STDOUT = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":93
 * cdef int subprocess_PIPE = subprocess.PIPE
 * cdef int subprocess_STDOUT = subprocess.STDOUT
 * cdef int subprocess_DEVNULL = subprocess.DEVNULL             # <<<<<<<<<<<<<<
 * 
 * cdef int signal_NSIG = std_signal.NSIG
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_subprocess); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_DEVNULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6uvloop_4loop_subprocess_DEVNULL = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":95
 * cdef int subprocess_DEVNULL = subprocess.DEVNULL
 * 
 * cdef int signal_NSIG = std_signal.NSIG             # <<<<<<<<<<<<<<
 * 
 * cdef time_sleep = time.sleep
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_std_signal); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NSIG); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_6uvloop_4loop_signal_NSIG = __pyx_t_4;

  /* "uvloop/includes/stdlib.pxi":97
 * cdef int signal_NSIG = std_signal.NSIG
 * 
 * cdef time_sleep = time.sleep             # <<<<<<<<<<<<<<
 * 
 * cdef warnings_warn = warnings.warn
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sleep); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_time_sleep);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_time_sleep, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "uvloop/includes/stdlib.pxi":99
 * cdef time_sleep = time.sleep
 * 
 * cdef warnings_warn = warnings.warn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warn); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop_warnings_warn);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop_warnings_warn, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "uvloop/includes/stdlib.pxi":104
 * # Cython doesn't clean-up imported objects properly in Py3 mode,
 * # so we delete refs to all modules manually (except sys)
 * del asyncio, concurrent, collections             # <<<<<<<<<<<<<<
 * del functools, itertools, socket, os, threading, std_signal, subprocess, ssl
 * del time, warnings
 */
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_asyncio) < 0) __PYX_ERR(25, 104, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_concurrent) < 0) __PYX_ERR(25, 104, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_collections) < 0) __PYX_ERR(25, 104, __pyx_L1_error)

  /* "uvloop/includes/stdlib.pxi":105
 * # so we delete refs to all modules manually (except sys)
 * del asyncio, concurrent, collections
 * del functools, itertools, socket, os, threading, std_signal, subprocess, ssl             # <<<<<<<<<<<<<<
 * del time, warnings
 */
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_functools) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_itertools) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_socket) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_os) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_threading) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_std_signal) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_subprocess) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_ssl) < 0) __PYX_ERR(25, 105, __pyx_L1_error)

  /* "uvloop/includes/stdlib.pxi":106
 * del asyncio, concurrent, collections
 * del functools, itertools, socket, os, threading, std_signal, subprocess, ssl
 * del time, warnings             # <<<<<<<<<<<<<<
 */
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_time) < 0) __PYX_ERR(25, 106, __pyx_L1_error)
  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_warnings) < 0) __PYX_ERR(25, 106, __pyx_L1_error)

  /* "uvloop/loop.pyx":35
 * 
 * 
 * cdef Loop __main_loop__ = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6uvloop_4loop___main_loop__));
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop___main_loop__, ((struct __pyx_obj_6uvloop_4loop_Loop *)Py_None));
  __Pyx_GIVEREF(Py_None);

  /* "uvloop/loop.pyx":958
 * 
 *     @aio_coroutine
 *     async def getnameinfo(self, sockaddr, int flags=0):             # <<<<<<<<<<<<<<
 *         cdef:
 *             AddrInfo ai_cnt
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_getnameinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 957, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_getnameinfo, __pyx_t_5) < 0) __PYX_ERR(2, 958, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1015
 *     async def create_server(self, protocol_factory, host=None, port=None,
 *                             *,
 *                             int family=uv.AF_UNSPEC,             # <<<<<<<<<<<<<<
 *                             int flags=uv.AI_PASSIVE,
 *                             sock=None,
 */
  __pyx_k__29 = AF_UNSPEC;

  /* "uvloop/loop.pyx":1016
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 *                             int flags=uv.AI_PASSIVE,             # <<<<<<<<<<<<<<
 *                             sock=None,
 *                             int backlog=100,
 */
  __pyx_k__30 = AI_PASSIVE;

  /* "uvloop/loop.pyx":1013
 * 
 *     @aio_coroutine
 *     async def create_server(self, protocol_factory, host=None, port=None,             # <<<<<<<<<<<<<<
 *                             *,
 *                             int family=uv.AF_UNSPEC,
 */
  __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_create_server); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_8 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1012, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1012, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1012, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_create_server, __pyx_t_5) < 0) __PYX_ERR(2, 1013, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1105
 * 
 *     @aio_coroutine
 *     async def create_connection(self, protocol_factory, host=None, port=None, *,             # <<<<<<<<<<<<<<
 *                                 ssl=None, family=0, proto=0, flags=0, sock=None,
 *                                 local_addr=None, server_hostname=None):
 */
  __pyx_t_8 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_create_connection); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_7 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_create_connection, __pyx_t_5) < 0) __PYX_ERR(2, 1105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1245
 * 
 *     @aio_coroutine
 *     async def create_unix_server(self, protocol_factory, str path=None,             # <<<<<<<<<<<<<<
 *                                  *, backlog=100, sock=None, ssl=None):
 * 
 */
  __pyx_t_7 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_create_unix_server); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_1 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1244, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_create_unix_server, __pyx_t_5) < 0) __PYX_ERR(2, 1245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1296
 * 
 *     @aio_coroutine
 *     async def create_unix_connection(self, protocol_factory, path, *,             # <<<<<<<<<<<<<<
 *                                      ssl=None, sock=None,
 *                                      server_hostname=None):
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_create_unix_connection); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1295, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_create_unix_connection, __pyx_t_5) < 0) __PYX_ERR(2, 1296, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1498
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,
 *                                stdin=subprocess_PIPE,             # <<<<<<<<<<<<<<
 *                                stdout=subprocess_PIPE,
 *                                stderr=subprocess_PIPE,
 */
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k__64 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":1499
 *     async def __subprocess_run(self, protocol_factory, args,
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,             # <<<<<<<<<<<<<<
 *                                stderr=subprocess_PIPE,
 *                                universal_newlines=False,
 */
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k__65 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":1500
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 *                                stderr=subprocess_PIPE,             # <<<<<<<<<<<<<<
 *                                universal_newlines=False,
 *                                shell=True,
 */
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_6uvloop_4loop_subprocess_PIPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k__66 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "uvloop/loop.pyx":1497
 * 
 *     @aio_coroutine
 *     async def __subprocess_run(self, protocol_factory, args,             # <<<<<<<<<<<<<<
 *                                stdin=subprocess_PIPE,
 *                                stdout=subprocess_PIPE,
 */
  __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_subprocess_run); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_8 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1496, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_subprocess_run, __pyx_t_5) < 0) __PYX_ERR(2, 1497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1588
 * 
 *     @aio_coroutine
 *     async def connect_read_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             ReadUnixTransport transp
 */
  __pyx_t_8 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_connect_read_pipe); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_7 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1587, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_connect_read_pipe, __pyx_t_5) < 0) __PYX_ERR(2, 1588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1608
 * 
 *     @aio_coroutine
 *     async def connect_write_pipe(self, proto_factory, pipe):             # <<<<<<<<<<<<<<
 *         cdef:
 *             WriteUnixTransport transp
 */
  __pyx_t_7 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_connect_write_pipe); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_1 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_connect_write_pipe, __pyx_t_5) < 0) __PYX_ERR(2, 1608, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/loop.pyx":1693
 * 
 *     @aio_coroutine
 *     async def create_datagram_endpoint(self, protocol_factory,             # <<<<<<<<<<<<<<
 *                                        local_addr=None, remote_addr=None, *,
 *                                        family=0, proto=0, flags=0,
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Loop, __pyx_n_s_create_datagram_endpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_2 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1692, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Loop->tp_dict, __pyx_n_s_create_datagram_endpoint, __pyx_t_5) < 0) __PYX_ERR(2, 1693, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Loop);

  /* "uvloop/handles/handle.pyx":1
 * cdef __NOHANDLE__ = object()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6uvloop_4loop___NOHANDLE__);
  __Pyx_DECREF_SET(__pyx_v_6uvloop_4loop___NOHANDLE__, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "uvloop/handles/process.pyx":206
 * 
 * 
 * _CALL_PIPE_DATA_RECEIVED = 0             # <<<<<<<<<<<<<<
 * _CALL_PIPE_CONNECTION_LOST = 1
 * _CALL_PROCESS_EXITED = 2
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CALL_PIPE_DATA_RECEIVED, __pyx_int_0) < 0) __PYX_ERR(6, 206, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":207
 * 
 * _CALL_PIPE_DATA_RECEIVED = 0
 * _CALL_PIPE_CONNECTION_LOST = 1             # <<<<<<<<<<<<<<
 * _CALL_PROCESS_EXITED = 2
 * _CALL_CONNECTION_LOST = 3
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CALL_PIPE_CONNECTION_LOST, __pyx_int_1) < 0) __PYX_ERR(6, 207, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":208
 * _CALL_PIPE_DATA_RECEIVED = 0
 * _CALL_PIPE_CONNECTION_LOST = 1
 * _CALL_PROCESS_EXITED = 2             # <<<<<<<<<<<<<<
 * _CALL_CONNECTION_LOST = 3
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CALL_PROCESS_EXITED, __pyx_int_2) < 0) __PYX_ERR(6, 208, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":209
 * _CALL_PIPE_CONNECTION_LOST = 1
 * _CALL_PROCESS_EXITED = 2
 * _CALL_CONNECTION_LOST = 3             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CALL_CONNECTION_LOST, __pyx_int_3) < 0) __PYX_ERR(6, 209, __pyx_L1_error)

  /* "uvloop/handles/process.pyx":523
 * 
 * 
 * class WriteSubprocessPipeProto(aio_BaseProtocol):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, proc, fd):
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_BaseProtocol);
  __Pyx_GIVEREF(__pyx_v_6uvloop_4loop_aio_BaseProtocol);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_6uvloop_4loop_aio_BaseProtocol);
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_WriteSubprocessPipeProto, __pyx_n_s_WriteSubprocessPipeProto, (PyObject *) NULL, __pyx_n_s_uvloop_loop, (PyObject *) NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "uvloop/handles/process.pyx":525
 * class WriteSubprocessPipeProto(aio_BaseProtocol):
 * 
 *     def __init__(self, proc, fd):             # <<<<<<<<<<<<<<
 *         IF DEBUG:
 *             if type(proc) is not UVProcessTransport:
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_1__init__, 0, __pyx_n_s_WriteSubprocessPipeProto___init, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__125)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(6, 525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":536
 *         self.disconnected = False
 * 
 *     def connection_made(self, transport):             # <<<<<<<<<<<<<<
 *         self.pipe = transport
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_3connection_made, 0, __pyx_n_s_WriteSubprocessPipeProto_connect, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_connection_made, __pyx_t_1) < 0) __PYX_ERR(6, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":539
 *         self.pipe = transport
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return ('<%s fd=%s pipe=%r>'
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_5__repr__, 0, __pyx_n_s_WriteSubprocessPipeProto___repr, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_repr, __pyx_t_1) < 0) __PYX_ERR(6, 539, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":543
 *                 % (self.__class__.__name__, self.fd, self.pipe))
 * 
 *     def connection_lost(self, exc):             # <<<<<<<<<<<<<<
 *         self.disconnected = True
 *         (<UVProcessTransport>self.proc)._pipe_connection_lost(self.fd, exc)
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_7connection_lost, 0, __pyx_n_s_WriteSubprocessPipeProto_connect_2, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_connection_lost, __pyx_t_1) < 0) __PYX_ERR(6, 543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":548
 *         self.proc = None
 * 
 *     def pause_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_9pause_writing, 0, __pyx_n_s_WriteSubprocessPipeProto_pause_w, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_pause_writing, __pyx_t_1) < 0) __PYX_ERR(6, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":551
 *         (<UVProcessTransport>self.proc)._protocol.pause_writing()
 * 
 *     def resume_writing(self):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._protocol.resume_writing()
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_24WriteSubprocessPipeProto_11resume_writing, 0, __pyx_n_s_WriteSubprocessPipeProto_resume, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_resume_writing, __pyx_t_1) < 0) __PYX_ERR(6, 551, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":523
 * 
 * 
 * class WriteSubprocessPipeProto(aio_BaseProtocol):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, proc, fd):
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_WriteSubprocessPipeProto, __pyx_t_5, __pyx_t_8, NULL, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WriteSubprocessPipeProto, __pyx_t_1) < 0) __PYX_ERR(6, 523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "uvloop/handles/process.pyx":555
 * 
 * 
 * class ReadSubprocessPipeProto(WriteSubprocessPipeProto,             # <<<<<<<<<<<<<<
 *                               aio_Protocol):
 * 
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_WriteSubprocessPipeProto); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "uvloop/handles/process.pyx":556
 * 
 * class ReadSubprocessPipeProto(WriteSubprocessPipeProto,
 *                               aio_Protocol):             # <<<<<<<<<<<<<<
 * 
 *     def data_received(self, data):
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_Protocol);
  __Pyx_GIVEREF(__pyx_v_6uvloop_4loop_aio_Protocol);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_6uvloop_4loop_aio_Protocol);
  __pyx_t_5 = 0;

  /* "uvloop/handles/process.pyx":555
 * 
 * 
 * class ReadSubprocessPipeProto(WriteSubprocessPipeProto,             # <<<<<<<<<<<<<<
 *                               aio_Protocol):
 * 
 */
  __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_2, __pyx_n_s_ReadSubprocessPipeProto, __pyx_n_s_ReadSubprocessPipeProto, (PyObject *) NULL, __pyx_n_s_uvloop_loop, (PyObject *) NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "uvloop/handles/process.pyx":558
 *                               aio_Protocol):
 * 
 *     def data_received(self, data):             # <<<<<<<<<<<<<<
 *         (<UVProcessTransport>self.proc)._pipe_data_received(self.fd, data)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6uvloop_4loop_23ReadSubprocessPipeProto_1data_received, 0, __pyx_n_s_ReadSubprocessPipeProto_data_rec, NULL, __pyx_n_s_uvloop_loop, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s_data_received, __pyx_t_1) < 0) __PYX_ERR(6, 558, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "uvloop/handles/process.pyx":555
 * 
 * 
 * class ReadSubprocessPipeProto(WriteSubprocessPipeProto,             # <<<<<<<<<<<<<<
 *                               aio_Protocol):
 * 
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_ReadSubprocessPipeProto, __pyx_t_2, __pyx_t_8, NULL, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReadSubprocessPipeProto, __pyx_t_1) < 0) __PYX_ERR(6, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "uvloop/server.pyx":36
 * 
 *     @aio_coroutine
 *     async def wait_closed(self):             # <<<<<<<<<<<<<<
 *         if self._servers is None or self._waiters is None:
 *             return
 */
  __pyx_t_5 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6uvloop_4loop_Server, __pyx_n_s_wait_closed); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_6uvloop_4loop_aio_coroutine);
  __pyx_t_8 = __pyx_v_6uvloop_4loop_aio_coroutine; __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 35, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6uvloop_4loop_Server->tp_dict, __pyx_n_s_wait_closed, __pyx_t_2) < 0) __PYX_ERR(20, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6uvloop_4loop_Server);

  /* "uvloop/loop.pyx":1872
 * 
 * # Install PyMem* memory allocators
 * cdef vint __mem_installed = 0             # <<<<<<<<<<<<<<
 * cdef __install_pymem():
 *     global __mem_installed
 */
  __pyx_v_6uvloop_4loop___mem_installed = 0;

  /* "uvloop/loop.pyx":1
 * # cython: language_level=3             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  if (__pyx_m) {
    if (__pyx_d) {
      __Pyx_AddTraceback("init uvloop.loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init uvloop.loop");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    length = stop - start;
    if (unlikely(length <= 0))
        return PyUnicode_FromUnicode(NULL, 0);
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = func->ob_type->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_New(1);
    if (unlikely(!args)) return NULL;
    Py_INCREF(arg);
    PyTuple_SET_ITEM(args, 0, arg);
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
#ifdef __Pyx_CyFunction_USED
    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
#else
    if (likely(PyCFunction_Check(func))) {
#endif
        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
            return __Pyx_PyObject_CallMethO(func, arg);
        }
    }
    return __Pyx__PyObject_CallOneArg(func, arg);
}
#else
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_Pack(1, arg);
    if (unlikely(!args)) return NULL;
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
#endif

/* PyObjectCallNoArg */
  #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#ifdef __Pyx_CyFunction_USED
    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
#else
    if (likely(PyCFunction_Check(func))) {
#endif
        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
            return __Pyx_PyObject_CallMethO(func, NULL);
        }
    }
    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
}
#endif

/* RaiseArgTupleInvalid */
    static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* KeywordStringCheck */
    static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* PyErrFetchRestore */
    #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}
#endif

/* RaiseException */
    #if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    __Pyx_PyThreadState_declare
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
#if PY_VERSION_HEX >= 0x03030000
    if (cause) {
#else
    if (cause && cause != Py_None) {
#endif
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#else
        PyThreadState *tstate = PyThreadState_GET();
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* ExtTypeTest */
      static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(PyObject_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

/* WriteUnraisableException */
      static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
                                  int full_traceback, CYTHON_UNUSED int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
#ifdef _MSC_VER
    else state = (PyGILState_STATE)-1;
#endif
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(1);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* SaveResetException */
      #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
#endif

/* PyErrExceptionMatches */
      #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    PyObject *exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
    return PyErr_GivenExceptionMatches(exc_type, err);
}
#endif

/* GetException */
      #if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
#endif
    PyObject *local_type, *local_value, *local_tb;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_COMPILING_IN_CPYTHON
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_COMPILING_IN_CPYTHON
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* SwapException */
        #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* IterFinish */
        static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyThreadState *tstate = PyThreadState_GET();
    PyObject* exc_type = tstate->curexc_type;
    if (unlikely(exc_type)) {
        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
            PyObject *exc_value, *exc_tb;
            exc_value = tstate->curexc_value;
            exc_tb = tstate->curexc_traceback;
            tstate->curexc_type = 0;
            tstate->curexc_value = 0;
            tstate->curexc_traceback = 0;
            Py_DECREF(exc_type);
            Py_XDECREF(exc_value);
            Py_XDECREF(exc_tb);
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#else
    if (unlikely(PyErr_Occurred())) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#endif
}

/* PyObjectCallMethod0 */
        static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method, *result = NULL;
    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
    if (unlikely(!method)) goto bad;
#if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyMethod_Check(method))) {
        PyObject *self = PyMethod_GET_SELF(method);
        if (likely(self)) {
            PyObject *function = PyMethod_GET_FUNCTION(method);
            result = __Pyx_PyObject_CallOneArg(function, self);
            Py_DECREF(method);
            return result;
        }
    }
#endif
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* RaiseNeedMoreValuesToUnpack */
        static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* RaiseTooManyValuesToUnpack */
        static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* UnpackItemEndCheck */
        static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else {
        return __Pyx_IterFinish();
    }
    return 0;
}

/* RaiseNoneIterError */
        static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnpackTupleError */
        static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
        static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                             int is_tuple, int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    if (!is_tuple && unlikely(!PyTuple_Check(tuple))) {
        iternextfunc iternext;
        iter = PyObject_GetIter(tuple);
        if (unlikely(!iter)) goto bad;
        if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
        iternext = Py_TYPE(iter)->tp_iternext;
        value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
        value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
        if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
        Py_DECREF(iter);
    } else {
        if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) {
            __Pyx_UnpackTupleError(tuple, 2);
            goto bad;
        }
#if CYTHON_COMPILING_IN_PYPY
        value1 = PySequence_ITEM(tuple, 0);
        if (unlikely(!value1)) goto bad;
        value2 = PySequence_ITEM(tuple, 1);
        if (unlikely(!value2)) goto bad;
#else
        value1 = PyTuple_GET_ITEM(tuple, 0);
        value2 = PyTuple_GET_ITEM(tuple, 1);
        Py_INCREF(value1);
        Py_INCREF(value2);
#endif
        if (decref_tuple) { Py_DECREF(tuple); }
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
        static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
#if !CYTHON_COMPILING_IN_PYPY
    if (is_dict) {
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
    }
#endif
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* PyObjectCallMethod1 */
        static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
    PyObject *method, *result = NULL;
    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
    if (unlikely(!method)) goto bad;
#if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyMethod_Check(method))) {
        PyObject *self = PyMethod_GET_SELF(method);
        if (likely(self)) {
            PyObject *args;
            PyObject *function = PyMethod_GET_FUNCTION(method);
            args = PyTuple_New(2);
            if (unlikely(!args)) goto bad;
            Py_INCREF(self);
            PyTuple_SET_ITEM(args, 0, self);
            Py_INCREF(arg);
            PyTuple_SET_ITEM(args, 1, arg);
            Py_INCREF(function);
            Py_DECREF(method); method = NULL;
            result = __Pyx_PyObject_Call(function, args, NULL);
            Py_DECREF(args);
            Py_DECREF(function);
            return result;
        }
    }
#endif
    result = __Pyx_PyObject_CallOneArg(method, arg);
bad:
    Py_XDECREF(method);
    return result;
}

/* append */
        static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
    if (likely(PyList_CheckExact(L))) {
        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
    } else {
        PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
        if (unlikely(!retval))
            return -1;
        Py_DECREF(retval);
    }
    return 0;
}

/* None */
        static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* FetchCommonType */
        static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CythonFunction */
        static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
    if (unlikely(op->func_doc == NULL)) {
        if (op->func.m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp = op->func_doc;
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    op->func_doc = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = op->func_name;
    Py_INCREF(value);
    op->func_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
{
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = op->func_qualname;
    Py_INCREF(value);
    op->func_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
{
    PyObject *self;
    self = m->func_closure;
    if (self == NULL)
        self = Py_None;
    Py_INCREF(self);
    return self;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    tmp = op->func_dict;
    Py_INCREF(value);
    op->func_dict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
{
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
{
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_COMPILING_IN_CPYTHON
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyTuple_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_tuple;
    op->defaults_tuple = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_kwdict;
    op->defaults_kwdict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value || value == Py_None) {
        value = NULL;
    } else if (!PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    tmp = op->func_annotations;
    op->func_annotations = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0},
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromString(m->func.m_ml->ml_name);
#else
    return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
    if (op == NULL)
        return NULL;
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
    op->func.m_ml = ml;
    op->func.m_self = (PyObject *) op;
    Py_XINCREF(closure);
    op->func_closure = closure;
    Py_XINCREF(module);
    op->func.m_module = module;
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
    op->func_classobj = NULL;
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    PyObject_GC_Track(op);
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
    Py_CLEAR(m->func.m_module);
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
    Py_CLEAR(m->func_classobj);
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    PyObject_GC_Del(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
    Py_VISIT(m->func.m_module);
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
    Py_VISIT(m->func_classobj);
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
        Py_INCREF(func);
        return func;
    }
    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
        if (type == NULL)
            type = (PyObject *)(Py_TYPE(obj));
        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
    }
    if (obj == Py_None)
        obj = NULL;
    return __Pyx_PyMethod_New(func, obj, type);
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
#if CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    PyObject *self = f->m_self;
    Py_ssize_t size;
    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 0))
                return (*meth)(self, NULL);
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 1)) {
                PyObject *result, *arg0 = PySequence_ITEM(arg, 0);
                if (unlikely(!arg0)) return NULL;
                result = (*meth)(self, arg0);
                Py_DECREF(arg0);
                return result;
            }
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
                        "longer supported!");
        return NULL;
    }
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
    return NULL;
}
#else
static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
	return PyCFunction_Call(func, arg, kw);
}
#endif
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
    0,
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_Call,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_CyFunction_descr_get,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
};
static int __pyx_CyFunction_init(void) {
#if !CYTHON_COMPILING_IN_PYPY
    __pyx_CyFunctionType_type.tp_call = PyCFunction_Call;
#endif
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
    if (__pyx_CyFunctionType == NULL) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (!m->defaults)
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* SliceObject */
            static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_COMPILING_IN_CPYTHON
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    PyErr_Format(PyExc_TypeError,
        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

/* GetModuleGlobalName */
            static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
    PyObject *result;
#if CYTHON_COMPILING_IN_CPYTHON
    result = PyDict_GetItem(__pyx_d, name);
    if (likely(result)) {
        Py_INCREF(result);
    } else {
#else
    result = PyObject_GetItem(__pyx_d, name);
    if (!result) {
        PyErr_Clear();
#endif
        result = __Pyx_GetBuiltinName(name);
    }
    return result;
}

/* RaiseDoubleKeywords */
              static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
              static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* GetItemInt */
              static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return m->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* CoroutineBase */
              #include <structmember.h>
#include <frameobject.h>
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
#if 1 || PY_VERSION_HEX < 0x030300B0
static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
#if PY_VERSION_HEX >= 0x030300A0
        if (ev && Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            Py_DECREF(ev);
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
#endif
        if (!ev || !PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            if (!ev) {
                Py_INCREF(Py_None);
                ev = Py_None;
            } else if (PyTuple_Check(ev)) {
                if (PyTuple_GET_SIZE(ev) >= 1) {
                    PyObject *value;
#if CYTHON_COMPILING_IN_CPYTHON
                    value = PySequence_ITEM(ev, 0);
#else
                    value = PyTuple_GET_ITEM(ev, 0);
                    Py_INCREF(value);
#endif
                    Py_DECREF(ev);
                    ev = value;
                } else {
                    Py_INCREF(Py_None);
                    Py_DECREF(ev);
                    ev = Py_None;
                }
            }
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = ev;
            return 0;
        }
    } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PySequence_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
#endif
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
    PyObject *exc_type = self->exc_type;
    PyObject *exc_value = self->exc_value;
    PyObject *exc_traceback = self->exc_traceback;
    self->exc_type = NULL;
    self->exc_value = NULL;
    self->exc_traceback = NULL;
    Py_XDECREF(exc_type);
    Py_XDECREF(exc_value);
    Py_XDECREF(exc_traceback);
}
static CYTHON_INLINE
int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) {
    if (unlikely(gen->is_running)) {
        PyErr_SetString(PyExc_ValueError,
                        "generator already executing");
        return 1;
    }
    return 0;
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) {
    PyObject *retval;
    __Pyx_PyThreadState_declare
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            PyErr_SetString(PyExc_TypeError,
                            "can't send non-None value to a "
                            "just-started generator");
            return NULL;
        }
    }
    if (unlikely(self->resume_label == -1)) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    __Pyx_PyThreadState_assign
    if (value) {
#if CYTHON_COMPILING_IN_PYPY
#else
        if (self->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_XINCREF(__pyx_tstate->frame);
            assert(f->f_back == NULL);
            f->f_back = __pyx_tstate->frame;
        }
#endif
        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
                            &self->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(self);
    }
    self->is_running = 1;
    retval = self->body((PyObject *) self, value);
    self->is_running = 0;
    if (retval) {
        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
                            &self->exc_traceback);
#if CYTHON_COMPILING_IN_PYPY
#else
        if (self->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_CLEAR(f->f_back);
        }
#endif
    } else {
        __Pyx_Coroutine_ExceptionClear(self);
    }
    return retval;
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) {
    if (unlikely(!retval && !PyErr_Occurred())) {
        PyErr_SetNone(PyExc_StopIteration);
    }
    return retval;
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen_FetchStopIterationValue(&val);
    ret = __Pyx_Coroutine_SendEx(gen, val);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        {
            if (value == Py_None)
                ret = Py_TYPE(yf)->tp_iternext(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        retval = __Pyx_Coroutine_FinishDelegation(gen);
    } else {
        retval = __Pyx_Coroutine_SendEx(gen, value);
    }
    return __Pyx_Coroutine_MethodReturn(retval);
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    {
        PyObject *meth;
        gen->is_running = 1;
        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                PyErr_WriteUnraisable(yf);
            }
            PyErr_Clear();
        } else {
            retval = PyObject_CallFunction(meth, NULL);
            Py_DECREF(meth);
            if (!retval)
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        ret = Py_TYPE(yf)->tp_iternext(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Coroutine_FinishDelegation(gen);
    }
    return __Pyx_Coroutine_SendEx(gen, Py_None);
}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
        return NULL;
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    retval = __Pyx_Coroutine_SendEx(gen, NULL);
    if (retval) {
        Py_DECREF(retval);
        PyErr_SetString(PyExc_RuntimeError,
                        "generator ignored GeneratorExit");
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (!raised_exception
        || raised_exception == PyExc_StopIteration
        || raised_exception == PyExc_GeneratorExit
        || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
        || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
    {
        if (raised_exception) PyErr_Clear();
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *typ;
    PyObject *tb = NULL;
    PyObject *val = NULL;
    PyObject *yf = gen->yieldfrom;
    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
        return NULL;
    if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
        if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL));
            goto throw_here;
        }
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Throw(yf, args);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Throw(yf, args);
        } else
        #endif
        {
            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                    gen->is_running = 0;
                    return NULL;
                }
                PyErr_Clear();
                __Pyx_Coroutine_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            ret = PyObject_CallObject(meth, args);
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Coroutine_FinishDelegation(gen);
        }
        return __Pyx_Coroutine_MethodReturn(ret);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL));
}
static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    Py_VISIT(gen->exc_type);
    Py_VISIT(gen->exc_value);
    Py_VISIT(gen->exc_traceback);
    return 0;
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    Py_CLEAR(gen->exc_type);
    Py_CLEAR(gen->exc_value);
    Py_CLEAR(gen->exc_traceback);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label > 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1
        if (PyObject_CallFinalizerFromDealloc(self))
#else
        Py_TYPE(gen)->tp_del(self);
        if (self->ob_refcnt > 0)
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
    __Pyx_Coroutine_clear(self);
    PyObject_GC_Del(gen);
}
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *res;
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label <= 0)
        return ;
#if PY_VERSION_HEX < 0x030400a1
    assert(self->ob_refcnt == 0);
    self->ob_refcnt = 1;
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
    res = __Pyx_Coroutine_Close(self);
    if (res == NULL)
        PyErr_WriteUnraisable(self);
    else
        Py_DECREF(res);
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if PY_VERSION_HEX < 0x030400a1
    assert(self->ob_refcnt > 0);
    if (--self->ob_refcnt == 0) {
        return;
    }
    {
        Py_ssize_t refcnt = self->ob_refcnt;
        _Py_NewReference(self);
        self->ob_refcnt = refcnt;
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(self->ob_type) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    _Py_DEC_REFTOTAL;
#endif
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
{
    Py_INCREF(self->gi_name);
    return self->gi_name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_name;
    Py_INCREF(value);
    self->gi_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
{
    Py_INCREF(self->gi_qualname);
    return self->gi_qualname;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_qualname;
    Py_INCREF(value);
    self->gi_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(PyTypeObject* type, __pyx_coroutine_body_t body,
                                                   PyObject *closure, PyObject *name, PyObject *qualname) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (gen == NULL)
        return NULL;
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->exc_type = NULL;
    gen->exc_value = NULL;
    gen->exc_traceback = NULL;
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    PyObject_GC_Track(gen);
    return gen;
}

/* PatchModuleWithCoroutine */
                  static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    int result;
    PyObject *globals, *result_obj;
    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
    #ifdef __Pyx_Coroutine_USED
        (PyObject*)__pyx_CoroutineType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_generator_type",
    #ifdef __Pyx_Generator_USED
        (PyObject*)__pyx_GeneratorType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
    if (unlikely(!result_obj)) goto ignore;
    Py_DECREF(result_obj);
    Py_DECREF(globals);
    return module;
ignore:
    Py_XDECREF(globals);
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    py_code++;
#endif
    return module;
}

/* PatchGeneratorABC */
                  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
static PyObject* __Pyx_patch_abc_module(PyObject *module);
static PyObject* __Pyx_patch_abc_module(PyObject *module) {
    module = __Pyx_Coroutine_patch_module(
        module, ""
"if _cython_generator_type is not None:\n"
"    try: Generator = _module.Generator\n"
"    except AttributeError: pass\n"
"    else: Generator.register(_cython_generator_type)\n"
"if _cython_coroutine_type is not None:\n"
"    try: Coroutine = _module.Coroutine\n"
"    except AttributeError: pass\n"
"    else: Coroutine.register(_cython_coroutine_type)\n"
    );
    return module;
}
#endif
static int __Pyx_patch_abc(void) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    static int abc_patched = 0;
    if (!abc_patched) {
        PyObject *module;
        module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections");
        if (!module) {
            PyErr_WriteUnraisable(NULL);
            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
                    ((PY_VERSION_HEX >= 0x03030000) ?
                        "Cython module failed to register with collections.abc module" :
                        "Cython module failed to register with collections module"), 1) < 0)) {
                return -1;
            }
        } else {
            module = __Pyx_patch_abc_module(module);
            abc_patched = 1;
            if (unlikely(!module))
                return -1;
            Py_DECREF(module);
        }
        module = PyImport_ImportModule("backports_abc");
        if (module) {
            module = __Pyx_patch_abc_module(module);
            Py_XDECREF(module);
        }
        if (!module) {
            PyErr_Clear();
        }
    }
#else
    if (0) __Pyx_Coroutine_patch_module(NULL, NULL);
#endif
    return 0;
}

/* Coroutine */
                  typedef struct {
    PyObject_HEAD
    PyObject *coroutine;
} __pyx_CoroutineAwaitObject;
static void __Pyx_CoroutineAwait_dealloc(PyObject *self) {
    PyObject_GC_UnTrack(self);
    Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine);
    PyObject_GC_Del(self);
}
static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) {
    Py_VISIT(self->coroutine);
    return 0;
}
static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) {
    Py_CLEAR(self->coroutine);
    return 0;
}
static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) {
    return __Pyx_Generator_Next(self->coroutine);
}
static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) {
    return __Pyx_Coroutine_Send(self->coroutine, value);
}
static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) {
    return __Pyx_Coroutine_Throw(self->coroutine, args);
}
static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self) {
    return __Pyx_Coroutine_Close(self->coroutine);
}
static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) {
    Py_INCREF(self);
    return self;
}
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject *__Pyx_CoroutineAwait_no_new(CYTHON_UNUSED PyTypeObject *type, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwargs) {
    PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead");
    return NULL;
}
#endif
static PyMethodDef __pyx_CoroutineAwait_methods[] = {
    {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
    {0, 0, 0, 0}
};
static PyTypeObject __pyx_CoroutineAwaitType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "coroutine_wrapper",
    sizeof(__pyx_CoroutineAwaitObject),
    0,
    (destructor) __Pyx_CoroutineAwait_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    PyDoc_STR("A wrapper object implementing __await__ for coroutines."),
    (traverseproc) __Pyx_CoroutineAwait_traverse,
    (inquiry) __Pyx_CoroutineAwait_clear,
    0,
    0,
    __Pyx_CoroutineAwait_self,
    (iternextfunc) __Pyx_CoroutineAwait_Next,
    __pyx_CoroutineAwait_methods,
    0                         ,
    0                      ,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_COMPILING_IN_CPYTHON
    __Pyx_CoroutineAwait_no_new,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
};
static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) {
#if CYTHON_COMPILING_IN_CPYTHON
    __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType);
#else
    __pyx_CoroutineAwaitObject *await = (__pyx_CoroutineAwaitObject*)
        __pyx_CoroutineAwaitType->tp_new(__pyx_CoroutineAwaitType, __pyx_empty_tuple, NULL);
#endif
    if (unlikely(!await)) return NULL;
    Py_INCREF(coroutine);
    await->coroutine = coroutine;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject_GC_Track(await);
#endif
    return (PyObject*)await;
}
static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) {
    if (unlikely(!coroutine || !__Pyx_Coroutine_CheckExact(coroutine))) {
        PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine");
        return NULL;
    }
    return __Pyx__Coroutine_await(coroutine);
}
static void __Pyx_Coroutine_check_and_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    if (gen->resume_label == 0 && !PyErr_Occurred()) {
        PyObject_GC_UnTrack(self);
#if PY_VERSION_HEX >= 0x03030000 || defined(PyErr_WarnFormat)
        PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname);
#else
        {PyObject *msg;
        char *cmsg;
        #if CYTHON_COMPILING_IN_PYPY
        msg = NULL;
        cmsg = (char*) "coroutine was never awaited";
        #else
        char *cname;
        PyObject *qualname;
        #if PY_MAJOR_VERSION >= 3
        qualname = PyUnicode_AsUTF8String(gen->gi_qualname);
        if (likely(qualname)) {
            cname = PyBytes_AS_STRING(qualname);
        } else {
            PyErr_Clear();
            cname = (char*) "?";
        }
        msg = PyBytes_FromFormat(
        #else
        qualname = gen->gi_qualname;
        cname = PyString_AS_STRING(qualname);
        msg = PyString_FromFormat(
        #endif
            "coroutine '%.50s' was never awaited", cname);
        #if PY_MAJOR_VERSION >= 3
        Py_XDECREF(qualname);
        #endif
        if (unlikely(!msg)) {
            PyErr_Clear();
            cmsg = (char*) "coroutine was never awaited";
        } else {
            #if PY_MAJOR_VERSION >= 3
            cmsg = PyBytes_AS_STRING(msg);
            #else
            cmsg = PyString_AS_STRING(msg);
            #endif
        }
        #endif
        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
            PyErr_WriteUnraisable(self);
        Py_XDECREF(msg);}
#endif
        PyObject_GC_Track(self);
    }
    __Pyx_Coroutine_dealloc(self);
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) {
    PyObject* result;
    switch (op) {
        case Py_EQ: result = (other == obj) ? Py_True : Py_False; break;
        case Py_NE: result = (other != obj) ? Py_True : Py_False; break;
        default:
            result = Py_NotImplemented;
    }
    Py_INCREF(result);
    return result;
}
#endif
static PyMethodDef __pyx_Coroutine_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
#if PY_VERSION_HEX < 0x030500B1
    {"__await__", (PyCFunction) __Pyx_Coroutine_await, METH_NOARGS,
     (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")},
#endif
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Coroutine_memberlist[] = {
    {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being awaited, or None")},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Coroutine_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the coroutine"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the coroutine"), 0},
    {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = {
    __Pyx_Coroutine_await,
    0,
    0,
};
#endif
static PyTypeObject __pyx_CoroutineType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "coroutine",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_check_and_dealloc,
    0,
    0,
    0,
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
    &__pyx_Coroutine_as_async,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
    __Pyx_Coroutine_compare,
#else
    0,
#endif
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    0,
    __pyx_Coroutine_methods,
    __pyx_Coroutine_memberlist,
    __pyx_Coroutine_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if PY_VERSION_HEX >= 0x030400a1
    __Pyx_Coroutine_del,
#endif
};
static int __pyx_Coroutine_init(void) {
    __pyx_CoroutineType_type.tp_getattro = PyObject_GenericGetAttr;
    __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type);
    if (unlikely(!__pyx_CoroutineType))
        return -1;
    __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type);
    if (unlikely(!__pyx_CoroutineAwaitType))
        return -1;
    return 0;
}

/* GetAwaitIter */
                  static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) {
#ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_CheckExact(o)) {
        Py_INCREF(o);
        return o;
    }
#endif
    return __Pyx__Coroutine_GetAwaitableIter(o);
}
static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) {
    PyObject *res;
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
    __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
    if (likely(am && am->am_await)) {
        res = (*am->am_await)(obj);
    } else
#endif
#if (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500B2) || defined(PyCoro_CheckExact)
    if (PyCoro_CheckExact(obj)) {
        Py_INCREF(obj);
        return obj;
    } else
#endif
#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE)
    if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) {
        Py_INCREF(obj);
        return obj;
    } else
#endif
    {
        PyObject *method = __Pyx_PyObject_GetAttrStr(obj, __pyx_n_s_await);
        if (unlikely(!method)) goto slot_error;
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyMethod_Check(method))) {
            PyObject *self = PyMethod_GET_SELF(method);
            if (likely(self)) {
                PyObject *function = PyMethod_GET_FUNCTION(method);
                res = __Pyx_PyObject_CallOneArg(function, self);
            } else
                res = __Pyx_PyObject_CallNoArg(method);
        } else
        #endif
            res = __Pyx_PyObject_CallNoArg(method);
        Py_DECREF(method);
    }
    if (unlikely(!res)) goto bad;
    if (!PyIter_Check(res)) {
        PyErr_Format(PyExc_TypeError,
                     "__await__() returned non-iterator of type '%.100s'",
                     Py_TYPE(res)->tp_name);
        Py_CLEAR(res);
    } else {
        int is_coroutine = 0;
        #ifdef __Pyx_Coroutine_USED
        is_coroutine |= __Pyx_Coroutine_CheckExact(res);
        #endif
        #if (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500B2) || defined(PyCoro_CheckExact)
        is_coroutine |= PyCoro_CheckExact(res);
        #endif
        if (unlikely(is_coroutine)) {
            /* __await__ must return an *iterator*, not
               a coroutine or another awaitable (see PEP 492) */
            PyErr_SetString(PyExc_TypeError,
                            "__await__() returned a coroutine");
            Py_CLEAR(res);
        }
    }
    return res;
slot_error:
    PyErr_Format(PyExc_TypeError,
                 "object %.100s can't be used in 'await' expression",
                 Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

/* CoroutineYieldFrom */
                  static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) {
    PyObject *retval;
    if (__Pyx_Coroutine_CheckExact(source)) {
        retval = __Pyx_Generator_Next(source);
        if (retval) {
            Py_INCREF(source);
            gen->yieldfrom = source;
            return retval;
        }
    } else {
        PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source);
        if (unlikely(!source_gen))
            return NULL;
        if (__Pyx_Coroutine_CheckExact(source_gen)) {
            retval = __Pyx_Generator_Next(source_gen);
        } else {
            retval = Py_TYPE(source_gen)->tp_iternext(source_gen);
        }
        if (retval) {
            gen->yieldfrom = source_gen;
            return retval;
        }
        Py_DECREF(source_gen);
    }
    return NULL;
}

/* ReturnWithStopIteration */
                  static void __Pyx__ReturnWithStopIteration(PyObject* value) {
    PyObject *exc, *args;
#if CYTHON_COMPILING_IN_CPYTHON
    __Pyx_PyThreadState_declare
    if ((PY_VERSION_HEX >= 0x03030000 && PY_VERSION_HEX < 0x030500B1) || PyTuple_Check(value)) {
        args = PyTuple_New(1);
        if (unlikely(!args)) return;
        Py_INCREF(value);
        PyTuple_SET_ITEM(args, 0, value);
        exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL);
        Py_DECREF(args);
        if (!exc) return;
    } else {
        Py_INCREF(value);
        exc = value;
    }
    __Pyx_PyThreadState_assign
    if (!__pyx_tstate->exc_type) {
        Py_INCREF(PyExc_StopIteration);
        __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL);
        return;
    }
#else
    args = PyTuple_Pack(1, value);
    if (unlikely(!args)) return;
    exc = PyObject_Call(PyExc_StopIteration, args, NULL);
    Py_DECREF(args);
    if (unlikely(!exc)) return;
#endif
    PyErr_SetObject(PyExc_StopIteration, exc);
    Py_DECREF(exc);
}

/* BytesEquals */
                  static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
                  static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* ArgTypeTest */
                  static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
}
static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact)
{
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (none_allowed && obj == Py_None) return 1;
    else if (exact) {
        if (likely(Py_TYPE(obj) == type)) return 1;
        #if PY_MAJOR_VERSION == 2
        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(PyObject_TypeCheck(obj, type))) return 1;
    }
    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
    return 0;
}

/* SetItemInt */
                  static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return m->sq_ass_item(o, i, v);
        }
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
#else
    if (is_list || PySequence_Check(o)) {
#endif
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* MergeKeywords */
                    static int __Pyx_MergeKeywords(PyObject *kwdict, PyObject *source_mapping) {
    PyObject *iter, *key = NULL, *value = NULL;
    int source_is_dict, result;
    Py_ssize_t orig_length, ppos = 0;
    iter = __Pyx_dict_iterator(source_mapping, 0, __pyx_n_s_items, &orig_length, &source_is_dict);
    if (unlikely(!iter)) {
        PyObject *args;
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        args = PyTuple_Pack(1, source_mapping);
        if (likely(args)) {
            PyObject *fallback = PyObject_Call((PyObject*)&PyDict_Type, args, NULL);
            Py_DECREF(args);
            if (likely(fallback)) {
                iter = __Pyx_dict_iterator(fallback, 1, __pyx_n_s_items, &orig_length, &source_is_dict);
                Py_DECREF(fallback);
            }
        }
        if (unlikely(!iter)) goto bad;
    }
    while (1) {
        result = __Pyx_dict_iter_next(iter, orig_length, &ppos, &key, &value, NULL, source_is_dict);
        if (unlikely(result < 0)) goto bad;
        if (!result) break;
        if (unlikely(PyDict_Contains(kwdict, key))) {
            __Pyx_RaiseDoubleKeywordsError("function", key);
            result = -1;
        } else {
            result = PyDict_SetItem(kwdict, key, value);
        }
        Py_DECREF(key);
        Py_DECREF(value);
        if (unlikely(result < 0)) goto bad;
    }
    Py_XDECREF(iter);
    return 0;
bad:
    Py_XDECREF(iter);
    return -1;
}

/* None */
                    static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* None */
                    static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
    long q = a / b;
    long r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}

/* StringJoin */
                    #if !CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
    return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL);
}
#endif

/* PyIntBinop */
                    #if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
            return PyInt_FromLong(a & b);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    }
                default: return PyLong_Type.tp_as_number->nb_and(op1, op2);
            }
        }
                x = a & b;
            return PyLong_FromLong(x);
        long_long:
                llx = lla & llb;
            return PyLong_FromLongLong(llx);
    }
    #endif
    return (inplace ? PyNumber_InPlaceAnd : PyNumber_And)(op1, op2);
}
#endif

/* PyIntBinop */
                    #if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
    if (op1 == op2) {
        Py_RETURN_TRUE;
    }
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
        if (a == b) {
            Py_RETURN_TRUE;
        } else {
            Py_RETURN_FALSE;
        }
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a;
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
                default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
                #else
                default: Py_RETURN_FALSE;
                #endif
            }
        }
            if (a == b) {
                Py_RETURN_TRUE;
            } else {
                Py_RETURN_FALSE;
            }
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            if ((double)a == (double)b) {
                Py_RETURN_TRUE;
            } else {
                Py_RETURN_FALSE;
            }
    }
    return PyObject_RichCompare(op1, op2, Py_EQ);
}
#endif

/* decode_c_bytes */
                    static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    if (unlikely((start < 0) | (stop < 0))) {
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (stop > length)
        stop = length;
    length = stop - start;
    if (unlikely(length <= 0))
        return PyUnicode_FromUnicode(NULL, 0);
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* SetVTable */
                    static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* Import */
                    static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    #if PY_VERSION_HEX < 0x03030000
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (!py_import)
        goto bad;
    #endif
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if (strchr(__Pyx_MODULE_NAME, '.')) {
                #if PY_VERSION_HEX < 0x03030000
                PyObject *py_level = PyInt_FromLong(1);
                if (!py_level)
                    goto bad;
                module = PyObject_CallFunctionObjArgs(py_import,
                    name, global_dict, empty_dict, list, py_level, NULL);
                Py_DECREF(py_level);
                #else
                module = PyImport_ImportModuleLevelObject(
                    name, global_dict, empty_dict, list, 1);
                #endif
                if (!module) {
                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_VERSION_HEX < 0x03030000
            PyObject *py_level = PyInt_FromLong(level);
            if (!py_level)
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, global_dict, empty_dict, list, py_level, NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, global_dict, empty_dict, list, level);
            #endif
        }
    }
bad:
    #if PY_VERSION_HEX < 0x03030000
    Py_XDECREF(py_import);
    #endif
    Py_XDECREF(empty_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* PatchInspect */
                    static PyObject* __Pyx_patch_inspect(PyObject* module) {
#if defined(__Pyx_Generator_USED) && (!defined(CYTHON_PATCH_INSPECT) || CYTHON_PATCH_INSPECT)
    static int inspect_patched = 0;
    if (unlikely((!inspect_patched) && module)) {
        module = __Pyx_Coroutine_patch_module(
            module, ""
"old_types = getattr(_module.isgenerator, '_cython_generator_types', None)\n"
"if old_types is None or not isinstance(old_types, set):\n"
"    old_types = set()\n"
"    def cy_wrap(orig_func, type=type, cython_generator_types=old_types):\n"
"        def cy_isgenerator(obj): return type(obj) in cython_generator_types or orig_func(obj)\n"
"        cy_isgenerator._cython_generator_types = cython_generator_types\n"
"        return cy_isgenerator\n"
"    _module.isgenerator = cy_wrap(_module.isgenerator)\n"
"old_types.add(_cython_generator_type)\n"
        );
        inspect_patched = 1;
    }
#else
    if (0) return __Pyx_Coroutine_patch_module(module, NULL);
#endif
    return module;
}

/* PatchAsyncIO */
                    static PyObject* __Pyx_patch_asyncio(PyObject* module) {
#if PY_VERSION_HEX < 0x030500B2 &&\
        (defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED)) &&\
        (!defined(CYTHON_PATCH_ASYNCIO) || CYTHON_PATCH_ASYNCIO)
    PyObject *patch_module = NULL;
    static int asyncio_patched = 0;
    if (unlikely((!asyncio_patched) && module)) {
        PyObject *package;
        package = __Pyx_Import(__pyx_n_s_asyncio_coroutines, NULL, 0);
        if (package) {
            patch_module = __Pyx_Coroutine_patch_module(
                PyObject_GetAttrString(package, "coroutines"), ""
"try:\n"
"    coro_types = _module._COROUTINE_TYPES\n"
"except AttributeError: pass\n"
"else:\n"
"    if _cython_coroutine_type is not None and _cython_coroutine_type not in coro_types:\n"
"        coro_types = tuple(coro_types) + (_cython_coroutine_type,)\n"
"    if _cython_generator_type is not None and _cython_generator_type not in coro_types:\n"
"        coro_types = tuple(coro_types) + (_cython_generator_type,)\n"
"_module._COROUTINE_TYPES = coro_types\n"
            );
        } else {
            PyErr_Clear();
#if PY_VERSION_HEX < 0x03040200
            package = __Pyx_Import(__pyx_n_s_asyncio_tasks, NULL, 0);
            if (unlikely(!package)) goto asyncio_done;
            patch_module = __Pyx_Coroutine_patch_module(
                PyObject_GetAttrString(package, "tasks"), ""
"if hasattr(_module, 'iscoroutine'):\n"
"    old_types = getattr(_module.iscoroutine, '_cython_coroutine_types', None)\n"
"    if old_types is None or not isinstance(old_types, set):\n"
"        old_types = set()\n"
"        def cy_wrap(orig_func, type=type, cython_coroutine_types=old_types):\n"
"            def cy_iscoroutine(obj): return type(obj) in cython_coroutine_types or orig_func(obj)\n"
"            cy_iscoroutine._cython_coroutine_types = cython_coroutine_types\n"
"            return cy_iscoroutine\n"
"        _module.iscoroutine = cy_wrap(_module.iscoroutine)\n"
"    if _cython_coroutine_type is not None:\n"
"        old_types.add(_cython_coroutine_type)\n"
"    if _cython_generator_type is not None:\n"
"        old_types.add(_cython_generator_type)\n"
            );
#endif
        }
        Py_DECREF(package);
        if (unlikely(!patch_module)) goto ignore;
#if PY_VERSION_HEX < 0x03040200
asyncio_done:
        PyErr_Clear();
#endif
        asyncio_patched = 1;
#ifdef __Pyx_Generator_USED
        {
            PyObject *inspect_module;
            if (patch_module) {
                inspect_module = PyObject_GetAttr(patch_module, __pyx_n_s_inspect);
                Py_DECREF(patch_module);
            } else {
                inspect_module = __Pyx_Import(__pyx_n_s_inspect, NULL, 0);
            }
            if (unlikely(!inspect_module)) goto ignore;
            inspect_module = __Pyx_patch_inspect(inspect_module);
            if (unlikely(!inspect_module)) {
                Py_DECREF(module);
                module = NULL;
            }
            Py_XDECREF(inspect_module);
        }
#else
        if (0) return __Pyx_patch_inspect(module);
#endif
    }
    return module;
ignore:
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch asyncio package with custom generator type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    if (0) return __Pyx_patch_inspect(__Pyx_Coroutine_patch_module(module, NULL));
#endif
    return module;
}

/* GetAttr */
                    static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_COMPILING_IN_CPYTHON
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* GetAttr3 */
                    static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r = __Pyx_GetAttr(o, n);
    if (unlikely(!r)) {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
            goto bad;
        PyErr_Clear();
        r = d;
        Py_INCREF(d);
    }
    return r;
bad:
    return NULL;
}

/* GetNameInClass */
                    static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
    PyObject *result;
    result = __Pyx_PyObject_GetAttrStr(nmspace, name);
    if (!result)
        result = __Pyx_GetModuleGlobalName(name);
    return result;
}

/* CalculateMetaclass */
                    static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
        tmptype = Py_TYPE(tmp);
#if PY_MAJOR_VERSION < 3
        if (tmptype == &PyClass_Type)
            continue;
#endif
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
#if PY_MAJOR_VERSION < 3
        metaclass = &PyClass_Type;
#else
        metaclass = &PyType_Type;
#endif
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* Py3ClassCreate */
                    static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
        if (prep) {
            PyObject *pargs = PyTuple_Pack(2, name, bases);
            if (unlikely(!pargs)) {
                Py_DECREF(prep);
                return NULL;
            }
            ns = PyObject_Call(prep, pargs, mkw);
            Py_DECREF(prep);
            Py_DECREF(pargs);
        } else {
            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
                return NULL;
            PyErr_Clear();
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result, *margs;
    PyObject *owned_metaclass = NULL;
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    margs = PyTuple_Pack(3, name, bases, dict);
    if (unlikely(!margs)) {
        result = NULL;
    } else {
        result = PyObject_Call(metaclass, margs, mkw);
        Py_DECREF(margs);
    }
    Py_XDECREF(owned_metaclass);
    return result;
}

/* CodeObjectCache */
                    static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

/* AddTraceback */
                    #include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(filename);
    #else
    py_srcfile = PyUnicode_FromString(filename);
    #endif
    if (!py_srcfile) goto bad;
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    Py_DECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        PyThreadState_GET(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        __pyx_d,      /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = py_line;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

/* CIntFromPyVerify */
                    #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
    const int neg_one = (int) -1, const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint64_t) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(uint64_t) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(uint64_t),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
    const long neg_one = (long) -1, const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value) {
    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint32_t) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(uint32_t) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value) {
    const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned short) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned short) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(unsigned short) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(unsigned short) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned short) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned short),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
    const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int64_t) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int64_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(int64_t) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int64_t),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
                    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
        }
    } else {
        if (sizeof(unsigned long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
                    static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
    const int neg_one = (int) -1, const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntFromPy */
                    static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
    const long neg_one = (long) -1, const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* CIntFromPy */
                    static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(uint64_t) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (uint64_t) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (uint64_t) 0;
                case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, digits[0])
                case 2:
                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT) {
                            return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT) {
                            return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT) {
                            return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (uint64_t) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(uint64_t) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
            } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (uint64_t) 0;
                case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
                            return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
                            return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
                            return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
                            return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
                            return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
                            return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(uint64_t) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x))
            } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            uint64_t val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (uint64_t) -1;
        }
    } else {
        uint64_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (uint64_t) -1;
        val = __Pyx_PyInt_As_uint64_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint64_t");
    return (uint64_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint64_t");
    return (uint64_t) -1;
}

/* CIntFromPy */
                    static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *x) {
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(unsigned long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(unsigned long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(unsigned long, digit, digits[0])
                case 2:
                    if (8 * sizeof(unsigned long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) >= 2 * PyLong_SHIFT) {
                            return (unsigned long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) >= 3 * PyLong_SHIFT) {
                            return (unsigned long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) >= 4 * PyLong_SHIFT) {
                            return (unsigned long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (unsigned long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(unsigned long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned long, PyLong_AsUnsignedLong(x))
            } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(unsigned long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(unsigned long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(unsigned long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned long) (((unsigned long)-1)*(((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(unsigned long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned long) ((((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned long) (((unsigned long)-1)*(((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned long) ((((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned long) (((unsigned long)-1)*(((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned long) ((((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(unsigned long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned long, long, PyLong_AsLong(x))
            } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned long, PY_LONG_LONG, PyLong_AsLongLong(x))
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            unsigned long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (unsigned long) -1;
        }
    } else {
        unsigned long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned long) -1;
        val = __Pyx_PyInt_As_unsigned_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned long");
    return (unsigned long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned long");
    return (unsigned long) -1;
}

/* CIntFromPy */
                    static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(unsigned int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0])
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) {
                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) {
                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) {
                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (unsigned int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
            } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
            } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            unsigned int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (unsigned int) -1;
        }
    } else {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyInt_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* Generator */
                    static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the generator"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the generator"), 0},
    {0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
    0,
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    (iternextfunc) __Pyx_Generator_Next,
    __pyx_Generator_methods,
    __pyx_Generator_memberlist,
    __pyx_Generator_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if PY_VERSION_HEX >= 0x030400a1
    __Pyx_Coroutine_del,
#endif
};
static int __pyx_Generator_init(void) {
    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
    if (unlikely(!__pyx_GeneratorType)) {
        return -1;
    }
    return 0;
}

/* CheckBinaryVersion */
                    static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* ModuleImport */
                    #ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
    PyObject *py_name = 0;
    PyObject *py_module = 0;
    py_name = __Pyx_PyIdentifier_FromString(name);
    if (!py_name)
        goto bad;
    py_module = PyImport_Import(py_name);
    Py_DECREF(py_name);
    return py_module;
bad:
    Py_XDECREF(py_name);
    return 0;
}
#endif

/* TypeImport */
                    #ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
    size_t size, int strict)
{
    PyObject *py_module = 0;
    PyObject *result = 0;
    PyObject *py_name = 0;
    char warning[200];
    Py_ssize_t basicsize;
#ifdef Py_LIMITED_API
    PyObject *py_basicsize;
#endif
    py_module = __Pyx_ImportModule(module_name);
    if (!py_module)
        goto bad;
    py_name = __Pyx_PyIdentifier_FromString(class_name);
    if (!py_name)
        goto bad;
    result = PyObject_GetAttr(py_module, py_name);
    Py_DECREF(py_name);
    py_name = 0;
    Py_DECREF(py_module);
    py_module = 0;
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#ifndef Py_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (!strict && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
            module_name, class_name, basicsize, size);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    else if ((size_t)basicsize != size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
            module_name, class_name, basicsize, size);
        goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(py_module);
    Py_XDECREF(result);
    return NULL;
}
#endif

/* InitStrings */
                    static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
#if PY_VERSION_HEX < 0x03030000
        char* defenc_c;
        PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
        if (!defenc) return NULL;
        defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        {
            char* end = defenc_c + PyBytes_GET_SIZE(defenc);
            char* c;
            for (c = defenc_c; c < end; c++) {
                if ((unsigned char) (*c) >= 128) {
                    PyUnicode_AsASCIIString(o);
                    return NULL;
                }
            }
        }
#endif
        *length = PyBytes_GET_SIZE(defenc);
        return defenc_c;
#else
        if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        if (PyUnicode_IS_ASCII(o)) {
            *length = PyUnicode_GET_LENGTH(o);
            return PyUnicode_AsUTF8(o);
        } else {
            PyUnicode_AsASCIIString(o);
            return NULL;
        }
#else
        return PyUnicode_AsUTF8AndSize(o, length);
#endif
#endif
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
  PyNumberMethods *m;
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (PyInt_Check(x) || PyLong_Check(x))
#else
  if (PyLong_Check(x))
#endif
    return __Pyx_NewRef(x);
  m = Py_TYPE(x)->tp_as_number;
#if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = PyNumber_Long(x);
  }
#else
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Long(x);
  }
#endif
  if (res) {
#if PY_MAJOR_VERSION < 3
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
#else
    if (!PyLong_Check(res)) {
#endif
      PyErr_Format(PyExc_TypeError,
                   "__%.4s__ returned non-%.4s (type %.200s)",
                   name, name, Py_TYPE(res)->tp_name);
      Py_DECREF(res);
      return NULL;
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(x);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    const digit* digits = ((PyLongObject*)b)->ob_digit;
    const Py_ssize_t size = Py_SIZE(b);
    if (likely(__Pyx_sst_abs(size) <= 1)) {
        ival = likely(size) ? digits[0] : 0;
        if (size == -1) ival = -ival;
        return ival;
    } else {
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


#endif /* Py_PYTHON_H */
