PKm@Օ!! encoder.c/* Generated by Cython 0.29.33 */ /* Copyright 2023 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN #endif /* 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 < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else #define CYTHON_ABI "0_29_33" #define CYTHON_HEX_VERSION 0x001D21F0 #define CYTHON_FUTURE_DIVISION 0 #include #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 #define __PYX_COMMA , #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x02070000 #define HAVE_LONG_LONG #endif #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_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(PY_NOGIL) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #ifndef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 1 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #if PY_VERSION_HEX >= 0x030B00A4 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #elif !defined(CYTHON_FAST_THREAD_STATE) #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000) #endif #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) #endif #ifndef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) #endif #if PY_VERSION_HEX >= 0x030B00A4 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #elif !defined(CYTHON_USE_EXC_INFO_STACK) #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) #endif #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #if PY_MAJOR_VERSION < 3 #include "longintrepr.h" #endif #undef SHIFT #undef BASE #undef MASK #ifdef SIZEOF_VOID_P enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0 #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 #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_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int32 uint32_t; #endif #endif #else #include #endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) && __cplusplus >= 201103L #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #elif __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #elif __has_cpp_attribute(gnu::fallthrough) #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif #if defined(__clang__ ) && defined(__apple_build_version__) #if __apple_build_version__ < 7000000 #undef CYTHON_FALLTHROUGH #define CYTHON_FALLTHROUGH #endif #endif #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif 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 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_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030B00A1 static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; const char *fn_cstr=NULL; const char *name_cstr=NULL; PyCodeObject* co=NULL; PyObject *type, *value, *traceback; PyErr_Fetch(&type, &value, &traceback); if (!(kwds=PyDict_New())) goto end; if (!(argcount=PyLong_FromLong(a))) goto end; if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; if (!(posonlyargcount=PyLong_FromLong(0))) goto end; if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; if (!(nlocals=PyLong_FromLong(l))) goto end; if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; if (!(stacksize=PyLong_FromLong(s))) goto end; if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; if (!(flags=PyLong_FromLong(f))) goto end; if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; Py_XDECREF((PyObject*)co); co = (PyCodeObject*)call_result; call_result = NULL; if (0) { cleanup_code_too: Py_XDECREF((PyObject*)co); co = NULL; } end: Py_XDECREF(kwds); Py_XDECREF(argcount); Py_XDECREF(posonlyargcount); Py_XDECREF(kwonlyargcount); Py_XDECREF(nlocals); Py_XDECREF(stacksize); Py_XDECREF(replace); Py_XDECREF(call_result); Py_XDECREF(empty); if (type) { PyErr_Restore(type, value, traceback); } return co; } #else #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) #endif #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 #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #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 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 #define PyMem_RawMalloc(n) PyMem_Malloc(n) #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) #define PyMem_RawFree(p) PyMem_Free(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x03060000 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() #elif PY_VERSION_HEX >= 0x03000000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) #include "pythread.h" #define Py_tss_NEEDS_INIT 0 typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); return 0; } static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); *key = Py_tss_NEEDS_INIT; return key; } static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { PyObject_Free(key); } static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { return *key != Py_tss_NEEDS_INIT; } static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { PyThread_delete_key(*key); *key = Py_tss_NEEDS_INIT; } static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { return PyThread_set_key_value(*key, value); } static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } #endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else #define __Pyx_PyDict_NewPresized(n) PyDict_New() #endif #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION #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_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS #define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) #else #define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_READY(op) (0) #else #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #endif #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_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #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_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) #else #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #endif #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #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_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #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_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #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(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? 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 #ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif #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 #if PY_VERSION_HEX >= 0x030900A4 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) #else #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #else #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) #endif #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 __Pyx_PyIndex_AsHash_t #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_MARK_ERR_POS(f_index, lineno) \ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE__encoder #define __PYX_HAVE_API__encoder /* Early includes */ #ifdef _OPENMP #include #endif /* _OPENMP */ #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #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_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) #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))) ) static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { return (size_t) i < (size_t) limit; } #if defined (__cplusplus) && __cplusplus >= 201103L #include #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) #define __Pyx_sst_abs(value) ((Py_ssize_t)_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 const char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE const 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_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((const 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) 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); } #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) static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); #if CYTHON_ASSUME_SAFE_MACROS #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) + 1); 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 CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_cython_runtime = NULL; 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[] = { "encoder.py", }; /*--- Type declarations ---*/ /* --- 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_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* 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 /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); #else #define __Pyx_PyInt_RemainderObjC(op1, op2, intval, inplace, zerodivision_check)\ (inplace ? PyNumber_InPlaceRemainder(op1, op2) : PyNumber_Remainder(op1, op2)) #endif /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #define __Pyx_BUILD_ASSERT_EXPR(cond)\ (sizeof(char [1 - 2*!(cond)]) - 1) #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif #if CYTHON_FAST_PYCALL static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" #if PY_VERSION_HEX >= 0x030b00a6 #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) #endif // CYTHON_FAST_PYCALL #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); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); #else #define __Pyx_PyInt_RshiftObjC(op1, op2, intval, inplace, zerodivision_check)\ (inplace ? PyNumber_InPlaceRshift(op1, op2) : PyNumber_Rshift(op1, op2)) #endif /* ModInt[Py_ssize_t].proto */ static CYTHON_INLINE Py_ssize_t __Pyx_mod_Py_ssize_t(Py_ssize_t, Py_ssize_t); /* 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); /* 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); /* 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 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); /* PyIntCompare.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); /* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED 1 #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; size_t defaults_size; // used by FusedFunction for copying defaults 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_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType)) static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, 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); /* CythonFunction.proto */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject* code); /* 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 /* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ (version_var) = __PYX_GET_DICT_VERSION(dict);\ (cache_var) = (value); #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ }\ } static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); #else #define __PYX_GET_DICT_VERSION(dict) (0) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); #endif /* GetModuleGlobalName.proto */ #if CYTHON_USE_DICT_VERSIONS #define __Pyx_GetModuleGlobalName(var, name) do {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) #define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ PY_UINT64_T __pyx_dict_version;\ PyObject *__pyx_dict_cached_value;\ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); #else #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); #else #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) #endif /* ObjectGetItem.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); #else #define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) #endif /* PyObjectCall2Args.proto */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); /* 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); /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; #define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #define __Pyx_PyErr_Occurred() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #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); #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) #else #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #endif #else #define __Pyx_PyErr_Clear() PyErr_Clear() #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchInState(tstate, 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 /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #else static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #endif /* 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); /* Print.proto */ static int __Pyx_Print(PyObject*, PyObject *, int); #if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3 static PyObject* __pyx_print = 0; static PyObject* __pyx_print_kwargs = 0; #endif /* GCCDiagnostics.proto */ #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) #define __Pyx_HAS_GCC_DIAGNOSTIC #endif /* PrintOne.proto */ static int __Pyx_PrintOne(PyObject* stream, PyObject *o); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); #else #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'encoder' */ #define __Pyx_MODULE_NAME "encoder" extern int __pyx_module_is_main_encoder; int __pyx_module_is_main_encoder = 0; /* Implementation of 'encoder' */ static PyObject *__pyx_builtin_open; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_exit; static const char __pyx_k_[] = ""; static const char __pyx_k_0[] = "0"; static const char __pyx_k_b[] = "b"; static const char __pyx_k_i[] = "i"; static const char __pyx_k_j[] = "j"; static const char __pyx_k_n[] = "n"; static const char __pyx_k_rb[] = "rb"; static const char __pyx_k_t1[] = "t1"; static const char __pyx_k_t2[] = "t2"; static const char __pyx_k_PIL[] = "PIL"; static const char __pyx_k_RGB[] = "RGB"; static const char __pyx_k_end[] = "end"; static const char __pyx_k_new[] = "new"; static const char __pyx_k_bstr[] = "bstr"; static const char __pyx_k_exit[] = "exit"; static const char __pyx_k_file[] = "file"; static const char __pyx_k_load[] = "load"; 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_read[] = "read"; static const char __pyx_k_save[] = "save"; static const char __pyx_k_size[] = "size"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_Image[] = "Image"; static const char __pyx_k_close[] = "close"; static const char __pyx_k_embed[] = "embed"; static const char __pyx_k_pixel[] = "pixel"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_utf_8[] = "utf-8"; static const char __pyx_k_x_len[] = "x_len"; static const char __pyx_k_y_len[] = "y_len"; static const char __pyx_k_decode[] = "decode"; static const char __pyx_k_hexstr[] = "hexstr"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_nx_len[] = "nx_len"; static const char __pyx_k_random[] = "random"; static const char __pyx_k_encoder[] = "encoder"; static const char __pyx_k_hexlify[] = "hexlify"; static const char __pyx_k_randint[] = "randint"; static const char __pyx_k_bin_data[] = "bin_data"; static const char __pyx_k_binascii[] = "binascii"; static const char __pyx_k_flag_txt[] = "./flag.txt"; static const char __pyx_k_Work_done[] = "Work done!"; static const char __pyx_k_new_image[] = "new_image"; static const char __pyx_k_pixel_bit[] = "pixel_bit"; static const char __pyx_k_base_image[] = "base_image"; static const char __pyx_k_encoder_py[] = "encoder.py"; static const char __pyx_k_full_pixel[] = "full_pixel"; static const char __pyx_k_new_matrix[] = "new_matrix"; static const char __pyx_k_base_matrix[] = "base_matrix"; static const char __pyx_k_data_to_hide[] = "data_to_hide"; static const char __pyx_k_original_png[] = "./original.png"; static const char __pyx_k_symatrix_png[] = "./symatrix.png"; static const char __pyx_k_binary_string[] = "binary_string"; static const char __pyx_k_next_position[] = "next_position"; static const char __pyx_k_Embedding_file[] = "Embedding file..."; static const char __pyx_k_remaining_bits[] = "remaining_bits"; static const char __pyx_k_hexstr_to_binstr[] = "hexstr_to_binstr"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static PyObject *__pyx_kp_s_; static PyObject *__pyx_kp_s_0; static PyObject *__pyx_kp_s_Embedding_file; static PyObject *__pyx_n_s_Image; static PyObject *__pyx_n_s_PIL; static PyObject *__pyx_n_s_RGB; static PyObject *__pyx_kp_s_Work_done; static PyObject *__pyx_n_s_b; static PyObject *__pyx_n_s_base_image; static PyObject *__pyx_n_s_base_matrix; static PyObject *__pyx_n_s_bin_data; static PyObject *__pyx_n_s_binary_string; static PyObject *__pyx_n_s_binascii; static PyObject *__pyx_n_s_bstr; static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_data_to_hide; static PyObject *__pyx_n_s_decode; static PyObject *__pyx_n_s_embed; static PyObject *__pyx_n_s_encoder; static PyObject *__pyx_kp_s_encoder_py; static PyObject *__pyx_n_s_end; static PyObject *__pyx_n_s_exit; static PyObject *__pyx_n_s_file; static PyObject *__pyx_kp_s_flag_txt; static PyObject *__pyx_n_s_full_pixel; static PyObject *__pyx_n_s_hexlify; static PyObject *__pyx_n_s_hexstr; static PyObject *__pyx_n_s_hexstr_to_binstr; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_j; static PyObject *__pyx_n_s_load; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_n; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_new; static PyObject *__pyx_n_s_new_image; static PyObject *__pyx_n_s_new_matrix; static PyObject *__pyx_n_s_next_position; static PyObject *__pyx_n_s_nx_len; static PyObject *__pyx_n_s_open; static PyObject *__pyx_kp_s_original_png; static PyObject *__pyx_n_s_pixel; static PyObject *__pyx_n_s_pixel_bit; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_randint; static PyObject *__pyx_n_s_random; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_rb; static PyObject *__pyx_n_s_read; static PyObject *__pyx_n_s_remaining_bits; static PyObject *__pyx_n_s_save; static PyObject *__pyx_n_s_size; static PyObject *__pyx_kp_s_symatrix_png; static PyObject *__pyx_n_s_t1; static PyObject *__pyx_n_s_t2; static PyObject *__pyx_n_s_test; static PyObject *__pyx_kp_s_utf_8; static PyObject *__pyx_n_s_x_len; static PyObject *__pyx_n_s_y_len; static PyObject *__pyx_pf_7encoder_hexstr_to_binstr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hexstr); /* proto */ static PyObject *__pyx_pf_7encoder_2pixel_bit(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_b); /* proto */ static PyObject *__pyx_pf_7encoder_4embed(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_t1, PyObject *__pyx_v_t2); /* proto */ static PyObject *__pyx_pf_7encoder_6full_pixel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pixel); /* proto */ static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_2; static PyObject *__pyx_int_16; static PyObject *__pyx_int_17; static PyObject *__pyx_int_255; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__8; static PyObject *__pyx_slice__14; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__11; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__13; static PyObject *__pyx_tuple__15; static PyObject *__pyx_tuple__16; static PyObject *__pyx_codeobj__3; static PyObject *__pyx_codeobj__5; static PyObject *__pyx_codeobj__7; static PyObject *__pyx_codeobj__9; /* Late includes */ /* "encoder.py":5 * import binascii * * def hexstr_to_binstr(hexstr): # <<<<<<<<<<<<<< * n = int(hexstr, 16) * bstr = '' */ /* Python wrapper */ static PyObject *__pyx_pw_7encoder_1hexstr_to_binstr(PyObject *__pyx_self, PyObject *__pyx_v_hexstr); /*proto*/ static PyMethodDef __pyx_mdef_7encoder_1hexstr_to_binstr = {"hexstr_to_binstr", (PyCFunction)__pyx_pw_7encoder_1hexstr_to_binstr, METH_O, 0}; static PyObject *__pyx_pw_7encoder_1hexstr_to_binstr(PyObject *__pyx_self, PyObject *__pyx_v_hexstr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("hexstr_to_binstr (wrapper)", 0); __pyx_r = __pyx_pf_7encoder_hexstr_to_binstr(__pyx_self, ((PyObject *)__pyx_v_hexstr)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7encoder_hexstr_to_binstr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hexstr) { PyObject *__pyx_v_n = NULL; PyObject *__pyx_v_bstr = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; Py_ssize_t __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("hexstr_to_binstr", 0); /* "encoder.py":6 * * def hexstr_to_binstr(hexstr): * n = int(hexstr, 16) # <<<<<<<<<<<<<< * bstr = '' * while n > 0: */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_hexstr); __Pyx_GIVEREF(__pyx_v_hexstr); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_hexstr); __Pyx_INCREF(__pyx_int_16); __Pyx_GIVEREF(__pyx_int_16); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_16); __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_n = __pyx_t_2; __pyx_t_2 = 0; /* "encoder.py":7 * def hexstr_to_binstr(hexstr): * n = int(hexstr, 16) * bstr = '' # <<<<<<<<<<<<<< * while n > 0: * bstr = str(n % 2) + bstr */ __Pyx_INCREF(__pyx_kp_s_); __pyx_v_bstr = __pyx_kp_s_; /* "encoder.py":8 * n = int(hexstr, 16) * bstr = '' * while n > 0: # <<<<<<<<<<<<<< * bstr = str(n % 2) + bstr * n = n >> 1 */ while (1) { __pyx_t_2 = PyObject_RichCompare(__pyx_v_n, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_3) break; /* "encoder.py":9 * bstr = '' * while n > 0: * bstr = str(n % 2) + bstr # <<<<<<<<<<<<<< * n = n >> 1 * if len(bstr) % 8 != 0: */ __pyx_t_2 = __Pyx_PyInt_RemainderObjC(__pyx_v_n, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_bstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_bstr, __pyx_t_2); __pyx_t_2 = 0; /* "encoder.py":10 * while n > 0: * bstr = str(n % 2) + bstr * n = n >> 1 # <<<<<<<<<<<<<< * if len(bstr) % 8 != 0: * bstr = '0' + bstr */ __pyx_t_2 = __Pyx_PyInt_RshiftObjC(__pyx_v_n, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_n, __pyx_t_2); __pyx_t_2 = 0; } /* "encoder.py":11 * bstr = str(n % 2) + bstr * n = n >> 1 * if len(bstr) % 8 != 0: # <<<<<<<<<<<<<< * bstr = '0' + bstr * return bstr */ __pyx_t_4 = PyObject_Length(__pyx_v_bstr); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 11, __pyx_L1_error) __pyx_t_3 = ((__Pyx_mod_Py_ssize_t(__pyx_t_4, 8) != 0) != 0); if (__pyx_t_3) { /* "encoder.py":12 * n = n >> 1 * if len(bstr) % 8 != 0: * bstr = '0' + bstr # <<<<<<<<<<<<<< * return bstr * */ __pyx_t_2 = PyNumber_Add(__pyx_kp_s_0, __pyx_v_bstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_bstr, __pyx_t_2); __pyx_t_2 = 0; /* "encoder.py":11 * bstr = str(n % 2) + bstr * n = n >> 1 * if len(bstr) % 8 != 0: # <<<<<<<<<<<<<< * bstr = '0' + bstr * return bstr */ } /* "encoder.py":13 * if len(bstr) % 8 != 0: * bstr = '0' + bstr * return bstr # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_bstr); __pyx_r = __pyx_v_bstr; goto __pyx_L0; /* "encoder.py":5 * import binascii * * def hexstr_to_binstr(hexstr): # <<<<<<<<<<<<<< * n = int(hexstr, 16) * bstr = '' */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("encoder.hexstr_to_binstr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_n); __Pyx_XDECREF(__pyx_v_bstr); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "encoder.py":16 * * * def pixel_bit(b): # <<<<<<<<<<<<<< * return tuple((0, 1, b)) * */ /* Python wrapper */ static PyObject *__pyx_pw_7encoder_3pixel_bit(PyObject *__pyx_self, PyObject *__pyx_v_b); /*proto*/ static PyMethodDef __pyx_mdef_7encoder_3pixel_bit = {"pixel_bit", (PyCFunction)__pyx_pw_7encoder_3pixel_bit, METH_O, 0}; static PyObject *__pyx_pw_7encoder_3pixel_bit(PyObject *__pyx_self, PyObject *__pyx_v_b) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pixel_bit (wrapper)", 0); __pyx_r = __pyx_pf_7encoder_2pixel_bit(__pyx_self, ((PyObject *)__pyx_v_b)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7encoder_2pixel_bit(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_b) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pixel_bit", 0); /* "encoder.py":17 * * def pixel_bit(b): * return tuple((0, 1, b)) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_1); __Pyx_INCREF(__pyx_v_b); __Pyx_GIVEREF(__pyx_v_b); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_b); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "encoder.py":16 * * * def pixel_bit(b): # <<<<<<<<<<<<<< * return tuple((0, 1, b)) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("encoder.pixel_bit", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "encoder.py":20 * * * def embed(t1, t2): # <<<<<<<<<<<<<< * return tuple((t1[0] + t2[0], t1[1] + t2[1], t1[2] + t2[2])) * */ /* Python wrapper */ static PyObject *__pyx_pw_7encoder_5embed(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_7encoder_5embed = {"embed", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7encoder_5embed, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7encoder_5embed(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_t1 = 0; PyObject *__pyx_v_t2 = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("embed (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t1,&__pyx_n_s_t2,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); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("embed", 1, 2, 2, 1); __PYX_ERR(0, 20, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "embed") < 0)) __PYX_ERR(0, 20, __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_t1 = values[0]; __pyx_v_t2 = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("embed", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 20, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("encoder.embed", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7encoder_4embed(__pyx_self, __pyx_v_t1, __pyx_v_t2); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7encoder_4embed(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_t1, PyObject *__pyx_v_t2) { 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_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("embed", 0); /* "encoder.py":21 * * def embed(t1, t2): * return tuple((t1[0] + t2[0], t1[1] + t2[1], t1[2] + t2[2])) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_t2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __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_t_2 = __Pyx_GetItemInt(__pyx_v_t1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_t2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "encoder.py":20 * * * def embed(t1, t2): # <<<<<<<<<<<<<< * return tuple((t1[0] + t2[0], t1[1] + t2[1], t1[2] + t2[2])) * */ /* 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("encoder.embed", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "encoder.py":24 * * * def full_pixel(pixel): # <<<<<<<<<<<<<< * return pixel[1] == 255 or pixel[2] == 255 * */ /* Python wrapper */ static PyObject *__pyx_pw_7encoder_7full_pixel(PyObject *__pyx_self, PyObject *__pyx_v_pixel); /*proto*/ static PyMethodDef __pyx_mdef_7encoder_7full_pixel = {"full_pixel", (PyCFunction)__pyx_pw_7encoder_7full_pixel, METH_O, 0}; static PyObject *__pyx_pw_7encoder_7full_pixel(PyObject *__pyx_self, PyObject *__pyx_v_pixel) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("full_pixel (wrapper)", 0); __pyx_r = __pyx_pf_7encoder_6full_pixel(__pyx_self, ((PyObject *)__pyx_v_pixel)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7encoder_6full_pixel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pixel) { 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_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("full_pixel", 0); /* "encoder.py":25 * * def full_pixel(pixel): * return pixel[1] == 255 or pixel[2] == 255 # <<<<<<<<<<<<<< * * print("Embedding file...") */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_pixel, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_255, 0xFF, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 25, __pyx_L1_error) if (!__pyx_t_4) { __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = __pyx_t_3; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L3_bool_binop_done; } __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pixel, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_255, 0xFF, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "encoder.py":24 * * * def full_pixel(pixel): # <<<<<<<<<<<<<< * return pixel[1] == 255 or pixel[2] == 255 * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("encoder.full_pixel", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ static int __pyx_pymod_exec_encoder(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec_encoder}, {0, NULL} }; #endif static struct PyModuleDef __pyx_moduledef = { PyModuleDef_HEAD_INIT, "encoder", 0, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ #else -1, /* m_size */ #endif __pyx_methods /* m_methods */, #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_moduledef_slots, /* m_slots */ #else NULL, /* m_reload */ #endif NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif #ifndef CYTHON_SMALL_CODE #if defined(__clang__) #define CYTHON_SMALL_CODE #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) #define CYTHON_SMALL_CODE __attribute__((cold)) #else #define CYTHON_SMALL_CODE #endif #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, {&__pyx_kp_s_0, __pyx_k_0, sizeof(__pyx_k_0), 0, 0, 1, 0}, {&__pyx_kp_s_Embedding_file, __pyx_k_Embedding_file, sizeof(__pyx_k_Embedding_file), 0, 0, 1, 0}, {&__pyx_n_s_Image, __pyx_k_Image, sizeof(__pyx_k_Image), 0, 0, 1, 1}, {&__pyx_n_s_PIL, __pyx_k_PIL, sizeof(__pyx_k_PIL), 0, 0, 1, 1}, {&__pyx_n_s_RGB, __pyx_k_RGB, sizeof(__pyx_k_RGB), 0, 0, 1, 1}, {&__pyx_kp_s_Work_done, __pyx_k_Work_done, sizeof(__pyx_k_Work_done), 0, 0, 1, 0}, {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1}, {&__pyx_n_s_base_image, __pyx_k_base_image, sizeof(__pyx_k_base_image), 0, 0, 1, 1}, {&__pyx_n_s_base_matrix, __pyx_k_base_matrix, sizeof(__pyx_k_base_matrix), 0, 0, 1, 1}, {&__pyx_n_s_bin_data, __pyx_k_bin_data, sizeof(__pyx_k_bin_data), 0, 0, 1, 1}, {&__pyx_n_s_binary_string, __pyx_k_binary_string, sizeof(__pyx_k_binary_string), 0, 0, 1, 1}, {&__pyx_n_s_binascii, __pyx_k_binascii, sizeof(__pyx_k_binascii), 0, 0, 1, 1}, {&__pyx_n_s_bstr, __pyx_k_bstr, sizeof(__pyx_k_bstr), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_data_to_hide, __pyx_k_data_to_hide, sizeof(__pyx_k_data_to_hide), 0, 0, 1, 1}, {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, {&__pyx_n_s_embed, __pyx_k_embed, sizeof(__pyx_k_embed), 0, 0, 1, 1}, {&__pyx_n_s_encoder, __pyx_k_encoder, sizeof(__pyx_k_encoder), 0, 0, 1, 1}, {&__pyx_kp_s_encoder_py, __pyx_k_encoder_py, sizeof(__pyx_k_encoder_py), 0, 0, 1, 0}, {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1}, {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1}, {&__pyx_kp_s_flag_txt, __pyx_k_flag_txt, sizeof(__pyx_k_flag_txt), 0, 0, 1, 0}, {&__pyx_n_s_full_pixel, __pyx_k_full_pixel, sizeof(__pyx_k_full_pixel), 0, 0, 1, 1}, {&__pyx_n_s_hexlify, __pyx_k_hexlify, sizeof(__pyx_k_hexlify), 0, 0, 1, 1}, {&__pyx_n_s_hexstr, __pyx_k_hexstr, sizeof(__pyx_k_hexstr), 0, 0, 1, 1}, {&__pyx_n_s_hexstr_to_binstr, __pyx_k_hexstr_to_binstr, sizeof(__pyx_k_hexstr_to_binstr), 0, 0, 1, 1}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1}, {&__pyx_n_s_load, __pyx_k_load, sizeof(__pyx_k_load), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 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_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, {&__pyx_n_s_new_image, __pyx_k_new_image, sizeof(__pyx_k_new_image), 0, 0, 1, 1}, {&__pyx_n_s_new_matrix, __pyx_k_new_matrix, sizeof(__pyx_k_new_matrix), 0, 0, 1, 1}, {&__pyx_n_s_next_position, __pyx_k_next_position, sizeof(__pyx_k_next_position), 0, 0, 1, 1}, {&__pyx_n_s_nx_len, __pyx_k_nx_len, sizeof(__pyx_k_nx_len), 0, 0, 1, 1}, {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1}, {&__pyx_kp_s_original_png, __pyx_k_original_png, sizeof(__pyx_k_original_png), 0, 0, 1, 0}, {&__pyx_n_s_pixel, __pyx_k_pixel, sizeof(__pyx_k_pixel), 0, 0, 1, 1}, {&__pyx_n_s_pixel_bit, __pyx_k_pixel_bit, sizeof(__pyx_k_pixel_bit), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_randint, __pyx_k_randint, sizeof(__pyx_k_randint), 0, 0, 1, 1}, {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_rb, __pyx_k_rb, sizeof(__pyx_k_rb), 0, 0, 1, 1}, {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1}, {&__pyx_n_s_remaining_bits, __pyx_k_remaining_bits, sizeof(__pyx_k_remaining_bits), 0, 0, 1, 1}, {&__pyx_n_s_save, __pyx_k_save, sizeof(__pyx_k_save), 0, 0, 1, 1}, {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, {&__pyx_kp_s_symatrix_png, __pyx_k_symatrix_png, sizeof(__pyx_k_symatrix_png), 0, 0, 1, 0}, {&__pyx_n_s_t1, __pyx_k_t1, sizeof(__pyx_k_t1), 0, 0, 1, 1}, {&__pyx_n_s_t2, __pyx_k_t2, sizeof(__pyx_k_t2), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, {&__pyx_n_s_x_len, __pyx_k_x_len, sizeof(__pyx_k_x_len), 0, 0, 1, 1}, {&__pyx_n_s_y_len, __pyx_k_y_len, sizeof(__pyx_k_y_len), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(0, 29, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 48, __pyx_L1_error) __pyx_builtin_exit = __Pyx_GetBuiltinName(__pyx_n_s_exit); if (!__pyx_builtin_exit) __PYX_ERR(0, 68, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "encoder.py":5 * import binascii * * def hexstr_to_binstr(hexstr): # <<<<<<<<<<<<<< * n = int(hexstr, 16) * bstr = '' */ __pyx_tuple__2 = PyTuple_Pack(3, __pyx_n_s_hexstr, __pyx_n_s_n, __pyx_n_s_bstr); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_encoder_py, __pyx_n_s_hexstr_to_binstr, 5, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 5, __pyx_L1_error) /* "encoder.py":16 * * * def pixel_bit(b): # <<<<<<<<<<<<<< * return tuple((0, 1, b)) * */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_encoder_py, __pyx_n_s_pixel_bit, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 16, __pyx_L1_error) /* "encoder.py":20 * * * def embed(t1, t2): # <<<<<<<<<<<<<< * return tuple((t1[0] + t2[0], t1[1] + t2[1], t1[2] + t2[2])) * */ __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_s_t1, __pyx_n_s_t2); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_encoder_py, __pyx_n_s_embed, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 20, __pyx_L1_error) /* "encoder.py":24 * * * def full_pixel(pixel): # <<<<<<<<<<<<<< * return pixel[1] == 255 or pixel[2] == 255 * */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_pixel); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_encoder_py, __pyx_n_s_full_pixel, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 24, __pyx_L1_error) /* "encoder.py":29 * print("Embedding file...") * * bin_data = open("./flag.txt", 'rb').read() # <<<<<<<<<<<<<< * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') * */ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_s_flag_txt, __pyx_n_s_rb); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); /* "encoder.py":30 * * bin_data = open("./flag.txt", 'rb').read() * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') # <<<<<<<<<<<<<< * * base_image = Image.open("./original.png") */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_utf_8); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); /* "encoder.py":32 * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') * * base_image = Image.open("./original.png") # <<<<<<<<<<<<<< * * x_len, y_len = base_image.size */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_original_png); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); /* "encoder.py":55 * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) # <<<<<<<<<<<<<< * binary_string = binary_string[1:] * remaining_bits -= 1 */ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_17); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); /* "encoder.py":56 * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) * binary_string = binary_string[1:] # <<<<<<<<<<<<<< * remaining_bits -= 1 * else: */ __pyx_slice__14 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__14)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__14); __Pyx_GIVEREF(__pyx_slice__14); /* "encoder.py":63 * * * new_image.save("./symatrix.png") # <<<<<<<<<<<<<< * new_image.close() * base_image.close() */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_symatrix_png); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "encoder.py":68 * * print("Work done!") * exit(1) # <<<<<<<<<<<<<< */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_17 = PyInt_FromLong(17); if (unlikely(!__pyx_int_17)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_255 = PyInt_FromLong(255); if (unlikely(!__pyx_int_255)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ static int __Pyx_modinit_global_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); /*--- Variable import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } #ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC #elif PY_MAJOR_VERSION < 3 #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" void #else #define __Pyx_PyMODINIT_FUNC void #endif #else #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else #define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif #if PY_MAJOR_VERSION < 3 __Pyx_PyMODINIT_FUNC initencoder(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC initencoder(void) #else __Pyx_PyMODINIT_FUNC PyInit_encoder(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC PyInit_encoder(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); } static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { #if PY_VERSION_HEX >= 0x030700A1 static PY_INT64_T main_interpreter_id = -1; PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); if (main_interpreter_id == -1) { main_interpreter_id = current_id; return (unlikely(current_id == -1)) ? -1 : 0; } else if (unlikely(main_interpreter_id != current_id)) #else static PyInterpreterState *main_interpreter = NULL; PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; if (!main_interpreter) { main_interpreter = current_interpreter; } else if (unlikely(main_interpreter != current_interpreter)) #endif { PyErr_SetString( PyExc_ImportError, "Interpreter change detected - this module can only be loaded into one interpreter per process."); return -1; } return 0; } static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { if (allow_none || value != Py_None) { result = PyDict_SetItemString(moddict, to_name, value); } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); } else { result = -1; } return result; } static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; if (__Pyx_check_single_interpreter()) return NULL; if (__pyx_m) return __Pyx_NewRef(__pyx_m); modname = PyObject_GetAttrString(spec, "name"); if (unlikely(!modname)) goto bad; module = PyModule_NewObject(modname); Py_DECREF(modname); if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; return module; bad: Py_XDECREF(module); return NULL; } static CYTHON_SMALL_CODE int __pyx_pymod_exec_encoder(PyObject *__pyx_pyinit_module) #endif #endif { 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; PyObject *(*__pyx_t_7)(PyObject *); Py_ssize_t __pyx_t_8; PyObject *(*__pyx_t_9)(PyObject *); PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; PyObject *__pyx_t_16 = NULL; int __pyx_t_17; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; PyErr_SetString(PyExc_RuntimeError, "Module 'encoder' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif #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("__Pyx_PyMODINIT_FUNC PyInit_encoder(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS PyEval_InitThreads(); #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("encoder", __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(0, 1, __pyx_L1_error) #endif __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_b); __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_cython_runtime); if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 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(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_encoder) { if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "encoder")) { if (unlikely(PyDict_SetItemString(modules, "encoder", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); (void)__Pyx_modinit_type_init_code(); (void)__Pyx_modinit_type_import_code(); (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "encoder.py":1 * from PIL import Image # <<<<<<<<<<<<<< * from random import randint * import binascii */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Image); __Pyx_GIVEREF(__pyx_n_s_Image); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Image); __pyx_t_2 = __Pyx_Import(__pyx_n_s_PIL, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Image, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "encoder.py":2 * from PIL import Image * from random import randint # <<<<<<<<<<<<<< * import binascii * */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_randint); __Pyx_GIVEREF(__pyx_n_s_randint); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_randint); __pyx_t_1 = __Pyx_Import(__pyx_n_s_random, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_randint, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":3 * from PIL import Image * from random import randint * import binascii # <<<<<<<<<<<<<< * * def hexstr_to_binstr(hexstr): */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_binascii, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_binascii, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":5 * import binascii * * def hexstr_to_binstr(hexstr): # <<<<<<<<<<<<<< * n = int(hexstr, 16) * bstr = '' */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7encoder_1hexstr_to_binstr, 0, __pyx_n_s_hexstr_to_binstr, NULL, __pyx_n_s_encoder, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_hexstr_to_binstr, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":16 * * * def pixel_bit(b): # <<<<<<<<<<<<<< * return tuple((0, 1, b)) * */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7encoder_3pixel_bit, 0, __pyx_n_s_pixel_bit, NULL, __pyx_n_s_encoder, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pixel_bit, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":20 * * * def embed(t1, t2): # <<<<<<<<<<<<<< * return tuple((t1[0] + t2[0], t1[1] + t2[1], t1[2] + t2[2])) * */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7encoder_5embed, 0, __pyx_n_s_embed, NULL, __pyx_n_s_encoder, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_embed, __pyx_t_1) < 0) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":24 * * * def full_pixel(pixel): # <<<<<<<<<<<<<< * return pixel[1] == 255 or pixel[2] == 255 * */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7encoder_7full_pixel, 0, __pyx_n_s_full_pixel, NULL, __pyx_n_s_encoder, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_full_pixel, __pyx_t_1) < 0) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":27 * return pixel[1] == 255 or pixel[2] == 255 * * print("Embedding file...") # <<<<<<<<<<<<<< * * bin_data = open("./flag.txt", 'rb').read() */ if (__Pyx_PrintOne(0, __pyx_kp_s_Embedding_file) < 0) __PYX_ERR(0, 27, __pyx_L1_error) /* "encoder.py":29 * print("Embedding file...") * * bin_data = open("./flag.txt", 'rb').read() # <<<<<<<<<<<<<< * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') * */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_bin_data, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":30 * * bin_data = open("./flag.txt", 'rb').read() * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') # <<<<<<<<<<<<<< * * base_image = Image.open("./original.png") */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_binascii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_hexlify); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_bin_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_data_to_hide, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "encoder.py":32 * data_to_hide = binascii.hexlify(bin_data).decode('utf-8') * * base_image = Image.open("./original.png") # <<<<<<<<<<<<<< * * x_len, y_len = base_image.size */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Image); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_base_image, __pyx_t_3) < 0) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "encoder.py":34 * base_image = Image.open("./original.png") * * x_len, y_len = base_image.size # <<<<<<<<<<<<<< * nx_len = x_len * 2 * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_base_image); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 34, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #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(0, 34, __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_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L2_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L2_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 34, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L3_unpacking_done; __pyx_L2_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 34, __pyx_L1_error) __pyx_L3_unpacking_done:; } if (PyDict_SetItem(__pyx_d, __pyx_n_s_x_len, __pyx_t_3) < 0) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_y_len, __pyx_t_2) < 0) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "encoder.py":35 * * x_len, y_len = base_image.size * nx_len = x_len * 2 # <<<<<<<<<<<<<< * * new_image = Image.new("RGB", (nx_len, y_len)) */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_x_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_int_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_nx_len, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "encoder.py":37 * nx_len = x_len * 2 * * new_image = Image.new("RGB", (nx_len, y_len)) # <<<<<<<<<<<<<< * * base_matrix = base_image.load() */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nx_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_y_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __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_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_RGB); __Pyx_GIVEREF(__pyx_n_s_RGB); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_RGB); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __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; if (PyDict_SetItem(__pyx_d, __pyx_n_s_new_image, __pyx_t_4) < 0) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "encoder.py":39 * new_image = Image.new("RGB", (nx_len, y_len)) * * base_matrix = base_image.load() # <<<<<<<<<<<<<< * new_matrix = new_image.load() * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_base_image); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_load); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_base_matrix, __pyx_t_4) < 0) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "encoder.py":40 * * base_matrix = base_image.load() * new_matrix = new_image.load() # <<<<<<<<<<<<<< * * binary_string = hexstr_to_binstr(data_to_hide) */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_new_image); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_load); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_new_matrix, __pyx_t_4) < 0) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "encoder.py":42 * new_matrix = new_image.load() * * binary_string = hexstr_to_binstr(data_to_hide) # <<<<<<<<<<<<<< * remaining_bits = len(binary_string) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_hexstr_to_binstr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_data_to_hide); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __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; if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_string, __pyx_t_1) < 0) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":43 * * binary_string = hexstr_to_binstr(data_to_hide) * remaining_bits = len(binary_string) # <<<<<<<<<<<<<< * * nx_len = nx_len - 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_binary_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_remaining_bits, __pyx_t_1) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":45 * remaining_bits = len(binary_string) * * nx_len = nx_len - 1 # <<<<<<<<<<<<<< * next_position = 0 * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_nx_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_nx_len, __pyx_t_3) < 0) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "encoder.py":46 * * nx_len = nx_len - 1 * next_position = 0 # <<<<<<<<<<<<<< * * for i in range(0, y_len): */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_next_position, __pyx_int_0) < 0) __PYX_ERR(0, 46, __pyx_L1_error) /* "encoder.py":48 * next_position = 0 * * for i in range(0, y_len): # <<<<<<<<<<<<<< * for j in range(0, x_len): * */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_y_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 48, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; 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_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 48, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 48, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 48, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if (PyDict_SetItem(__pyx_d, __pyx_n_s_i, __pyx_t_3) < 0) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "encoder.py":49 * * for i in range(0, y_len): * for j in range(0, x_len): # <<<<<<<<<<<<<< * * pixel = new_matrix[j, i] = base_matrix[j, i] */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_x_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 49, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 49, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 49, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 49, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if (PyDict_SetItem(__pyx_d, __pyx_n_s_j, __pyx_t_3) < 0) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "encoder.py":51 * for j in range(0, x_len): * * pixel = new_matrix[j, i] = base_matrix[j, i] # <<<<<<<<<<<<<< * * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_base_matrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10); __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pixel, __pyx_t_10) < 0) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_new_matrix); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_j); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_2); __pyx_t_3 = 0; __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_12, __pyx_t_10) < 0)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* "encoder.py":53 * pixel = new_matrix[j, i] = base_matrix[j, i] * * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): # <<<<<<<<<<<<<< * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_remaining_bits); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (__pyx_t_14) { } else { __pyx_t_13 = __pyx_t_14; goto __pyx_L9_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_next_position); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = PyObject_RichCompare(__pyx_t_12, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_14) { } else { __pyx_t_13 = __pyx_t_14; goto __pyx_L9_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_full_pixel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pixel); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_10 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_15 = ((!__pyx_t_14) != 0); __pyx_t_13 = __pyx_t_15; __pyx_L9_bool_binop_done:; if (__pyx_t_13) { /* "encoder.py":54 * * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) # <<<<<<<<<<<<<< * next_position = randint(1, 17) * binary_string = binary_string[1:] */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_embed); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pixel_bit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_binary_string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_16 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_11 = (__pyx_t_16) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_16, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pixel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_17 = 0; if (CYTHON_UNPACK_METHODS && unlikely(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); __pyx_t_17 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_2}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_11, __pyx_t_2}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_16 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_17, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_17, __pyx_t_2); __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_new_matrix); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_nx_len); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = PyNumber_Subtract(__pyx_t_16, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_2); __pyx_t_11 = 0; __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_16, __pyx_t_10) < 0)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* "encoder.py":55 * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) # <<<<<<<<<<<<<< * binary_string = binary_string[1:] * remaining_bits -= 1 */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_randint); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_next_position, __pyx_t_16) < 0) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* "encoder.py":56 * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) * binary_string = binary_string[1:] # <<<<<<<<<<<<<< * remaining_bits -= 1 * else: */ __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_binary_string); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_16, 1, 0, NULL, NULL, &__pyx_slice__14, 1, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_string, __pyx_t_10) < 0) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* "encoder.py":57 * next_position = randint(1, 17) * binary_string = binary_string[1:] * remaining_bits -= 1 # <<<<<<<<<<<<<< * else: * new_matrix[nx_len - j, i] = pixel */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_remaining_bits); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_16 = __Pyx_PyInt_SubtractObjC(__pyx_t_10, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_remaining_bits, __pyx_t_16) < 0) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* "encoder.py":53 * pixel = new_matrix[j, i] = base_matrix[j, i] * * if remaining_bits > 0 and next_position <= 0 and not full_pixel(pixel): # <<<<<<<<<<<<<< * new_matrix[nx_len - j, i] = embed(pixel_bit(int(binary_string[0])),pixel) * next_position = randint(1, 17) */ goto __pyx_L8; } /* "encoder.py":59 * remaining_bits -= 1 * else: * new_matrix[nx_len - j, i] = pixel # <<<<<<<<<<<<<< * next_position -= 1 * */ /*else*/ { __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_pixel); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_new_matrix); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_nx_len); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = PyNumber_Subtract(__pyx_t_12, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_2); __pyx_t_11 = 0; __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_t_10, __pyx_t_12, __pyx_t_16) < 0)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* "encoder.py":60 * else: * new_matrix[nx_len - j, i] = pixel * next_position -= 1 # <<<<<<<<<<<<<< * * */ __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_next_position); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_12 = __Pyx_PyInt_SubtractObjC(__pyx_t_16, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_next_position, __pyx_t_12) < 0) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __pyx_L8:; /* "encoder.py":49 * * for i in range(0, y_len): * for j in range(0, x_len): # <<<<<<<<<<<<<< * * pixel = new_matrix[j, i] = base_matrix[j, i] */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "encoder.py":48 * next_position = 0 * * for i in range(0, y_len): # <<<<<<<<<<<<<< * for j in range(0, x_len): * */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":63 * * * new_image.save("./symatrix.png") # <<<<<<<<<<<<<< * new_image.close() * base_image.close() */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_new_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_save); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":64 * * new_image.save("./symatrix.png") * new_image.close() # <<<<<<<<<<<<<< * base_image.close() * */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_new_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":65 * new_image.save("./symatrix.png") * new_image.close() * base_image.close() # <<<<<<<<<<<<<< * * print("Work done!") */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_base_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":67 * base_image.close() * * print("Work done!") # <<<<<<<<<<<<<< * exit(1) */ if (__Pyx_PrintOne(0, __pyx_kp_s_Work_done) < 0) __PYX_ERR(0, 67, __pyx_L1_error) /* "encoder.py":68 * * print("Work done!") * exit(1) # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_exit, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "encoder.py":1 * from PIL import Image # <<<<<<<<<<<<<< * from random import randint * import binascii */ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Wrapped vars code ---*/ 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_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_16); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init encoder", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_CLEAR(__pyx_m); } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init encoder"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if CYTHON_PEP489_MULTI_PHASE_INIT return (__pyx_m != NULL) ? 0 : -1; #elif PY_MAJOR_VERSION >= 3 return __pyx_m; #else return; #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(modname); if (!m) goto end; p = PyObject_GetAttrString(m, "RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS 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); } #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; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = Py_TYPE(func)->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 /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY #if PY_MAJOR_VERSION < 3 || CYTHON_USE_PYLONG_INTERNALS #define __Pyx_PyInt_RemainderObjC_ZeroDivisionError(operand)\ if (unlikely(zerodivision_check && ((operand) == 0))) {\ PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");\ return NULL;\ } #endif static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { (void)inplace; (void)zerodivision_check; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); __Pyx_PyInt_RemainderObjC_ZeroDivisionError(b) x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyInt_FromLong(x); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_remainder(op1, op2); } } __Pyx_PyInt_RemainderObjC_ZeroDivisionError(b) x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla % llb; llx += ((llx != 0) & ((llx ^ llb) < 0)) * llb; return PyLong_FromLongLong(llx); #endif } #endif return (inplace ? PyNumber_InPlaceRemainder : PyNumber_Remainder)(op1, op2); } #endif /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); int flags = PyCFunction_GET_FLAGS(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); } else { return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); } } #endif /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = __Pyx_PyFrame_GetLocalsplus(f); for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif #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) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif if (likely(PyCFunction_Check(func))) { if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (__Pyx_PyFastCFunction_Check(func)) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } 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 /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RshiftObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { (void)inplace; (void)zerodivision_check; #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 if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_rshift(op1, op2); } } x = a >> b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla >> llb; return PyLong_FromLongLong(llx); #endif } #endif return (inplace ? PyNumber_InPlaceRshift : PyNumber_Rshift)(op1, op2); } #endif /* ModInt[Py_ssize_t] */ static CYTHON_INLINE Py_ssize_t __Pyx_mod_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) { Py_ssize_t r = a % b; r += ((r != 0) & ((r ^ b) < 0)) * b; return r; } /* 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); } /* 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_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 (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(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 (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(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 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_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, wrapped_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_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, wrapped_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_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely(__Pyx_is_valid_index(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(__Pyx_is_valid_index(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)); } /* PyIntCompare */ static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long 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 if (likely(PyLong_CheckExact(op1))) { int unequal; unsigned long uintval; Py_ssize_t size = Py_SIZE(op1); const digit* digits = ((PyLongObject*)op1)->ob_digit; if (intval == 0) { if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (intval < 0) { if (size >= 0) Py_RETURN_FALSE; intval = -intval; size = -size; } else { if (size <= 0) Py_RETURN_FALSE; } uintval = (unsigned long) intval; #if PyLong_SHIFT * 4 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 4)) { unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 3 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 3)) { unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 2 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 2)) { unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 1 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 1)) { unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); if (unequal == 0) 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)); } /* 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_MAJOR_VERSION < 3 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 ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_MAJOR_VERSION < 3 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, level); #endif } } bad: #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* 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; } /* CythonFunctionShared */ #include 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { Py_INCREF(op->func_qualname); return op->func_qualname; } static int __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { Py_INCREF(op->func_globals); return op->func_globals; } static PyObject * __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { Py_INCREF(Py_None); return Py_None; } static PyObject * __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { 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_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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, CYTHON_UNUSED void *context) { 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(PyCFunctionObject, 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 Py_INCREF(m->func_qualname); return m->func_qualname; #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_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { if (unlikely(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_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; op->defaults_getter = NULL; op->func_annotations = NULL; 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) { if (__Pyx_CyFunction_weakreflist(m) != NULL) PyObject_ClearWeakRefs((PyObject *) m); __Pyx_CyFunction_clear(m); PyObject_GC_Del(m); } static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) { PyObject_GC_UnTrack(m); __Pyx__CyFunction_dealloc(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) { #if PY_MAJOR_VERSION < 3 __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; #endif return __Pyx_PyMethod_New(func, obj, type); } static PyObject* __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromFormat("", op->func_qualname, (void *)op); #else return PyString_FromFormat("", PyString_AsString(op->func_qualname), (void *)op); #endif } static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction meth = f->m_ml->ml_meth; 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)(void*)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; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS arg0 = PyTuple_GET_ITEM(arg, 0); #else arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; #endif result = (*meth)(self, arg0); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(arg0); #endif 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; } static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); } static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { PyObject *result; __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { Py_ssize_t argc; PyObject *new_args; PyObject *self; argc = PyTuple_GET_SIZE(args); new_args = PyTuple_GetSlice(args, 1, argc); if (unlikely(!new_args)) return NULL; self = PyTuple_GetItem(args, 0); if (unlikely(!self)) { Py_DECREF(new_args); #if PY_MAJOR_VERSION > 2 PyErr_Format(PyExc_TypeError, "unbound method %.200S() needs an argument", cyfunc->func_qualname); #else PyErr_SetString(PyExc_TypeError, "unbound method needs an argument"); #endif return NULL; } result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); Py_DECREF(new_args); } else { result = __Pyx_CyFunction_Call(func, args, kw); } return result; } 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_CallAsMethod, 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 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, #endif }; static int __pyx_CyFunction_init(void) { __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); if (unlikely(__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 (unlikely(!m->defaults)) return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; m->defaults_size = size; 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); } /* CythonFunction */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { PyObject *op = __Pyx_CyFunction_Init( PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), ml, flags, qualname, closure, module, globals, code ); if (likely(op)) { PyObject_GC_Track(op); } return op; } /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #if defined(__Pyx_CyFunction_USED) && defined(NDEBUG) if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) #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 /* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; } static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { PyObject **dictptr = NULL; Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; if (offset) { #if CYTHON_COMPILING_IN_CPYTHON dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); #else dictptr = _PyObject_GetDictPtr(obj); #endif } return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; } static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { PyObject *dict = Py_TYPE(obj)->tp_dict; if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) return 0; return obj_dict_version == __Pyx_get_object_dict_version(obj); } #endif /* GetModuleGlobalName */ #if CYTHON_USE_DICT_VERSIONS static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) #else static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) #endif { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } else if (unlikely(PyErr_Occurred())) { return NULL; } #else result = PyDict_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } #endif #else result = PyObject_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } PyErr_Clear(); #endif return __Pyx_GetBuiltinName(name); } /* 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); } /* 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"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(__Pyx_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 } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } return __Pyx_IterFinish(); } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { (void)inplace; (void)zerodivision_check; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a - b); if (likely((x^a) >= 0 || (x^~b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; 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; #ifdef HAVE_LONG_LONG } 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; #endif } CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } x = a - b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla - llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("subtract", return NULL) result = ((double)a) - (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); } #endif /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { PyObject *runerr = NULL; Py_ssize_t key_value; PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; if (unlikely(!(m && m->sq_item))) { PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); return NULL; } key_value = __Pyx_PyIndex_AsSsize_t(index); if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); } if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { PyErr_Clear(); PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); } return NULL; } static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; if (likely(m && m->mp_subscript)) { return m->mp_subscript(obj, key); } return __Pyx_PyObject_GetIndex(obj, key); } #endif /* PyObjectCall2Args */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args, *result = NULL; #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyFunction_FastCall(function, args, 2); } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyCFunction_FastCall(function, args, 2); } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(arg1); PyTuple_SET_ITEM(args, 0, arg1); Py_INCREF(arg2); PyTuple_SET_ITEM(args, 1, arg2); Py_INCREF(function); result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); done: return result; } /* 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_USE_TYPE_SLOTS 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_USE_TYPE_SLOTS 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; } /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE 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 /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif if (unlikely(!__pyx_cython_runtime)) { return c_line; } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { __PYX_PY_DICT_LOOKUP_IF_MODIFIED( use_cline, *cython_runtime_dict, __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) } else #endif { PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); if (use_cline_obj) { use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; Py_DECREF(use_cline_obj); } else { PyErr_Clear(); use_cline = NULL; } } if (!use_cline) { c_line = 0; (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); return c_line; } #endif /* 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" #if PY_VERSION_HEX >= 0x030b00a6 #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = NULL; PyObject *py_funcname = NULL; #if PY_MAJOR_VERSION < 3 PyObject *py_srcfile = NULL; py_srcfile = PyString_FromString(filename); if (!py_srcfile) goto bad; #endif if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; funcname = PyUnicode_AsUTF8(py_funcname); if (!funcname) goto bad; #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); if (!py_funcname) goto bad; #endif } #if PY_MAJOR_VERSION < 3 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); #else py_code = PyCode_NewEmpty(filename, funcname, py_line); #endif Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline return py_code; bad: Py_XDECREF(py_funcname); #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_srcfile); #endif 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; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject *ptype, *pvalue, *ptraceback; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) { /* If the code object creation fails, then we should clear the fetched exception references and propagate the new exception */ Py_XDECREF(ptype); Py_XDECREF(pvalue); Py_XDECREF(ptraceback); goto bad; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( tstate, /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* Print */ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3 static PyObject *__Pyx_GetStdout(void) { PyObject *f = PySys_GetObject((char *)"stdout"); if (!f) { PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); } return f; } static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) { int i; if (!f) { if (!(f = __Pyx_GetStdout())) return -1; } Py_INCREF(f); for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) { PyObject* v; if (PyFile_SoftSpace(f, 1)) { if (PyFile_WriteString(" ", f) < 0) goto error; } v = PyTuple_GET_ITEM(arg_tuple, i); if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0) goto error; if (PyString_Check(v)) { char *s = PyString_AsString(v); Py_ssize_t len = PyString_Size(v); if (len > 0) { switch (s[len-1]) { case ' ': break; case '\f': case '\r': case '\n': case '\t': case '\v': PyFile_SoftSpace(f, 0); break; default: break; } } } } if (newline) { if (PyFile_WriteString("\n", f) < 0) goto error; PyFile_SoftSpace(f, 0); } Py_DECREF(f); return 0; error: Py_DECREF(f); return -1; } #else static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) { PyObject* kwargs = 0; PyObject* result = 0; PyObject* end_string; if (unlikely(!__pyx_print)) { __pyx_print = PyObject_GetAttr(__pyx_b, __pyx_n_s_print); if (!__pyx_print) return -1; } if (stream) { kwargs = PyDict_New(); if (unlikely(!kwargs)) return -1; if (unlikely(PyDict_SetItem(kwargs, __pyx_n_s_file, stream) < 0)) goto bad; if (!newline) { end_string = PyUnicode_FromStringAndSize(" ", 1); if (unlikely(!end_string)) goto bad; if (PyDict_SetItem(kwargs, __pyx_n_s_end, end_string) < 0) { Py_DECREF(end_string); goto bad; } Py_DECREF(end_string); } } else if (!newline) { if (unlikely(!__pyx_print_kwargs)) { __pyx_print_kwargs = PyDict_New(); if (unlikely(!__pyx_print_kwargs)) return -1; end_string = PyUnicode_FromStringAndSize(" ", 1); if (unlikely(!end_string)) return -1; if (PyDict_SetItem(__pyx_print_kwargs, __pyx_n_s_end, end_string) < 0) { Py_DECREF(end_string); return -1; } Py_DECREF(end_string); } kwargs = __pyx_print_kwargs; } result = PyObject_Call(__pyx_print, arg_tuple, kwargs); if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs)) Py_DECREF(kwargs); if (!result) return -1; Py_DECREF(result); return 0; bad: if (kwargs != __pyx_print_kwargs) Py_XDECREF(kwargs); return -1; } #endif /* PrintOne */ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3 static int __Pyx_PrintOne(PyObject* f, PyObject *o) { if (!f) { if (!(f = __Pyx_GetStdout())) return -1; } Py_INCREF(f); if (PyFile_SoftSpace(f, 0)) { if (PyFile_WriteString(" ", f) < 0) goto error; } if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0) goto error; if (PyFile_WriteString("\n", f) < 0) goto error; Py_DECREF(f); return 0; error: Py_DECREF(f); return -1; /* the line below is just to avoid C compiler * warnings about unused functions */ return __Pyx_Print(f, NULL, 0); } #else static int __Pyx_PrintOne(PyObject* stream, PyObject *o) { int res; PyObject* arg_tuple = PyTuple_Pack(1, o); if (unlikely(!arg_tuple)) return -1; res = __Pyx_Print(stream, arg_tuple, 1); Py_DECREF(arg_tuple); return res; } #endif /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif 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); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* 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;\ } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif 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)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } 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)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #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 int __Pyx_PyInt_As_int(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif 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)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } 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)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #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; } /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { while (a) { a = a->tp_base; if (a == b) return 1; } return b == &PyBaseObject_Type; } static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (a == b) return 1; mro = a->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(a, b); } #if PY_MAJOR_VERSION == 2 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { PyObject *exception, *value, *tb; int res; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&exception, &value, &tb); res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } if (!res) { res = PyObject_IsSubclass(err, exc_type2); if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } } __Pyx_ErrRestore(exception, value, tb); return res; } #else static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; if (!res) { res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); } return res; } #endif static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; assert(PyExceptionClass_Check(exc_type)); n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i '9'); break; } if (rt_from_call[i] != ctversion[i]) { same = 0; break; } } if (!same) { char rtversion[5] = {'\0'}; char message[200]; for (i=0; i<4; ++i) { if (rt_from_call[i] == '.') { if (found_dot) break; found_dot = 1; } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') { break; } rtversion[i] = rt_from_call[i]; } 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; } /* 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; if (PyObject_Hash(*t->p) == -1) 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 const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #if !CYTHON_PEP393_ENABLED static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { 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 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (likely(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 #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if __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)) { return __Pyx_PyUnicode_AsStringAndSize(o, length); } 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 int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { int retval; if (unlikely(!x)) return -1; retval = __Pyx_PyObject_IsTrue(x); Py_DECREF(x); return retval; } static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(result)) { if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "__int__ returned non-int (type %.200s). " "The ability to return an instance of a strict subclass of int " "is deprecated, and may be removed in a future version of Python.", Py_TYPE(result)->tp_name)) { Py_DECREF(result); return NULL; } return result; } #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", type_name, type_name, Py_TYPE(result)->tp_name); Py_DECREF(result); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x) || PyLong_Check(x))) #else if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; res = m->nb_long(x); } #else if (likely(m && m->nb_int)) { name = "int"; res = m->nb_int(x); } #endif #else if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { res = PyNumber_Int(x); } #endif if (likely(res)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else if (unlikely(!PyLong_CheckExact(res))) { #endif return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } 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(b); } #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 Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); #if PY_MAJOR_VERSION < 3 } else if (likely(PyInt_CheckExact(o))) { return PyInt_AS_LONG(o); #endif } else { Py_ssize_t ival; PyObject *x; x = PyNumber_Index(o); if (!x) return -1; ival = PyInt_AsLong(x); Py_DECREF(x); return ival; } } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ PKmK2e e  symatrix.pngPNG  IHDR r0IDATxw$Wq=ws{7gm&崲V@ @`0X~D 666cllcp`xm YV+js9G::tszzzOSNX,bX89KϜFnB$ OrH~&ޗ>yݟGJؐŧES\a:I!OZZ?L Rkr:?iYz4)#/{WjDDe;R̨0p.$ӆ:2bX,EUIN7mlpPεZ>C'%?s()("4{TTip?irbPu$Imm:5.O(@\1n8fТcZ7܂5rXC.dX,40k|tҺ!#c³> (~Y;#463DsQ:1ۭ\+yaʉِ$-Zl("[TkVLݥY_FJfst=A{kF}ȭM0dX,bX,Z5]mݱz&풩?mH?E ŨsΚo*Z妟ma iX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,R-RpNp0}e,%)'7MʅUopm__#\iX7W#|9,̂>3[lbʕIGTsI>•~܁-a1rh.<_$0ax*Ka0<3b)?XY 1XDo -I9lj '{ ]0w0\<*78 z?0/@.·C_-`X\DޑWD?C'o-=>0o-upkVap<W|Ъy1%6k` qD˂I0I8^M~,Z.x mi f2,Q^W\h.jq}sG(m/&A Zu';rb"g.yTD.ªNb ̔7`z]t 2t8 zɫX|Upzn~l`,lo{n}!YG)7,J p,ۥw|+D_˿`4_~ըtr-S:.ճe|,/E2.BJD6X)?v \q>f ]xw(Py/Yf)|Pt݈9ؖ՗*H^fȇ2*꿓pLNԋ7F92_j %ޒ0Boy5:5qx ɔ0ZMVD7|σ9)(^αY^ )+"LEm9/arMmPj}EmwTYsBZK39pe.`RxU{^>"@b E<]\ƵU\m 1L u^ ^Ġ'L.3O o{^Tv]+%?RIѦυqC$nuY P *ZQB.Qx7\%UkOey@z7 caȅs 7f, 00g1`4qH(QƤPeW"߅E019/`#L08%JϦ ΔGq):RYYv l{'*N_68M/_Q.cK.pI7 f/]pRm<.Sl0zW4u)j^kGn8$_90.)|a!8<\ fo|NX:p4Cq6D؏:C 1Sg4,uCF(9$u?h^81`|5g? JF0X,+_(T=1ڌe(65v[ rcHT?L`rb|6 xHy"IJA\\,#3#IȪQ9PCo刴>T96Ř2wT'nTlu̓pLY7G[@x;8Kwō.G`JO[0$K"^V&j m/c ]-/ZWv% iGrn-d 5Ub}b(kTF%zC{*4ŸҿG \xceJEEթ!˺a4O|;p`A;..[`v԰49`ukiR&ᔔ"ۻʶ8/VprI씌 HD|;B3?ݧ/a1(N͇0ˬըl6rAzQ׈/Y T\sTcD*By*C+څk{ꫫx9{1y* CFlr^(JyX ~KR/_$D7?π[ss0[l1 jI_$/syImg]rx*mTG݋逳x]` j_K;Z̠]*Tv8~se}XTCA;̻DJ3:K{.$]J*Qfmpl/e#,DXP %s,ʇg庺T/)]"zU&"G4Z]Pa?[q:9 )zi#`jqUwqͷ;mr.ޯJGD}!/I$pxEYYcT69w\CWgoóR \Eʑ2&L7NhpRWTmvcs =O?K⦛3oR桎P|l.`Qׇ'6\PDZ0X}@Lmu`SUZUW;ΞR|]׈`\@XHtT/__]JKԚ,+ N,,'fH_x7A"@f8\ (S˻B田ߟ@{r;2BNHb2ae$>W紂˅'ȧod)Oyh$ >ko?,칙f9<^v}oב!ՐНN9`?-|]r{M:Ns`IP9CesudmE>iSJ>4--N<\X+++`((x#DD>Dbi*O>vyhr{^"OrJ>eϿ;{ŭbJ*J3cPj-ie]<U!Ac{'y-p ͺ]r&F˔+{7$RPWӃP2'w]QK6MC.\|`+pk^2 |0 myLzkAl>+NDl rP"m훥Ue>L3^#=|t,ɺf`mj,yV^Y0o2]!nJ8G˶㦻r#[;! ɽE0#WNn{ef\*2)Ta254QeqYMnhq^ V`rIMWVx?St9,/1-:;tgZJ. QIZv=>sQ͌+k9=/[vh8 Au L "eBU7_%{>}gZT{] YHC0foY:!Z=0Vن/c>DkVV=@q3ue.[w _ܜME2d"?-68!upjjW oZ:gvhCU~s ,(NUJ/W*`,>[;OV:_Pp$aQ[,٬˳8~ mԦ!->ɘ`g{?W7m6/=v"=¢9 Z' rwn]WYR\pfQ|Fŀ4gz ae)Fa_zǷmdR{%3+9 ˀ_ 3_;'8]:{XpXooXMBOҾNNlg.Ӌυ73&ctGCݭ PQZ9">Y=FɁY N3^֊4<<C ehw.,;r׳SCtG"bms`"R1^^ 5A] DM2<\yT( հnxWѼ,}6rrܟor7$\sUQT ykWI^)PV{b.1irp`WHjk~-!ٷ;7Iihٳ5{tLUz%=y`B+oG( #>05UZg`"LU{v?35}6@8 `zY 0~4V}$ZWsލ.~3U#|z\h#xCpuT;fLzw#)!o?P qEƒh>!KUoK2[MHSaX%7\GFUiCdy0O[_ Lħu+amSsu4|A%oqC]imN{AʅðnOpNes#/lqqդV`nМO|B.Tv[G ,eTx P泔U.P7f0yjxXb1Z~#PF)4BNڦpU܁K̛Y؜^F[n~I/ߠU84` ऴGMQ r;OkIoZԒ̰q3-{yܨky>˓fn-BQ<)@\yzrO/V;=_R0[a<͹27< 9p= ]WdʰiUGe̍# %Yj6Um ToͽT*uyi޹/*6Y&U~IY;eSzHnⵋ9؆!wy+kن{56{8 `khxolC{Jp껯G؟( 2Elz78*9G\e/NRh1&Oϑ2?7 #p_."7ëQkVx$1 97z;`lE=%F-p >S:,MʭR=8#WSNx=FΈ+N?}㪿.99?zk"2jSP[Zl}N' 'u@VÓj]cYɟ85;m%X2mpK/,=p`ch6)"e{^[Tg_X_ 0?Rg_1 .IX U} u'`K2{nIpZS߰ t:?R@>C,AY^`K)c=p)HOxڲ&팲#ϟ |kg v5+`Gp`'<5~gd: 7vz-|R t!r[,X,\iP ?VOF.3x93T9O6= ,te,%gL审fYֽ6-T, ySpcTy:8Ay! CO(V{bɗ>`c5 >m\ؚliaa8&JpR:O{Nkŕ mэBF%V3&0ɑ&8<\a9%QidhxfqCyE EMOcQWiM[Fus0`Tߒ{ɴ53c.%~9Kt#n,Xʥu]PYQ*ƹQafCw"bXgSC .?FxPBvr$KEMp5̃!1Qň CC0&lޒ0Jdi;qҁL\38*Rl bj*8p5,þo-PJ?xH-%|0J_A7zvf>j\ }e%C|C+ ]ɎXw7?.Fk.?=7C<Z#o0ZR"-h=:%x XLƜ^bá13(]&m:V[蔽+zg]OU$salp\Xy핒. }xaGZXo*; Dڮ6͸>Gmv/ Kl,Q#,3&Q'/z' ,\}y(TP,,q0?_ [६eUx +Yb Ke uh:2tiZ 1C lomc)SҤcʣs&ZsYZqJON[..'ЋPQ0@9NTOgy2XgȲ:q@:fd $O!] 6NVV!X{0M㭒:3& fڽv$38l|ESbk6>*0\ $JKkcEv$dz ;̍k"2x΅q~x %c{` 1gW+Z5%kVKE) sbOp.,Ϸ4IFc ̮*6#xxY baM#a$< ߀.yh=LKhnAwNOƯԋaḯdʦdQ&@T{ `~V`2,%)\rAx÷F]eJ{~7/BpPÖb)'z̴Q,,'j%. %À4߀]QSa|it9(+ )0P3/7)e+0OaǯԭܘE0sᥘAY_V,y[a$΅pG*%| {P L - ̃*lmP MU*FZ ن c-|ULEc @_/`TL_pu@CU,Ne|Nwv'5~6 yHT>?Cشt| iϓ0M\D|^} wm N'0}̤E3l50<̍k)=q"ÿw_Y^jf_bFYٺK#OȤ-DM4౻V"=M}SMC},~ ?숙nM_Ge4+o%>W OYPĵw~/Ih/ `\ψ9Vu%ߓEfENJ* ,^N M<19j-teeS߄CsC;;8 NKIEx|Lu`6w5؄q Y<M>jPiJJ!ʾ;!|>nɒk*XQUW=\eW{x֥1et?aOQ '#ljkq4qG:ഩ*ltVѶ&؆IjvrPL\8o-,2MW?~)K`<#h3m?uU* ybǨCaȰ>:ta43$5Wz+NECU̒$qxW_՝ѡwkT0󴥊[M2"D.Zgv5č`w8/F# 7Xs3tt2:at.ګX2 7G-\9<_4epp\$fYZ /׿=xl?ahIa`S0F);,ڠ 7˞Çri4Z3$!̔3:I] aHRUWBj[ʁGy]wBr#&|8I}@U0 qd ?$ٙF\[rn+ C ׮b.\»kYX$|\4ca⼝`g[*aPk4F(l cv8]PGI<4KHx.mUh2e 0V.YUSBK쀭\9ˁ5bX*.,p_i5!I.Rۦ|oXD)(`.U8[uhlJ!TmC9¼ 'OhO@ .ݞ &Q,Lxe0$fWL@D .\[OkaX|ra6l 9Y۷}BQl1F*l?}N0B^]9.`8p d7TThwGJ(aߗbZP2I0;`oJK ?:fLb8Aʐ%LR<'sc`7yJx^U#N"$郴UE(6Tm(kvn/\ !E>O . WPg7X- \W&!kx_%KFv,%qCje4UMm=6f@yJB4ڂGE Cxb9Z׼1RZ©mT1$ XYܐ)!u-+Q"+Ka el'iü'gSo&C F8FLԙ#uĿT ?Nû7O? 1:V֛ )yZ5z{W5R݅ך]ҞeypT96x3Z9 jgPlC1%́s8\Juz1_.[桋0 >R\ʠ9{>L5IT%2^_=gy("eȘDÝPؾQjx VHZVJP2zpq~+|[W |%I H%/6m[ZT0`xM<41`'DN*pwk36Mp0!#wGf2i NUJ~Y2Kk?Q;^0ۿdj'j3LZG+c\V*TN38lLrH7fjշN>,0ckI ?,'m ?VNg.\kZybZHbV@_8G 90zyhpMp_Zv =+y;tԩ=l)ln'divr F ن6N1&E͹AE H'^6Ga O&4WO)Nc~OyhrZ8{n8eO`,oN1?D3S@ a̻&,MHi%+(:΄< e4'TFh̓I<FkJ^N\o(y-KץVch۞JVW3U~e< l+3V4x]~0HB£WC}j  0(TQLRS1G4L}c=WH,*!Ү6O™!kN~% =+ᴖ)-2W6\UDw`l4 -E+KeƇQ;*G`D\C!ՊU׷Vm:!eFDk)mb1 FC oo"IM?Sy9yOk?p?Jze4\zK/ Gڽa< M=HujOΆKe{E>5E t6'!)9χe2U7lC՚jԱ.+n7B&{^{#0=$\ 3dCg0C{̚ATuNIp |[~kkSqƇ*$ɶ߄É D(%k^m++nC9G屄`U KʈaI .݇4e=̉yU5u{jZR\?Xκ͙[@XҚu~ WBIJpjTM_yTz)̼`L`켷tPXh'm{`&,:w_tč_J0T/D|oߡ>Nx,?*^U8Hm`"$dŚ@T* QJhYjJqhIS׊ziyKX$tQƊfBD?x#veesMVl^g#%<ν(@ȯ4r A&V15tS;8ёLkY]cA/| CzS^T /}ZciGi q+)l4J6ԄBwͯg쏫Y?ßJEp [HP)x*% $֌ \xyh1l0Egs[R8E?0}"=?-O[wbr㲎Ok58Ou/4a6Cnj!mj $Ie{Ni,DSA(=Sd݌&qu9adJ)8<NW,DuK.!F}46"O58yRVAXn:*MB8K6^'⪖dLTam]RYtP` =/NM ZdDraGCov_ {?Ցdn4ucRx7|>tQ?aa9ݐgC" zp.'I*MtIjW`Ԧ`:hO 5 )m% OtK!)B_3H26 E?KHW_WS"Gnxn6 <Қ߆qx!-YCi"nJgk}{Ӓ277GɐzIs A #6V=cy tuS1K1~/|&KapL6%QjU+zg՜ Ʃl)CSJ;_pϳ9w_;8p?SS=c̉b^pg/KaZi۳n[os0nĈc %/ԶxG?Uҡ8!.";F`ˍHʰUnACS4Ђb:RҭC 1A[U w7cS)4Z'U:Lߔx Ti{y8)snY}07|V#đnU*%IKEGۥp!f/$_E1I9 k/8O @S> G^QxAbh5F`.T֙˶[50HGȋTeHI/NxRWizPyM5 ݢCpPqA KBmwm'@kӰ=$`l^i%.mgZ7qU9PD̓3B^sŢk) $܈J?!V/c׏ȦmT/9D%r[WPxv8HxO|\#WcAEDoDj{nb4t.)?-j([gUDőnߝl&fqn繡_Qt6D9&husxqIbҤw t|jV`EnO\BcA. }mp_M#v2D?4˾32p$S 5&A[i<})9Œ0@$+‰Yp* ;JE=ٚ٣}$=!%QRݽh\ӖKQY w&`"Rim[UoU[MO@~̙?^5j=;|(gAjٔ6–,{A|+z{.Tv:DL?~r8 o$MN8 ȹH, Vn= ̓b|f2x|*B>:a_W :>X1M8GY(ߐӖA:[i ސ\cKdE:aw{S+!}GȮ?a ,x]]Uè=;4n0(MKbw0ƨu|}tu؆zg {w/ytu_FKQXxxVcRʳ́Q0:40cN"<4ox"c1j/ABrQ6i0zXwjhVNbp.i3?R*`*')@&ix3$P=5 T&{3yhre= .0XV=C$pj +0H~ ߩSUk^H>o|gj\+x:Z@AOCuBb@G ͻseB NWŸOlx/ '=l;kFȓp8NZԡ*2u QIt$|Dځ*"OMxmd̉#пwXFF 0!4Ps `MO5C^=b -R Cu̠71n`E;z'9Oݮ'IFVHyÏ.~1{1sPϣ_`j ָz<՛sLJQ^6#2 TBRI8#T5'5;׊7][dG~lZͱ~&*Q_ke5mL;8'7aa^oP#;~#*f7CX{bĆ}ðVS᭰FNGY^?y݁)\+7^&dx ?*m*Xv BCx >+QO_$՞ݑ۩Ʉ47HQ'c]ٹGm5'] FU< !hj6U񪒂Y@G;ˑà{͐mSi 8t g+s}EaÜ[! ~ ƅ]IA(XZ .!~od1.|ß\TjoqY'_p,jm6"}Ȅ˰.ػaRq_6rp7<VUjNUQ9 W'n8;?;z%=b5| vL22&/aߘQǫ/p@|:2| 3esC pOS)c/è,ch̫&I3H_30K8EuUèj268ATZ1)YxJٌ6xH%}-DuO{2S&ɔqpFS=T~Q,ed%ip*{~3ʞTG%gng!͚p_n%6TtQ+/u[!+cJf|>UIsE*wtwپ$ݎ#iۭXpjmFtW,0GYv\1m F7L+&! cpy1D(yFhCf"l)?I0NEM`nDq戜W4&9Ah `TP_,7K>Y5~_o4 ,3I"9>͹3ڰ:F ؒ8<Ӓ0+Txhkې1; y<ʁ8g ˣ# lmGG5RVDǞsE+#O4B8Uچhl=5}W̓'ܬU>3ZQUy)_oH6E͈&~;jMG #$=)#BUxTv )`Z#vZ\ڏ974\$s,|yO1ex ݈ezA* ?,Y|VpUI"R(CRX"ɧwȳUh;  -u1-RGDnE+vMKpha|ە!m(rT"֋Ĵq<vF8#{vI\Ѷd=LT/.PT~^6yWsG%0TڰcjGP‹m9fL>X T)h$a"֮.쁟|Ry@m)"p?(%#0&|<5+&W8Olv2Dݕb}l*Ol 77r|@K< Kn}x={fv7/C`8lm'6 ΁I*pL|Hء'd1 ڷړYfl)jΏu ]}M͈;^>憎Vx(ک$m;X0&DX aARe+p?C̈75Lw `,>e'Մp @u`$9=Tb<&SRr iƕ~pFd3?t澉68'U!"ξ?,A!‹3wWAp) V̉S桡0T}<;zi~|#3taH67/}4;.AT X&U5H&w ΁DՁ.mGé*&k;U!k!z=# n0ү0 S`$ /A VAxZ< `RIQTo6.fgpnnr$,owo{L?4o݆DV'JGwc[,ݔJhQ;^6 lCi6Ih qБ`aw2wgC8 acp`$ t: [2쒆Z~D]b7@_UŌXI!qUP"%9WAf:UḣrQw۸{5kg{͂ 4ba&y8P}׵;Lk2O du8 p. me9;{K8Y݅2jU>,D0 ߁=T.Wv8 ]ˮe"܈E  6«xyrȣ7J9Av*h嫰X0oE@=NT<&`EzWoOal/S+s(VB5tn76C*nLr?\nNL5*<UqS$tu;T.$ӤSyhljD+ 5`%W.UF\t?>0UŊbiLGFA#_b*Ǫ0DZ'y5ZĕqoTNUw6*#һErPXV\X}o)^\-KHɰb,I-#+U z5Hɟ~EH !5;/;Rcy SOz!c)E/Otⶦlۭ 3`?"{ېIIGG9Wd{lwPʨCD\O˴V`~2̅qjⷢ^XS\7oH430^:\b4`;\_kZ5͠ '_Fu}&_X`;& f)0 KTCIc!xĤq˯EQX@?X+ W$X YXR»`!l_`;\ 2>|΃~DtHZԀyn^՚66x:8:a*1,s0΅ȷHZtɌnA4[ 0&BWX(JH1 "ѩȞ+q&<9!8[{tcFS7KyWL& Wq0 ^U?~dݢ*04HɃf"\(ga+*;gJH~09ٗj;OZOdl/K{`<8w[ܑ<Ŏ/F]/3u8nE<+Irdp* ާa]Vϡwm 8pm}vB;Qk37UD蟱TEWd|F㽬 2$I0.[]6·[gu({Բk^э2!L~t7^dPJWs>rC?g20^ tkZ`@17[?fϨ{A ة)0ZX=aKFq3Uߛ&CbyY&Oǯc_gˆQnxt]/lp/\ .UO2v*8Qxyx͞y ZjǙc';b.ʓ ~ vCJa1sԢԹ)JG0##g0/6ȳRGL,û[~FÐBvx#C/v//m^8sT|n$U7&ͽ"Kemqr.SWH1]L]S+Ie,LƒcEYN^A>mu/LCi\X 29lcuv$JWZ桺 W:Gc`};Va  :(v*i*Jyw*{}NAI/Ic Jfy3Z-3߀/gp&jVnО$rQq(ky;UCX.uޫ9\R>H1 asxY`Y(RU$/\'Iwd* L5WvgIXmHW[3u1NjP>3z8 pR9 򄆃Sʨ4݂0\<=rz"$t[ FS dLV͙ DXURUdLaa65~|@qcZ+U85|V%p}T`~>B qh=j; ^E)p5GM4]0% eoíx\vL[L_Xe8{_̯i(ʩ>|Fi%N=֭ 3o_eE3rhH_ٲ7-/Z`#F_E?1pJ#GnJWH†xxy[ГD\;3Rd ZX5R3|ͪFu!i+;5ǣ'yY` Ռ3Z.4 Cм³yBW)0g+!2j%o=Ӱ*_(:,K!ۛJto?#C%QɲC՘04oNG"VlC#E9Y"`y% X  a:G7RhW`!pl_P)-[ΘVؚe2rRH;#5vx <s/*ĕ(? c N~^]iㅩZJ.lo}EۆLIJ+ŸU\=J8RMSpK8j8_wS85H{aiDu明6pGugvSar_/f8B0 wY`D 3.t&{9.AI0R4RR9ME2jrw8 ;7xθiHQ_1?C[eq}A!b 2?ߊmϒ*s|J =XxAIYTou7k͐.E^CUeA2h,7aTP .{awsb0q7ݨ> 0{ c,QFENwl[GjKn7UcEO!aɎg`yE[[C>̄Nx.*iHBP= -cNbqpRlC^2H"tJSr4; CpHGZ Qna| n4cBߞPz:ɲP?_n0AqcTgҥ:u"Z7*] +kSuȅgrM`QZr[1K{m^cqv&ڑv4Rf? *D'Ewl/|lC Ga$dtn'$E Oj.+ 6k^U>. v0^a|X aҧ(Ni両,7ͯ`1׉!ji?$-׭t(ͥjd$^xF&(Qa3?[z_w,^nȔWs 0fvT([!k##V}\+{Uf [:ٽXW'$HbPk}$|80 ވus8 .< dTe~U6aՌ-ꦮ!9+kT,׀J WY1*g.CTqw:gG@a$q'A9`dȾn3ÐA)s6?qmX*J'Ua=Ivf8vipI}ůU($*jgo\g|P]a:Lwؿ>QG啤AL"UJ˳M!Gc6͸ GJG-\_<#nQb )\%\ nA@UdWTW0E`yCԵ/F~yGcVU!25nHԙʶ'IUNQ?R F*\)WI[p1gf3Q~R8 $oUaNe?ྌ01jDǸW:7\itL~[Bτ;>00F4uEOaV?iaFk<gʼ*Li ā1_#;Eo6 ]RؙYacn 60CɰP$?녊%alF!Ǜ=yr$pȰ6l` / TvL'C8gV/wEUQQxYn6МO_&5+c-{g{K[;0s߲f mrI9 )`Z7ӵ}Wo"mٯͫw i qT`?UGT]2t=S hIh&&_Ԡ=px9')`/TQз`5TdWvC6³^p2\^;1u} ^`~u;|VŨ&[AiƒIcjwdgs`LnkcCEst8mMw|Գz~nUufl>UWo{'ḿ=<9 ?^1Q? sw kMet0*ϔƒ,yUE5Oi+<f, - @Ul9cI8 x6BEb{Tꨥ `*L{sY[6樆0+5Zy9THٻb˩!ƸhFX0Aym=Qo)G@TCh +9@8Tz8.t Bc- eI/?E[ 会F~\D>:ad؝hĂ12/0تsܓٌ6]A "Gnfs KCrI |4߁PGR:mxԵsFL3 ƪ.x>1-ٰ̖^_Y=}ܙKvehKѣѶ=\ GsӁj "T`WըA'+X< 'IǬo޳O>~F ](Q\Zz'n2]8)SVpךu(RVZTy/M0ɛY8f+_eʹ~K}^>0R Vf,miΗ>.t>!%#-oRvb99W`}Y.8~:Ʉ0>gX2;yEok*'nh#K826k*#C?Arؐ4|˪~S\吘s/-gJr![Ls"$slod~\K<arT>{ޚ}<6f*5m{ ^Wt_Eߖ 6`xp+f7ߖd;pdsa -ydDXBf,Jq/cYax- f].9FkX,E@M\ Դ IZ_ ېWL _z^7Vm^Q t/Qp!Cy?̄m-g@   a|^6bXbﰶ'smWNH=B,;YKɍ gI梹=0)eNxٴm(.;H&niq#ݚĻ8 ~NkL@lX,xybXŤ;4|҉7&;5MDt" }@yR[x9L !8΁ *s<9ئk3KQ3pnS9GنMp T}/&btkbXZrNu=2"u/|@$lINeV5̗X=5acwJ;uztC+1-mCݦ Sk4qmrcbT*:)bI5Y,K="C{6 10UձCeTBO|#p$Ey4 ͭilJ<R`Cc̛{2v(6$l#p VocJ+: Ac+b..X,e;? 㽟xa/~I;n3z?kjc. +3:^o.sHޔ=  \7F5gQʇmۚВUbyXbhP ='t-(#HΡsC?۠?\n6 'tܖ߆V 1k58Mɗa|E*>~T|Fԅ҆YiC흘< 70TyIp|^"_Aqo5OGЙ 3B#p5PJM|L56y`-DgcC3Qm)~ 1Lu@(|ry0cpG6Ά/.<w㍜0Z! ,ep\B\ 8jYp*~΀pZh#HCYW @of|@j3u[Z^?PY!eEpz{/T``W)@U8rle FlF9.ˁ8!}\\}~vLaw }`l[LdC"xM@)x*j șÑYh\P$i0Pb۠ 'wLbRp7{0X]㰯KɲeXQ 4Kyv=0^e,Ɋ`s(`P΀3e?TnT`;svR4 )7&[ [~٠M3cIWfol? \ `3 `BMhZ,93z=,̰!K[F0îXI`z~xmrIu@F [3 ǩa& AɻwzZbo+KG?x'<eVBF0a̚8cB@,D}dEi%.EPQEK >mʇyƙ0mvapSvwɑ@\+VdWo),)q L|ºYŚ-dn&E0JXG%ʃ+*L!IzVTj 7`hO_!1I;+sfDmlzNLu3@6z<h@=R"ág} >5Nf;S4kͬ1wqVi o#ij$C,p:=WJp{1F+KҾX!K]0zb NҭGg\ }a {ÐI^;!Y9_}y>( XTrGYI·O /p'y, P"脍pL[V!'R](mS YKگt0Z@[,g JO2t* Z*m+zClM88Oax85\  +7, Y&p2/.VKW;P>›9U8zn J^s y< 2Wђg*xmu 7;a[k7u0>_`CAo; F BXgw;mȒW?/P1R79]7GV8 ?&qtJר\$8 fO4uJ›&1iyk#pΘKy=]ZKJePxbNdE4cUq0K8T$0韷!X[pp b¿qFJ@q8Uq0+:Nti(lIҷ76*K<ߴ-0X%h#0 T^QFʮ&b=ɒ*- dn?^'l"vU[0 Zrë#BR_X}\x:?1-X$A]ۭa(=aplyHdr`d* w<|`:I6g79*|`/86ۼ1Ъ)' kWz)KK'Bn4IJlX4h*6E</\^9.m{ D.{a7lY.Kw{$=k“p6q(23_tר1t6T5c=a C %i0;`LP-0]=k`1¾LEXg8]4Ғ ĭ Ok5U嶦]QW /0˵aN 0̀ }& s`v>Fly=P]1P 9mJ:=z"tA9v%0T }wS'FE\Z?{ l`xxU坾ո#HzX͟4+Ik1h0H/7pLS;0#*XP {XK` ۭm(mL[W71kf{y$* ͆$T:C`.pf=bɍY=T_t~[b{srq ~Tpdx`LVY1y>'t8TYӐ#Ly^7AkGp"7=d| D pR=,$)KoFrU һD(_a0< _?&˝%ޯ-D D\ 2LՙcHdBĜj/T<v=K$`maʼnѫ|zy8SCKeu8oJe CI)Cyle0 jxσoCo8O$+{yRGA<5EԜj-pOXխbrjQ*:Ui >p1c9G.ԃa/HnУ㸷pA8p<KyfzSpTa. FUZ< ?7괎HJ3Mu2#9\#GwLꯅ+}]kXz8I1䘷x8 ƍ> ;x5|MhYУ ZD~ү' 6` ]k$ KD\8/Yې4 )pL0fh6.³=#37^PnAyd `:_/R֨@ * a*m0 ʋ(sғ ߆ێp|4l;[,^Kl 7` l2n"ؓҘeEwozyh/gp~KN/-F̬ЂA,%StXϷWaQCV.8?-zވ$.|as:_ nm[چMC3gG#rWΡõ@#-GnK7mR N{Wg*ס-)]5g[,,,Aڐs>|rwִujKJΞk9%bij>/\F,K 08;@D2mLV .S7zxRFx{zO9&7N^NZm<1̆a=\ӕ'ѯ"$QiK-L%i MXӬ$͑>,>ԑG`bIX$Z׏LCmO 9Wlq&ܥ:M=:(G7PY~,RLSۉSDѾSL䟳}ݯF=2DzC zP_8| C}e^f/dXU mԦy &`pC  =D8ŰLl(̔mT`7 Fϳ'̮2p`<4K^3]3m~VTd);ϔX& ۘi0տ^`,6&~qL*HB08`GX c3>F e,# q1 ճ iR*R_H`3'udEK+|U-lKh&bZ~Yvbs0KiZXo^{a? ߁ï$Ta|{*_;2W`KrՒsʺHH)a_/à,īS`z7kuP gKҶTRj'8J KjƭKF;ip heg RA\ )$!quQAo˛*o=RJb k{1X޵-{eb'>GJ7:`ttzVԢ!p <##綧*:.0W)bJ  >EU77ynd?yaS000ǫ1ѻFAYkNi\G(aMu]}CLwPUK7zVFu jݽ *G3 g\x>'oh14DK]+/wj5IH=md= Hؘhy*Q0'`;2{v'9oixjYzL$o5*I>?oYT# G`-_uK PX!^=2J`Q&nڃp,xNw#Z/GF-_=!hT!M X{k*.׳20'S["ەj𴨑pFC iya^S䲲%FBrKzD3h.C?_m ^)dq. CeLz'vl\HkZS_,%6iL)}|xF4r%L 3 cpDW-2c>~70x'o(jX oSs!ȗW;ko#&)6-zǛһic4|Wu+.r)8k$2wG-Tnkej2e2MGɭm \Id؆@ a|[iÅ"6G^/4\*NCuyMe,S%Z=Q=^ N'1 F|v`_% aYﭳr8 _i结A.G 0:\YF߸P!uˢڱuh!lp*Q?9 #7*LOA?KXdeY`d"`ns.F1.xF"m4s^#=hu1 ޫ/9 0(G97"o!`̉*z:B$S7V9-D_k=eb+tWnq%ʨD%+hy>s` ,c ?0#OWdKQCnimg `ꙇsK#>0m".p`/e,F8 m=0X7J m̈>a؆\xʯfEř*3J5+4r [& '}tx I]:IO^51-jbUϛ28p q7yx+(ߞ &:9~/P(O5Kx )@.h<0V4dIPv9A/)K[\B!T# 4gGm6rvnxnDlMjy\a<l(ua ~ NZ핎c(sVH4d>Ma02FXJESr_y]YyJT*<*R&7p*JM ]B-v A9%.Is ;֗X e'd`y0IaILEe4"QGY?]K@SVd;`0 `qbu@? (q' O9i^`JO}lQ3"9_vV̅~D=$f8 VPfz`qXYnS$83cRYzg{0L* Apz巤+ ; r WY|ۇ4"x@a j7:_x ^MGvqA(B Di1˦q )0٩up̯jV߇HߗCpWyOGp4"=pl5kWyGf6&pPOJ%clRgA.aހsL50_*x8\ŧ{p 2TGһ#0GD/C*~H__9{մE^Su`<k0WNᗁԁڳ{"~_kw2!C;p3<"njǣ--=Nm9LG\J<Q2"HK)FO]"nC@<ӏ4ʒ0.RM>O5qaxT<켼<4V~6Kw V +ƈɂv[S .;^ᄨ_@O=Sdz7BhҍJwf,_vr-jvz}=rk#0pcdIby)qFnDw9:Սo*C.Nd;9yCK`8&a[3UI-;_íBGF=Ru-%ÚrFUDJq`!}KZKx)KOclb;pa}”pW>Mm'&slC yeG_55^s\w=KE1l6Î0v R a0s̊v@'80y]:(u`s-Rͅ1K0zџ$a SaO^ςQa )AQt u=GeD }`#c&" gQPknߜusq} Vi:4X2.wթS 7xp6`0̃E0 g2 H2^fOS"XP ]jKfz\u>j4{lQTC2V91IJEx9*W 7ld# !%#0 (,̸t7lqFgQAqtFPQE!l!! !!! !Bv}x@W+.K tzQb*TU5èiaG^d}`L(n){}9lN|15f9ȃ2YΖ _0KcJY^Qb:zVC˲%06&7XdΔb4`?C =U?c[YO$'[=D£꼮'B_g0UqsE. nbEIbׄ1 wwPap-*fIlEMͻeqs5/9!|N%pٱ ˊ`X;89>/~F铝I\‹)p{<RNl=; ۝iJP<2 'YF( 3,8cp 6Q>]1wκе|B 9\Aa $Q^]>V·qgEo&ƕIy8+|eNA3\`+}WEp<> :;x,I*kEWvN pNDҊ2.npPBɌ0C>f@O]~@1xi+d0h\[X}_')&(d5R&M&\wlX\Gq"4y(-^b09FI7nm6t%Fh{wcͿJs"=_kE1!UTpO<㌁u1\ L5fpVʧ%apgf/X߇.wD*D;8C!|ջ &0a l{{Ǥ;dPXʓ$.tAlV a=ae۹<-}f8[5&0}ӀV2W/wP:`z՟[a}xyȅʨΣp8=5;,PjH=m|&PT7Jh)(f𝘳k̖0zJiYiy",|j~Up$Hxlu"l},-EFs.%9 6H_^S2O,Yڮf,:J (e uϣ#hPZ1 DWeFϛBC7dw;j(X&SR0l&gb9g T{I!S2UY-%װESNCF XG c`s0D%.yG]_atX[:ס9]?mW}d?mX:L+10i6ykоrZP"aCUܲ1y.LjE+ T5E9M^GgnvF}V2 gb:ѰGt/{][;Բndb'8jo)saSHWnpN<{ϟ)IFxgK-SV` X|Sh1{rEF~(z=ܵA߽┧mz!4n*x$y.PhHCL)if/:pܷ9ZhU/{5\ wTpU' &ǟEwώ1X.V]Su{KM&FgXo$e;Rir\="'?S0I.|vf_Ra0%-5hG oCut2ڸ2,6Vp#Z \ d=Wi6T2,AwDȃȻ6;^h]Kb(뀲L͂iܷpՁ`NK-D p=,Hd7DX 9}NB)gS6v]0Ggv v(+;E ZTO|S]UXiv+ň<\8 i>OQl: =u٪V`LV]M$0P,0uؑBI~.,3N6Z QDE/چWAdX23혇&$]j~Ǥaiȕ  b0T83ͻVY} a8lW*JZ>X#Ӱ >ðNs~"\2}QW EXa`$ pBVOj t{0\OyI9ߚrIWJ1',$諂qdW; 84LRsi:Up<YRǁ4GzR$ CFޑd>u/]%љݗ{#.`jgүbtx3cObUw5OZ"\8{ͩQb颊&%o bюW"&)7g$tp m.YRa[dX !A1xngZ]S+Qb$ås zEH Lfӛ']<*j %ڌk}{`E6,!h#桉p>8 @W8)6JNB^Jz' 7-A}ʇ£X3dwNH>Gr0:@s%D~p394b b} [+N(=&5c390BnTҠtM )$O`VG V{G.S^+`$\" σLi`& [^,_k<"S}TO-0 lպ]EN \[@{~"чn\ggžr|6Ii7b(k$N^# k; P+Z)6'ԍRa?IVhLX%/p!f',~do%稱,1<`(wT桌Lľ)uA?pL:P'iaF{|Vh5E%$mBFC6$*]Ae/3BJV< Zke6ZlI:k` -`'HUSLT-\X wCGqca G%3<4?|s\6'Pъ47gv-{vn"޷Q ~[ؼXo;W,:ͱaߥ,>jCM0RJ){p:eNb2a*Pr@GxK"!VyZ:w`%yWl桛Rހ'+f[V8 +?P~+ҭp<>As/){GNٰC5mK TΛ6 렳a ,g%it%P &̔ǵ'Us=Q*0zAEPՉ@+qhTMLQP9FQSlK<!=rSqv2k$ vé_S>xP7|  aodpUn%Hou'VxC*Y4]۟ci#b=0 'c~ψ]F 6fTq.)B)|Y>S],cӠ} y#PxM(2zxa*qAxewT\k}/Z?"(u-*SaVǫ['^Quuv$2|l L ]ن 7'=S@XM0T)oFrݩT OT#ҝ 6Qy]+$;P}h8,0C7 g 1Ы7Et|i_[{Wkj: 3i%-7DKidbҺ[mpbMo6Ecߘ+w|J4^("c¯-?—#LM Sy!Ëbsī-dzR75|@34)8%NjaYm01'Z\أ"xUd[fժUnm_)}A%U*LecjbQ!%\ |=TbUq~BHQǒIJVgCE%\]>%bkqT­.Y~'t}HkYՙFT7 t5pɮ«9dH;t6ؕj8h,"yc fB*vQCY*Ђ!Z.S%.̂q)T=;KJY _=H{o >x̄sTy%' Z5Zy0xAd ֫;v.^kyKBat8ͰVbI54 K%leGYCpP-A`o^cu/8WnnG3])zM/UɥjOG$Q{S/&oD/o+ "!:~PlK$ۄׄl[a؞fK;g(*e*hg@g50GܠEy6"ڈy ;_EEپɼW]((]mt/0 { [0V+Ore{/$Y@־G8A31s{D"`{00 caM<"YŀgRMx+>_?ErkGxF֢;„;DDoyDӼCogg,jf"{3gvtd3"˫mW rz%L$vO8-mVZn4RuRc Hu2k̀"tP!Y#ȱCƃg鈊GSCbWQ-IwGfkwF|? =Q5Dc+^3wc^Bwe^1V'Y&#@{zPHe˩1J+HWyv#FU,1}vةo` ɻ-qA-hmd't)$Ce6&Ue=ο @5޲ `) {=L{11VLnRJL~=ʶ6k S"F@V2[o4%X[f\n6̬6[;"_f7D5ږHOk5RS]Mb*Qx~?x&}8QUBA=fKUwQT&_0og$L'`7-j2W7P72y%Z&w+T5=yG{BvkQxQO@;[g"l~xG:ܝMLZ֘h\^ץ>H!è9 +oUG/V=|JE,Np"^> JMxm0 W31Y^)B;ۯNa+0d)pb_c뒙}-nTSԹQՔw, sA /MvBlש-.x:Y`#tVIztHi*{9x\)v%t}СZ~xPY/*MzCPBJr< CXv8xMk`0_epla7`9kKjK% Gް 6X cDM̀?:WTҊ%X[̀h08:j#StW^q: TE`:iW%/RKftXbl90DI1< WVU  %kImCGԙ>ތ]CWꍿ#fm Ci~c`ڡ́|u8ds?a,LQzUcŒy ΂߱&$ߍv Uqp :dX*moMʂ#pAt9 1YԤ" u_C`lMG`3IvN.]}O}'4Zy*gsa{CK0:˾y#w%.4#`T^ph&'vO{諼tOx$+G]!7sH ;w`dy>g@Qf+zܲ^M씨;q-\iU,6dIU I%+a&Ll[t +},saUR? %6ҕpRNO#UZn &,خ9n=wFzEeGJNJ,8kz 腵>J;`H3\u)xZlUgLEjͰ걩*6Ew~S>ئk>_]H:$[_dJ(Y4Zy*X#>Jg cҼHzX Cj;]4 G!xFT9!&~_Hzh}{@h0T2daa^Q/L;-cWltq&X]I jD$&Rve,WRL?:8u wA>Tp*ƼxJ;\]ĵ4NG:!p\Ͳ{nћme&Ǽmª;9@ lnV K8)TkzWWXRYk5n@w!J1rV4'H0ظj"$ tT"%m:=tM[)rNbn!2c15/<2R ,6М`'<..p WCg=={lx%CAf"9j:d`4 JV-^Ҿpt%!QNzg+Pv>][u8[x0ЀF"2LN,N0GtS嚖wS)YF`UB6wC[@lG9!)͖.bbD/7`tӳ vrىLpE)j5BŽ24*u\<5#(zw|aY`9L0UBަDX˥L-c%tQ[WTȈ:R#' sCl HOf&C\͑M Q-hi|.R֘,p}r$ Pkz =d9Lx-J0kͰAmN+x¨RY0Ǒu]+cF]!,D-z\ zlI0hx[>:$%{ûŰD!, Vf9t 24(kBtLJ4=-`w6:^O{rW5zdZ504yU9;.Y(% _ˤA^ đ_m,{@04XH6vN wI8Sf!sI%n89. ~,J2 օz‘y`yWIn8އmQsct`t])NO^|NduW);;eKEWT%bRӰ2q+sa/)Hj2} `5?Pћ?>*z܀4^K2QBS)+ Wl28"C^TȌƞYh٠\=,<*a7M)({֧PקA;4?1e` <*#Jw|VyL_9+GT<.5w&|"i\'Bd|Itt;%ڛѰ ˧e3XF{xJb49L|:N`M5 |-]ݯv`.Vd-£%emf:Ӽv٘(UN>&6Hp7(!A+);gJ/0Jj%9z?fO=6m(WxM-QP+PZu!fwupL6sꯎM9QKvpLS4a4:: MQ y{Y>k`xdb0\EmF$IO"p$;WF?  .X-iw h޿lc+ly ~pB.PpP ʯ%BXOh0#IKawҞ(Lh0!{aeŰGĔeϧ-@xJòFTa,X@Lx+h[ĸid7Z{hJ@k a%|.w$pŽ_`^.גr*o~R}} ]l7̋)8[.(&x*ԴF]TxC)|JN~ǧS߶ l6diN8OwnX&H!IؗނNx84,V(Q]kJ{`\XJXD.@/iID`ܺd4 ö42M*F3#k╢M桶ˤ]x?*I>p0~"O 7'nl}h4X GQ@vX R`JNز>/0K&X:&ߊEN8#VvT:W͞ }ܥV {2+1X V>cB$)yetղW\]4C| ck[ЩJUE `6& [b aLPEJf<5u􆫕'މ].4V8TҦ,twiBkV/,eYW.'Xx^0%迬m(o:5SvWkW$0%̂3m3dr-D#x:25EUC0ܢ\~R}`ޫ)]3UoebsY }A(|tl0zv ߠ,h) TkKe!ZF̱Vu%S-k@{>b:@xÆ"]e*((kRQMF'{?͂aHLuG{m 0 _أ)kû0uobQ@j[p! n  m& ц;B 4k` '-+sRpὲ BY܈Pis8$J'PNSզSF{5U-jtwQCAeIU$tiiW%0%C>zEM eso`rX4 FSʌWM@S6:I*Ad!hd HV6tFH] gٽ mH4y.|N&~jtj_K{Du:0 hh[]  zѽ-+jPWA  C; Ļ솃1ȓ:Nr^B{MK9]x;:߇93_?r͢|[=> ++#ZF0P*.D[2Ɍ{ptZ8-[ T~8G>e0FWzfPm@t1"ƱdSL9fo.80`+xXye×`?5}IJf-`0| }́ .ONְKEuvspT_*pis?NS#G冷_zڹÖx,"ȂKNWA r{3.Mކv0upobz8`kzQ}b mant*s>6•o%SA:rPMvO#![neƅA2V5IWi&sתvS&I\Y',g2( H ̓]AbtE{4byǢOx^-opEײ=“BW!kws4U~4/ g$whljlMlR}N^y8w$2$JI8:*_2Ĥil+@/$UMDs7|wg&%;RN5rP¨a8"+SӀa =V\3)cԯ@=YN3mcbn/)')9a]:J7? ztS#״l_?D`<#D|Q]F O}OU,ZI^`-qTa7mʂJy ZE'Exǧl==ۚR!kx̏+0M?mXt'0m(rvC_%&QUOت+qyHKA{@'8,9lI3-4 ZCm~0x}mY0I^}$i|I' /xEN%_(g.X] n؟46ķF]sx&Ѩox XHUn+1AfK$57'coVƦ:@Ԓ _QQGaS$Vc8tx$;p Zt9tR l,DU{` NBx"`dڃuQ9WeYgYހ L)3kc[?֥n.'zt,aNC 1-pJMlfVkLX*_n{桶E/;O{ Oˮ},4Wcvh-4ozrH Nc6xXo!R>;iWw)p$ՑCYMUgԮ2-UR̘WJxc3w.kJ$[gFA1X͌ m* !;;-QwE!:IX/ܕ+?pnKs5̛9-%7A\-) O234&oNKƅl2gxW-L/X{fu3Ag—(9P!񛇆x񀮪Ʉ3b4XBvD;.۩0V8Sm|999ia̵߬6Xh[YEk0NATz&('''ab;.[0H6+|e«z5 s9=o'Z+cuKنJqSQH2UFyh [E/tn>3''S8IـxWZWM]syMi uھ%"M'{,ձQʭrt ~%<UςN^%6IfOWm@Tԩd$LGVLtĊO&nvh$ 'fr͜ '^͈-i-(U{j,MO桨 lYJհ֢ DKQuG]V`_w7׌fu?d{(')!x rrc|\6e7Xη` }rDuH?rI ,` mpi?&Ni[p C> F+H }JX K6)H 1ZtL~pW>j/Xo\ApB`a`1)_Q oWY΁hL]Q{ȁa5{!,NH̜DD=8 We>_AD\ W0[os·~zpبb ]_[SY02W303CS\j| D c(`ܽL~,ԐjBj.B r WX?չ{LrD%mblo}PR1fp5 .+|!-YsrZG0.J[ Apܵ_h<^{IvQɆga1.errjuxXc*5 |>[#@s1D ؄%U@'g3nTn\Y,ژ );K2e|r$}mmiM:[a{>D#V#h8e]:0Vg7|e6ްL>Vٻ .˸KCto{(ߩ:W!x f$ޅ70''b.R2)NwbOA~G`_uw6y(6GcUZUZn0V<,M0 t@&Hkhf6kxDdCnO6[-nɔ$[u״`:nj/V pW#|ZKMX/'=suS%1FounVV_26!JV"2 AGue `(JIi& S6ytkp+'m: ~? SmۤuwuxH(y\R_'?OKa I *&ijx<5b'\[fϝ䴎<>OvHb&I%w8\W<6MaMPx KNe^?KXCL34;`=alOv)n'080.o5JE߀t%Jn> geЌ7yolJ:p_Vo`L`L3Gdܱ @' @e* 44!z סJuK)JW`Ҋ kl$]p+\r۽f" Wt7"dQ,)@HUe27:7lq`w W_,óʘX6i ;}g\I\?JN"701Uj_HHIUPys:z'Ӗ*'ey×r <^&#a& 5}&CajxU\-Q!>]?ad髶jr uQbtY~}0"䴀᪯[ odu.7:ف ?,I<vj1.Ԫ _DqpiA@uˁY4 M*M^ *a+ . tTWv;rTero‹Kv@T״KWGVlV$qDC60Q huhT cs - W$D&Y?Jk< ,E * pg2tV_aϮalWNurӵ ]fh|>YnqG8=4d;r0Sv6A.K##-r?=)m ef6,n_2HTW*Su%qNN8_r6Qr赕Ø=}V @s 6vxbk5N o2E3] y]uHur*~^e.2V\ž͝z{^+P@l -JkMD/g~ _^d]2WoLI< fshC[uTsr oF !eM 2(XC٠&f ev#2-,G"LN^Q`7zn~nEP̫ 2X:ǰbZٿ2Bw_A7N6\]C?oʍHԱsh !j||P_^h`T!0~W.T-_4e99Y8,5]JҜMce< /,<8۷p+'^ߦ/r3 ̅)2D*(d`뒎N0< -M/RNM8_ ݺSarP !b$wp6SC J>=.=';u.k߆ w|.g@(*aP ˰0Iɒ;Ի;k>㕭/ \ ~L^.Nj SrLz v"  tq 7)xnsrX>nhO$0wF9kzpӂ6J,67ӲL16]9|݋ ?O_@  Ӵ#vHyZɅ00,EΪg85ZɄ0l9t8t'Pn=𑺲:ViK.:a4\LJm}  1?rP^\IWP5P>Y2Cn|[M =C{kz5lǒ.}1]3Mw{cźԟ#zf hE!9uV開4 B޽YY2#6$sN< 3a4K>,͵tuLnXۖJ͋km_ß9/9r ?qn8U2?߀YI jxZ-ulsTæKv˧(p6pjJ6[(xbb/W,9J[=nɧrn E3_R@YR3nCջn#R*yJ|߆_B/݁Gy0'1"T"*hoƣCW -"s I㛰>iqEf3eI&44ČNq+R썘%J1u$?>75m6, wU,y."_υ_VaYtwOX%rZL`o2n~8$wvŜ dcuG||R^LeF^\Cy{}S産 !ׁےCy tO]/i'?P@i?Oh&tC_"I*"p>s`L C? ̓;ҔmAh"ϫW/v+W/vZ~>'C[9-՟SdWj3[>E!MAXaÅpQwou_ai& Qg8Oz52ujƫ(ªBG* <5j+d=Wލ#METu$|~F 0'mZ;AI߂oA6JNN٩|9+X/C#(6ʕ/._ vFwh)p ߂Yb{ ,S,n:P\6:y)|Q)iJkps2E>i-6b5m(]vTN r(Sv QDO*^%O1-gO859p$(Wbnǰ[0nWզ'up:ʙ.0>x /L{8tV3)V/Hz|@]wxdx>"wIT> }DG;VO@‡NF*@ ca-yd!4cX R . h׫ap >hVCv7ɖo?0Z!(d˩ūJ+7* PX'yǝ5Gk_?˓(ClP q*I8., M0G{4d ˦iEsPo \8؁Crf& T@o_ ?tJaTBe0(@_U0&@(vŶ7:%w}`L<}{`J8еZn3 r9k>Y0 >P0΀fPd Ю3"{=s7dsHIp:x7^m zCVvJC!&#Qs-FlI9a&)ު62JUŷnԿ u\jlTZKtIބ`".NI2˗ Í#ΗxT<ovw?|Pu.,9b6SUDP=] s$Dh(\M;@&YP%͕ʹ*v|1K^z,i]჉7A:%ftaLw~ gß$M<#z#-/ *MTmv9 F+u@W1ӻ > K8ZC S@Û6B.Vy(Ug:f;~t:?j$uH_ze1?ˁ9(s3 N]aN*ٮdv?AH@/geyTr8p)qT޷u PGNy,Աo uyD__gv1Koh Uu~~4CZ h"I.@9(Q @xN>X߆j@8V nŬ(D{& e_e2ن_u&(cDlT$k=R x0 lY.8Q=gYZ̬,SAsB'3X. ;Px?dnq֦}8 PތQZ{R 4M_556ᣵ_YާǛѷx=-.9bT3~R5Q ӢڇSnæT8;P6q [!%_HJ}ׂ-+_H5 g!6F`u[6 Y^%~p'i Ner+%d<#\ pρp_lB /;eʗ"i3jWƤM 8*vhm[,QA̎ʁ],ԘS |!\ɥpc-WG<4np NA3< '(.<~x.9-ƅcpl`!/i@Mrj:(NLfo?7<3SLB y7Z+ʜwa{P0>tH|0r42_aNU#)X:SCBL>Q˛pFAl8)No (<`0"hr©c[=s x4Aa/cWUۘUY0< Ys9gR`e2$E>]Ԣ d7 Lv9cUm2B*JjOWyٻ& 'a.pviζ-Iy/:0#6L3P쬵IA2#5. 0~ğ.$@h#S'Ju9P1?k*,(xRTst1eB\Vpi5vr<"YېianЌ}O$#TķӍ'2\r zoKդ1;`P2ax,mxf/-X<ԯy聡K6 aw<0a|)AIDATf.5ś?Jd{*p ށ J 1oG'ϲFvp*9𛘲MQߨ6=nZ+gA,ZL9ېTOi򖷮7Vۥ}0KlC~5<&ue˦OM>d[+pE>SYܺD}Uڣ= G%"ϖ|& X=1 .O%Q9f̷Q!W^jVa ! m?#ٞudsE{ӗ|&]Y74F0EWu(~.T("d:՞I>.?%_L}Bw,h¾چ9'OoQ FD2VX5|2!%x*-N W VBXZniQږw4nf;zFfE JhTP[=WTAYAǁ04HÁAQhef[]ܠ4۫aCZ$rF[}+ZS^~CAVL=9<.֩0# >$&+ (I;  HZ:"Mpshʫ`88j2ņz:ū/Xנb\8|k`amr,g?p Vtd4 O__Gڸ"S*ѱ|ъbh"\cܔ80>#A?Z'2T)x 6VHJfxK܈0FZӑ&'S0<$-M>۵ZQgl9hbZp #oɐy ڀ|Yw^ӝ m-oqIfS|Wq[Az'LlR&"&o)vGa] a(p/M^纤&]$awތn A z8 6I~6SzwӼ G#K8^Q+&o^MJF;z@$Yn96ּْ}񦗬 e;=#U` ]JI|f/ta kOGYLI ZVٕL!S: W4U+aO0@i&`31d3PY\B0a nU Lqr56u׳o<Op>?IeL ;kT^ lh ^#0B# zT5&KSߟe@5H%Mj~4lQD|O:B7@2*螪< |!*&$L-נxCGpTAԓ49F˲H6%H ]>Pw"{ME+q \⎅.?So qc3ԽzQOMՉPP4=gIlլg _ })`h~-8_LئSϛ:iake \;w$9&o]a2޻*iiItIb[oP-U ya:zC|to{Y/?9!_(B'c>IA6L_Id^a,3:K"F ^֩*f$e>7۷A Suh*i5hcӽ޶4_"^;H Af`9SfC7lVcqsZ<8.\_1#x6 2zpiyP8gYC}ٜ T{c7LS3~ YC 7|k_HW1Sϲɢ=( 8t2 -ʼ鱧ØHow!f==ep)"oTT?o;K&}/C)r1b.y%I^ 'v]t=Q3`| `bPHxN]b`v07ES'`JŽaik` њ6VɃ,I"\)!dl3(<,9B̎*r -v~4 Δ`mgC@Tk]x $yaſR,q/v["7 [b'K"Mpo BGpa'.N&:C`0UeYyr[wtXؕԼN]'ZY<odku2"WQh}}<;VY]05A#˹p -2S yrs(Q~`% 2{iS=fdj\ɉYawMJb8R0\*c[,-^qs-.GKd7kS!;:D#T תI }{a8RK2֨K8MBOؗ@㪡 X'Yz՘9ɞ0ex5$;ʘ,퐩fS# דlyd6= ._lpj9-Ɔ5Kz`ܷ驎7M˅$b{_Jw{Z($O'K{cW/H!D+ aEs擪DTkXȔn:a=LECm9ӏ+ =ijڻ-:C'{sw6z09&kU,Y>_$'|LI:gґm+ =KN}S̾iJ3R1`HJiB ,ˤFM XFV>Mށp@NHeܢ`#}IZwFx ;7c1_XƑ'SNWMA"j3&sz KFP^{;mS{ĪdTpDfH(5bBW8f;E2M r% i_ئ H^](0K,m9fAkp<1J0 Di)ݷ>Z.m?^PP!fSðW@:  x_S}B'SBW Lc|aeIģ͑VdmC6=`ċY\`i089 q^pO{ x%{ڻ܌)d|: ΀&xoD@7 3ڦ0 l5|^|Sp{:rN؆^xI9.T}L(T GP&hK?ohT9`*cݾ2Wvn3.l/38ZiMl+w?[r)ʩL*2EGBe29Ά `j/Iscrly KG*4M7UK5/KQF\u5G9W|3=B< 8l-*$)!W6["ڮ0֥)Z);9N}NAXS91PkM"l0K>'5U0v!ud֑ j5~~R7gU9S&se tn@[>@Ի` U_j8ܮ֥!9 ,lU ֓yhSpڦ|"5 ;=' ^ p7ܤBI//WcG+3Ћd“ af1K6%']h`^x W7\!, g6dIq{+/5rr*U #LT.xNyELɈ=ڋx״ޫ{o(_Vj e`$A,S;^˒& ˹~M#20W= .Lɰ\8 #]׍un=0L$́ԑe,D= Ue*J985 ":a3i2TfR_fv~lZf[x0gyʙ#/짣,myß} }{k`' +#bI\I,P#֑La-XRjKQ٤F1uadNcf2q0^[xV7t*Ap na3|F ÉLJ8R&S a1t~hLj3_hh \˻.'ɗU8 Pk\8Ez "$M}3`1 R^,`rn.pFD_tI$Lp8ZAfH`݅mԙR~{HBS'Hbs?`|E Ag!/_[p1섇˗,nbʗI "ea7# v[D34,awۚ^j*F49lkd04'8> ?T!qTGV ?p<0|o - b?YWc[ *I[2=d-2Q̕3O-xJs&y&鮲oV*~U4brLm`7lW>7(7կIj^Gs:̇Q7W d ؆;audP.Ȱ;w_>P`\-;2.._aI6p&Y2>Dbq;=>uȰTjH#*{Cpځ à$  x kгTLisj!~7ma)PIEn I;չ _+ۑDMRoC' = YN!QuϳRN 2OtT{t$8 &uQ߷RnAsll6?&Z0 e_̏<Z,F\ђ*4OI}Kt%-_-˰B\$ @Q\̚ݪ)x\s"NJ&v`## آғp*f%Wp34H7%8)S|~-Rn.f҈jXzeFU@[52d;lKݥT.Q'߶Nh9]*rʇo;$6 Ne∋|$ǦipzFjmmFr&0[ D`q<FJmG32] ݼL ^kB)7e*j߆{`p8.;U񞇡dy̌ȪTnok{e_}w({T=^ #hwQIL]?G !l\2'+h:9^y-2wn>bNlM7AVaX.;i[x?a[eE$FSV]Y*&6MQ Oo1o<;Ĕ{@ i9W0uϕd)Z VtH}8N*X!sgj4ź/ Kd_~8GͲRNaɆS?W&-H<OG@gGӖа^䌩z `',GSl] NuÅ!FCo?߱5k\\ln e 1N/f_{}gV1fI gKhxeAnлax8K0=Uٳ|apl8[+Α-F|.QjUbTu13.a,Q1R J**}(l7}=؛A; ݛt54G,_ޟwPNƃEl`t͌$ZC`%b>5mlXԧ)^ Q`sQ˓Ӷcj]mE-~H}9cN0,h#Jt8h3bF s{IͰAn1% 9~{`;E!n}]JUZ'58 0Z/COAztlvT|h:tn@I7= ȟ`wyLm% Mqa6Z$ATƫ>;p ce3gW4o bʒ]'Oga6\LO%ZnV4d"(B'( g֯࿂-n`%m`w+B|Zm5x 6m%[RJD2&YQJ E16:Tp̐f7gm= \V8ǽ Ý0.)rdG3~ J0FcjWiϛA,쇻˰Q^l n!5Heٰ٣:'eԞ2U%"qD[~ )( Mp6º6/DUN8"!`|MB'] ~KI $cǾ wP-ͫvSXK.#8+Q6Gٗjs/<(kNfwԶ<noR7ap 6{8 ;O*1\ؔlCs F)R;LSbs4X*J=-MG:8>N[|G6lF{SOsam\T-x=ts*SciT0Q\o(v#@adh^a fZ:|Mi<[d|1[ϐ*ի /7cE)eߍ譙U9LvMdFhRH;s5[DK@Əf.q < [kǽS/uЮ8Sǂ̅~D Ԇ@8[mSU.< l%,LPO>K?MxW0]!Amֹ(.L ɛ<~0ށC SŧamNc,_aXw4]m ܷ/]hBv.inN(CɟiYm0̇MX$|:ySBE CeXHI j:2Nɬ5j92D}}/5^m!>uU.^iHazgx}FF*\}!d Y+W$ 31w[3~/FgŒ@~Te [6 t P8CgÊб]`J#8!ކ'})'%/bN굄iݵr3 fzS#Ҩ'(i"|'E8-3%.߭<1#g:-D8so8 C{QOn!©%kbΔWo]FP5pBpD2eߵ`הxͽ]9]7˱~l2Dx\xz…>"l"=r%w{Y#)FN=wKZ_v"", պK$l̐oGOǧ$L{gf_޵@!?YEVxLr>ѓ!+#n%/1&zCQE75{kys¯ Y7n S 8V-qxN+ra `%}V7f-m+XQ/;uh{^2&m/Vx $#'ʬ=aZÓpt7_uH`uSD=z{xuS7D>ȗQÁ)A-vV%b>?&:{޴;Xw~aT5_T9SOWҐdŮ0TPg9-됥X[g$tcm74UO Gtb`e-KV}:*fGa|_c:TiOL2h<:CFʆ%V+q#r$a |+DX g0ބuKaj@> 0@v1tEo+_%bkujCo/%DH[/`,NRmhU2+a'Lnu I"v$bVSwDS)@(,M,GG |'NnV/I&L01drx)k쀁pImXQђB:Z~.ةzt`d8cnLSn6T~uBHdwIƻ2|Z-` a cu!^vd8LQU0ZBN D E}0eAiH8|}S58UToԳpL3.*6YӜ-H[z0n&8+i-0ԫ;fxG-Nw-,1Sݨ,!v? wdppD6,S56x6dzghm!gbiéo)[3?ָypXGxkcW8(JJ AVMt%a<(ٙW*̹u<*lEv0ˍφxzv7Z0,4yrS]Hue o׽uor|#g-Y+ Wq媁gg&BV=8lK2I)Iooj2"\ +a G2 U{~rVЖTA_>CyS#u>=_PCN(cj 3 tGàl|;oJU]F%C[9IWhm(!dTw!č64 GEM mz7cB3XmeUtbHH=RI4iHZUG lEޥ3\ G} e[|:eX9oWzԣy8 ;e/&'/.RN2>mb[NN 0M)K:L" N<K613}DŽ]?۫%kq::NF-Y zmȁ{#]C@C#jkue؜'4M[0uG%Zd͟:6ҺEXVo_4Av#)†`O;,IJ `~ s<[K0^Oqd-V?Qkbmjò,4rrrrr`x⌬(:g SM ;(%0f`CJ~8|Q^T1XZ5Y[OM8r@yx gL̼yh :_]j^Ur <-GIBiH9#N[O?WUrLl1/ݻφ=1kfںZW.3 `!C2z]-{i kwn /. G=`pʤd^`K5Άfpxla]ZÌ 7sĎ68š#<+W; 2Yc{*2 H ?4 ߙ2'< %@bϪPV!Z*ACt}pK"?WK⼑ zyP/(M&_\ţ*2=3戗V Hϴ%>S$ChR!N=׽wsK8odxn}w[գԦ(ZɌe&H%1`W ߣiiqI &+us=lX_<ߧg @q$ݖ+&{.!dw%|P@g8IG1_Θf-Qڅ${eo(j9! >#iKJ~ gr*>%e[˶_G 3%0IJo-.|> 33 0?+c<(@P ]MϷqCal}Om^gIxZ.}[v2=4̷@jvG # Plj˘6-O20 oM2%]&&ǝ(sui +!KT!yZ}.裗0{eU''`~ڒ䴆p8pUڒEK쬳NKwb;)]s8KNJ ͭrNrZa/6Ch'7XggKڶdo\n\ CGcԴa !]K.Vނ7ل+4p=wkvjGU pܤh bg|$Q23fDgV-ᔿ}2̂&8o@E$OvZ(o'xLn $Lʱz e^$'Q&Hf`\Y'I!/!5' Fu /D1LҦD-qa] e58C^ }]HM3T:Rfpm R\ .r U0mګH^ߋ,Ra1tާ_=Ӷ"!6ʻN zxEkìW`Wg5Cn6F圆{ZGũj/MF>/Ͳ3 &5Di=H\4v|Oݥ^uLYe+!ihmw"=|ʊ@ay:r_ھ  =3@2ӭda4@:8=eA<,PQxD^m,l8cfؚ2H%`>5$Za1n _"2b!JM+cie˄4 aWӘ haI5c3Ʉ523v-1Ǐ})L%;K5ܬ- \߃gTDWn+&X֢ >'MؒҫTڎ0" `~[ISxc:5+י 1RF.dj!F"! \oh2e^5ݩWA!%ېi9÷}&S$9E)$l`gy_{m EiW+̅yp\CﮟM 2߯2%]T IFZzYGӭ&2h"RP6ٜ,p&̂0C4` C`D)IvWA>kCݟhU oy,L6Ew `Q ^QJOO,`iGk_!=mLRp̃5Y \.+yvUB3K1BHX~Q {9K, ?)u6f ]|֡V` @oE"9lC%󳑃\6q0t`TIsr"z.\ ? IjO@ Wpsr(98A-S |_X*Cxi4KU ~H"%|Mh#'LCGq 2YjVhӍ釓@;Sb.oS[+% Wc C"Na7KJ"U̯5p|&%( Î m'g`Pu5%O@|SMFqLYGёV(AaAف$m|]ңk)PJK/mPi?ix|?G3 V&f:.t4^symCrS$IxN ͏5 'o0(27=f\|&AaȔcy2=TBէ:,2v6 zC[ww;Da!`7Ԇbf`C ]ҳ y]xDM/rqїs1 d[EqxMz4vhv`ZvDA"ȵUEk.\ gqsa<|W9;$z5%k>a#̥=Mcxi x,~a >@thoylT D 4һdJxǥ CéKXWcG=1UjI0`~A,k6ѝ3`zDiTCguьIn$o QeQjL?R} ɪj|:9𒯀|v!lb])*[Bj^]haʍ1aPAGhg [ /PptE jvkLf |n7g0^ҾdG0W"HxѲEq11$/H4C.<,gɭ*c;-!.q ^^e<wr}MB=# 1J[64JĔ)[rCÙ#Ogx: .,D_@G(@7KwI[+@7*SCSw%b[4 sa\?Y[G|^9Ip2`wC&.t(ܞl%4w^b1)g!L2!]a84ҳz4eOWN/ %sdr,quX {# ;r%ZdGU >MW yaiwcVEgX/K&`8.ú%xz.Ru e! i9L^3`{/_KǠ:s!RESz%*V4v,2 P^W}y-Jzzj=c^( WVsW}F/ZOz F%F8[d_~'Rjrrp<#6:8y2+p:2<nW]᯼Qw앶 n6vn?:9G ~g cQxJSp@plF^{Y|k5ʤB}9 &lOPѠ5Hq Ed[7U-X[3 `QŒ+m|ryiqTGPZ쇣Gty$=TLϧ)"I{@*yV LH<3< )-FVtγ9ӣX}߽wp|#?Ր7!.~:|Xa \qdp{:7Qi1Åð6䯷d>ԞjȝCaIΰD2̒HVW_@2(gcܯtg4zچ:sP*V1+tjp \,i8FYyKTTT>rr2 nQ_h sKnԻ!U)ᖝPŰՏי8Y/06CymX%~`T&3BUYJm,;bmb*q֖tCz S/Q:UK 'ބSyX̌S@~( V8|VpPalfL8 [akb*[z _㾭d~p_s'ᤢ;R>Q3N"Es:=}z7ZQ0ILv'*Xu;X1c/( Z /c `f 9GRUVHŀ W)Q< G~_zPTa?E %47s7C]_#\p N7]ZtNM="1%PQ$^)oڽV1+g%Ѭp8p,+enZ4CQ.gv>J9,Wx2$4lCC/1oK:ބRYe xK`"8VebLwX|SbrXWΩf,s}ryDi(ؤN *peX_d8I}< II+΀y6.eҰO u="¼Z6ىk`; \nڀvWзmdn<aQ: (O`9V5@]bxZLLcpSFIQg^節5ɏRt¸ h)Y! lNjZ=T!jc|?&2Q45{a7hE̎ [uK5.ÔWX TTLltj*~hD%~ͧBQ2fׅ) o%gtLh]FM&Vۧ4 _NOÌN)C13b /ep_ea^@σOv&O޲.%rަB͑oPGNAr |bX)?x矉iIq 1͟sLY;3S0\ժA]8ɕ+jx$? ~9B2B#CydKw:z+@c熺b752`,,upr`4E/<{UWfAGH]ރ*2` uEN "q]oM{ջ'Oɓ(Eb2mvumˤV/ .`7BukS#5YG!: ’z~;!9K6ץ:WX&.h`|o2"F3NҩaMLaҡmEk2z;XW/΀I:<kc[h?0NYlp`zKU2#ϟgpog}fl=*bVWи :{$^ `URQ_S;BĢ!J_ɃplχG:VOוD\ S E.W1_nܼ5G<׆|%b#}V6r\^grܜyFV-c%QmeRSG2CYc5JIxrD*;q LFT+L;fzH&Wn50å ((Uc]E2k љkSmNCx{d: }'lb-g=KY0 yfiqpe^3u1(x /a\gOuC>Dx;+1#(<Ks*_}m=nX^r]{}V"c֖ iT HUJIVK%QGB}`Y&QƳjag6^n6aNmR\-/ERLNmu)8alfy#^`jv1eh%Tk8JH*/($G>>.te46n=Vc p8hwauOz _/zTf4Yu(l~QcZۦC߀|!%5*-7^Q/L'`)<F3wZ^Zʱ(C^V9^݉asMb9keks]|V`3!,R^Z1`l]HKZaX@'lGMWSiq 7\8Ly 6do0l nA?b*Bh"tCz-350 %% Ib(AY^pYOi#<+c;O73?_'0vR!+V\t`#Wb].qCFnf/Wv)kRMn lp =dʪ9p̀j *Ps6iFú!a24_ڪ^4YZGaLGSj@j4aSatLz`zE\ 0<YZ,0 0a%Kaê^ئؓHU0 #aM90J5gȷbȐcЍu? ^(`x\ Dbpge͚ב~>R;Z]D.C#;T U nit .tXSouw+a #viq_zeQ4;$ /gʶ 2ꉅ],iN׫\oC;HH?71KTItd7N]<%˕LJ+tm-{PVp%;[M'ɮ4V6 lڵ1& NQ۶0/Y ٥קRԅU2\MУ pUgaf m#-XpmXÙ"2~*Jq7qz'! NW}[ȏ /r5G`t0Af U'C`B7ԫVS"4Wd13n$n8`?n1r@̂Fhj%jl'W ӥ; TA~XsdJjKdð[Fd(̋J)6NwZG~f H* $QP 'g8 T L^UOeFSlmv]Sp \\B x/m<na|C ]~Cn-tΰy)vK3  *h i}Nn6r)CmIYP/OqO!\%ɥ^w6ogx[WlKUw7?K#a:%  Gt3=.WD= lWyX>;$O`q a;8pXb[f?ZzKTŘR8PUhۃ;nŲ 9"W:D2WO]c 3T#sY1^S&u&R0o?>?,óhëd{Wւz?9,.2h7Q\IԔ t\ ;CtW)eoǸi^w:l-3D#u#e?]C< 0C ӜE3d-1W}C` -zzˣKzqSL:zCʧ0J* %~>\.i|>2<ֱ xsӁ&]X*Bz o}PMݐ*l;m;"p 'y[w5oR%γz0l6?jͥtptWc2,Hp"Cb|?+T3sGC0ӆ6WAC_?IŹ;pfs]@vU=CF e} V)tCm }7RZSm ̬p[-z` zxvcJEk7wC6C]< JWUJ1e.V~)Z Ca(h>%ou%0pHR1Oq1+KV2 g9Lp.NV MIŷ=rE?{ 84y '8 K+btxgfu%enpe3VEt^ Pw5aI-#L8-SAꡖ=8>`Ri! ߁`=> f[Ă8V?Fa,nߖ'؃o>_0 zw΁MpoڋÈa._Ɛv|>+Nj3 >,n4W^9d+^6۳/¨.-/LZOЈg}VA &=#狄eM$6AOKg˺1)) PKO#w ^e膛3ίឬW-qj̳ V{#9~0F;< gj /L5݈']Gk\\*0ЮhW+WI]Y.+%*Kh@_1Q1*A?&0\E2DgVV~ `e{x0ҵY!.֣P E 4) Y+v.r$NC P3h y60?XхQ_P'mpOܜu@3=I13+L?k0. Fy/RʮAl !F~ ru0.Fƹ~ezE+kA PKW) R[pwk y^ukvdNJc`sfz ?f|ڮXgV z-Q&ӕmNI"HbC诜;XX5 Qh ,Vi LA+"+Q)P7d ëzO'MslV3V\¢75N[ gꡖ e뤃3Dd\n$K0T*'| N8&BIug `$ҲC`Sz. npCQk~ç̅A 'Kk2g<)TT_+óp[яsKkc j|?JʒKիsQBl~$e ٿJDyzͱN4`? 87WeGJq[z>lӨO_@0߫5c9U+Pt=QYuU|찻#OLty xT]6-$ Z¹6mocx;T$BV ژN=5lBwYuM"ꆢ NKOE6Ly4> 0I=û9@}S*Qe;]0G" ݀1EuJ!*˔ٔW&ڛ` o'9Α#'i0V% VǺjNe݁eЌV50~6qvzynYd|LdC۽a 롖P0^3GI}AhVT e []<`|>&_}\5cAK(1BXǀSd< 5ːD'x- * v*19y*! pw]C ocbsdC=_Z"'/vk'9!wԛ0EJHkznMkkꡕђ@W };8qLay2p*__!y3r;40iu_4f LVoM߃wLXh/۪[YcJ(%,R2FJק2N߃ k.ZAf\21v ҠBt9E=4(Y̒[~0zw/zJޖ*0e~@z.FЕ'cCNܡ!rl,Qj@9iW9HoxߞõԈ6vȀKzzQ ~pH}OmWA|Ku~;& \dԣBV^-q2k.m` ,ۂfLVY*p8 3bs ?bi ~z Ou!|&\py =:gɞ1S|.:r_tվ0$yw;}g:df0.qGD|Ճ^ $t5IJi oհCߠRifEK>:L\F,S#τRlgcjL]xru0Z*ƌVةo|r=JTsK^۫5DӥSMWg>x Rx[+eu:>s gN'Hq^P^x>]ýR dyƹQQu²eH_޿연Ѯ)SȂNU꽇"{#[)Ȓ:z9Bҙ-b>07"{a0("5rkgk`%\̬ig>_tWR[Y`*HsCOёp}%Ypz}lz*Op?+`!b֛٠ujj ƭLkyK[-ӭ#H2@uY15j> C.fx}v7-H;s_ FFeUa?Olx$2^"N>eԘ9|jI25kB?NcC(F B9JƔ'c%,%Sy\%. FzX MOˆybMn̂!0&0]LJUf1;Ht+ҀЄ ?ǂY8`nMю_6jNE^=୰.(m&?M,evWu+ӸGlF) pTHqvU#9o*4#&ěp&`epa$Z2`'缏e>ѫ̀P2.I7v t,U=:4 mkˆ8K6mom;JF~a7 Gzm[P;ސ8kӋC2=Pֳ+P $ PY0 ,YrG۳Mao2-YYV343PneUBdhOguTKJ r!+h騜>W0&y  3-5Jpd`-ųÀ>+(XYjPC^Cp/VVu^Ԋ63Yl/*R:ΔeF!v<#[= qt_H҂tq݀30P VrB,dwE7:K`wQ/L}kf{X94<ɞ :6ٞ*pinLҟ?rjCa#䘡-+b5Ee+5gI ܎NjKql꙲nNF= _*&}Rj׎fڴ#\@x! JVr/g M7Fz_svFdVv7us; kն酆29N]<7%:mJ 8?U %5S6]ڊU<j&/'"[oRP8z3N$AƆ1 mEESu U8A~ߖzȯѶdhYHF0=뻨bEL Tň/lD h; .h̤>җ΍xZ֥yFʘyibI[XVHr+%WcG0I}e_zM߸iwr8kMg,i#,OV<dc*`{n!PaLW[fخږU+*|JrB&#\ˁpWVVJ9{ѻCVX'-~ʄua,2 KUțgR4Nqp)<7d]^GO>p5Йjp™-A}SpgH_a\@k4ka/--ѩ90̊K/,{ d)b?wu-IzV٨I5X-RV?,HW1x*䇲DG,l M}O>ꡤY?rLM<% = ry0 ȴh jZ*}[rUee6 <"U+^r3H+"$%^qW%B+Γ9w툖"G+B;u -xb[5/Y8Hgŀԇ&u< SSI>Qt#θEэN;^)_dQ0 y UBLo޻K[=D^%22G>sٷQbA~ _q:qv`0Nd\ނW$Q ^Qlω$sת(u 8 >zE>g, Ȓ2^MKJpJI LC 8h=Znz7X8G!=ԟ?5.N[>gBeͨ<l/8'8U^V*\ sTxE5j@r<TTPPP>%5:ffJ.1.voDVPPt`mT~;9 ~|yOr$x 3z7F]FQ8Qŵ<wM)CܛڐhUQmtgZ 'Eg#|&?ix̒UiWSqI&, k$]OZn饰PH 62*_#a GR*]YA jѮ-dRl٣W%O2O^v؅ kx,| c߇;3)PACY"mϔ$EE/TA/lfS0J7 OF$)pV~idԋUjZ'-#A;.C9P>_1:Ţr|#D G5g U5)FڎmDPmlq@ӷ2#5G.@ .$2" CIʎ'yۨ~pwH~z-: /K pcV勏zDxӘ i5Y6^8aJW R]W2W"}U $'TT 5IԯYq#T?Q .E4CQsKSa$t@97A$,(u"b=g?󣝭mx8ϜzԚ Śrb406d s+e+>sJ!Cw~#zfy`=`9S!ցPehrN炂)t'sT3x5;gʑ4 '"nin04:yWX$ȃFjKgy6m:.*#KK!X|bon4&0x29O"1÷X8K-ne]zԯ"*5S5  T2gwYqxZصK]?wI59n2~NkiR# 3:XF jp" Wk>8[>^BY4 DƳ` RȀ~>ZUXR?o#2 fzc7<ִ`Exyp{sJN8v,jʡ Ln3DL0G&9sٕjը0^/zD$e59FC,F]brIHْBb4QڠtCIp~PFÙ04\Ihܓy'}/,z–M0')WXZOBoJ\1LQ;˪]C Rs;#L4L}􁁾D͈Y]"JcݐnpQbWǷGULpBӗR2whET-l0peeȂ6UeJk}e;lp:ZG=5Rz,.Xr4Kq@t9p}2eJ1d)yx.[ծY@㸪 9O]xvJK7l]L6c>Ar,Yڐcyry{-̒!cԶ@jݑHQp2ѦCfDY0Iyq=G'otn[%e00ٟXuvʣtꙨl aa҆WslLpZMeȈ6u./kFٲ42Pq'Ta10Yl+XS-W s`/| ^78삧:3JѐZ%cðN!)];1{A vŮJx_8V vw %p+| RAjpT\29'fh)ՊxMr8=eDyrؼKKhc}xm"m jeH] \uYVxHYfu7rA}5 F5L&Y"Q`Y}~pl?SX~ȅ<a,s4Ca3&l\:D{+!CBv)`A0/{qGɬuөF;'.GƋͩw\wl=>0( RuI+j>S8 VW`׮RfÖVÉ0K {GU,7x1xQk `6LJ_F-YYQYLTfCЯ䯘'W=Ze (Sx!)6Ⱦ0ZE `W*%tK8B6Qp8*Jd Yp`zksDq1Ze]>KDǚm/8'hM[U%]a>Z2:{W8XTxCR,q= a/MpGX `gE8>"G` Bݢ2\Ƽ {:x|-/p&;w|.^ 3vቩ:˨q8u顪,B|`Q{0j꒺WT(CxO* Y [X}oDL:G,E4](D5 m:EjM!ef[R?Q`X%-0\˚ާB{z`,d*>4zi=wȤG~teXb;T jn9Ya:B?\ؑ_Th\s(%pOKhe[:=+Fm}YCݐ+<A0&|VKxc P=`<:42xW5$/KJ.×D _)pX{qa|XG[1j*;q*e,S3n`ԂMbT[ Tp+\$>2ceVa͇ߊcN\ ua48^_ bd,`j_KZwTlGŸV %\0\ M)n'h9C< S?Ԧ~XyӮ!Nի5-9Uu%^w\5{f{lޤJ Yt 2 Cv]UG7 ׻C"OGHG$#z.FÚr#.et zvPnOՍn(< 7J|A ;c M`a5qƻ5OavnQ}YZUnv7gsKۯ6u3,i󖈟UoP/BubaO @XO[K;b_LQT*q5y.mG8NZJ:1X $uN= zvgQLZ&uj(vM|1͵MŞp-lo|6uV"(^pB`qz03,y0 .N&:]Cȉs̃+u&ߴzj]W`Wyd=a7nIr=҄\pNB($Oɇz7 !ߞ(K- D֢UvU\]FWE:~; . H-7I ;!aF膀1Je;Pp}){*e?R4awO s0BI ޏp"ܭwUȘCԙ0gfQ*t+:{d@jVsZK NDP~? ;Uo*~Y#qqH̓q3yo?$y?̄+]@?Bpu[EV7*F>g2΅.pq2k8 &I2c-Y f;BNÒ$(Yau#KǗsV`Ey=$,p[5kpFB&|1Ԗzlm(/d;(cRWA#!nZq|H32ݩJk"dk;a$lJLжklY01QȤ6.&+m4\GŀH͌eZ{jQBwdh T1]?ˤ[`e#uay&̅ !sF]e u Il,cC`~tCb1ɟ-n'L}qzM41DmWɳ>*/p\@>쀦 yx&&~P' <a.W"E(lpmWEKG-lLpob1 J-G'MiնjҌҹKzW:c\n, u!W]Ra7D*U(| }pPN)Wk4{}5@te:s-2AqGB]C;Տ[ߖ4ՠ]p 8A&cG&>wT=Z(æ$þ 4P&alfk(\χ΍Vq;=ͅUx\#F6lE˶UnDC|?zqȭھ}0C ^ Tݝ{=kBIj %덞hct`<, ׅg?$[8GX||#LyB?qZq'hsm{|ZL?=:׌!_0Lı=·6*1,CYlilKaJ浺HȽ18 ^O FË O§Ч_N`e TKAqtarjgGP fm2zz DTNK.Wv;PFh珋 p?'Z!stpa3 o:肟 1vuCnnIp\߫5"^ 4xᗰH冎BQ} ʉHڃ}W nP0UfKTt+y؊E`% ngr':,iPX;@o5X/gHYf٥WhLAjKRȚBPuъ X)F[W >6>»$VAR}`#[A8.bpTB=oѷ`W6wQ[Xf?v+]TRe|YTxzkZ ޫ%pX0һX浠4GFsbSOpV, X (x 憁ƚTLT3oI}|Tq nU5~=F*z17i52l~"?@TK+Ea5(, vpᛪS V!_M(^MYLҿBmWW­^!$9{aԑJ1:Ӹ< !xnomU%3x.Kq-fx Lx2ޥ>~oqq $W.CܮD=>f,c"ϫÁ M@JѩXOV[_} +|Z'n<-"4?a1 /k_SS;'Ju|ERJYŐ15}d͜]|m#l0]0s9$]s#AzohX Cd41Jp pF K8/i. MVvy0\in1ޣ?8 sdidzc*vqUVZ?V$j93k>"Wc,eLtU{T1B⍭1ΔEDER0Ê\z9VkX;`$ce*UYqfvqHT󜰱j)p00+;h~43`<1vUD)l\?3aJOxX [*WZ~Ca^e4aY %F U7 Pk˫%X+ً;4c0D<\ ׈?K vgKvvQ8p0I(A:Tx\5ٰc-D="UF5D5BE+R^eΰFUU$j8in5q] ʶ=&rNΌNReyw~LNxle2i,=!eH '<8CDxxXGw]XƷ~v{dSb+`-=ԖsMɼ[CZMxgrO;E>V6:cБm@榳(߇=r UgeH8~=Z KtQNIᇰ'E3ЕE'zPq )-aņ+Sc_X+zٜeSߠ~[M\)˄!kzԇ#XiYOI8I7T$E#I?oN,rfo8 >~߇(ñc:sVT%WhFd/c>XuWa4#<9zG 7'|W-;ᇉBWBʌaklun8"V}o^x||9uN6-  iVlZ:Ȋ>!!—ৰ\7u҅l|Q:=$DE~eɤ[Tu{s.;[]Y2=dŚs'9<%XMu"d _PuɸGd (ؾ%#\Y3lXOEyN6D t|OO8^ț&Ct} '^tQ$vݩ gV7d5DGŁA<-w{U_xCbD;uA)O^8Ty h<;%6iUDo7;݀ WuڎCv{}%+?%Jz)\]zpMlz|B@ɛR MrS>JC49# *Ga8h \|N0%M_x ˇzq3R|P׿HH VMzxޟ?[RD) )V}0-_|{1Z,)b <^5}D;arhqߣVdw4 zU&+FZ< jlee dC%=%biX!9xKyGgZ1z-|&?wjfv/xcܮ[%7*Лg9˷|ZafD"0yۑu‹`? /ǔAa= r8`k3l{:٘ac17.VdK'U@=W{2l ї|LK^-gn:/GEXGday~/ }| $A"k0DsFd4!K%߼4fog\P53+0.7l8Fw} P!avKa"S=* r% 5%m&j=ƅ|["p?||m!jqP3 / 0\?EpK%;Ganꡄlvz]?A?|-w^tii(F&ーelHa(/vc`H>CvϫdE =›3(HE= ?Ob8 zC֛vXv^-湰nW?!lh;L=&Sxhi S*ZJ/mԷs(Z(ZD^ ɞ.*BSSk+#`QX;!!dxyrsrˍ!x?s qP^(^|]%([fh90Wmg%Hd(k7N}n1j/9c:1*˵ *%%O4cK;*,)ǻf>gVJ~#ֲC IB 躰_G:CNu=pa(baJE,K=jwfX1_Mh/C`Wjg_OlM&+߭vB昳셹0N8'SOipZ] a>́@C1&BFbZ̃<<^[ᶐc #0yӦiq} 'Z \pRXͧf=+|O cdY}r{࿀,.xLmWZz"=^ T=|8]±c[0/&$8 ã./!M/YF|& FK(xwO*Q}@]z@zZ6vl<? ꡫ2*X {|.nSP 7;0Q^74f*+?L)p*A(8wT<=<(W-֊ݢC;X{13`ܦ%|:ٌQk1з'0n_o3}'x=p_o0 ^L>Y yy.Spa<yeϐawan+ 7:u[ /g{9&⪇v^o fӠ;G;y;l\{$AeMkRn`7Yp$i]Kԣ6jRU洳`#Yt838pW7d$@c7v7 ᳰ(xX;5U6CpmoA6'C<*1w}+f >-/Oޅo÷e37*6otsf:fiS}ی^#ܝdEeoo-C'.uyW ̭B ga8ka:a*űs&L{-0f%:066[\LCn'wk֏(XB?.̅M-J[p}"lu-g_ 6 cᨲ BTA郌l|@hZq2D[zէdI > W1m8Я_λQ}.UV(快Jb[gL5^{>ٰ\ kͽVԆJxT|[;,ktXiF1#!d,qH#V ar1t\SCcܙڲ9<ףe;hU CagETPuk^'$[ B1TRxdwx*f#@)aLx8s ;[txdW5Ȯ ѹ>Cd[4CR%3,,e{[*-CT/m3bC,R[nBwՁ-T[7p>Z̀HΆse_NqQ09'$əh1QpE3GTBF7tDtCG9j-|bTapNeK^꡶mXWimhO)c%Y-Z#'<-O;`JLkN^&=s`*vH[S3#q3aCDi Ver/Yi^eq DO0 . eN!u-pZ$a}YoPӰ1yI$&8ɻ9Qªr 5'D7dl3"a|v*\+Y4Qaة~m4iFOԌQ>Pndݐ68 [M=T!~|nwM0|4 ё;ϊ ѩ?}L6>:a ͢l2hv3ysog֨1!Br7_B?uK zeSݎi#!Xjmɦ Z\=Tnޏ|*xf>_mVБb K`<̀)p/v+:P=&~ Se`(INp`0 y0x:<3}o Rns NQ_ I> _SP̆W(䲌#0I>VYy>z!8u 38֫ :x"E% 8@B Q8ŧwu'o. -OMPj0^ehK08k͍5]s_.? ΃5 xzRj-y>tYqlYRGN-9FpLQ2hßa /xXa8J&PVXz%p,AjA"b'!46!"HDTѾjۘMVρy*e@6(d6H@VgnH cΫ'w%Su-x+< rTq=.\W Jc[*p[;(+mP`FVQ]iV$uʷ&m1ZTZI9dm}D_$],V\v <*PIPWlTN81RZD*0+=AτG3l/Py@6rIňؤC1I*l[WZB~nhCA'#_''F[&wODI7\ q<Tۿcӡ"ȗ $WmGk\ʔj})I8|΃'3+W ܠzVJ72-fBb!yĜm 卒J'W;FѼ,hҼG깰AvZ!?Cj ZMsHJ3-AմEj N م0Ur׫WdDՎm'Bc!o4DjZH\{`p>~=EQkp8<f/uQ1(f5Z8JCtTsuTњ/O (2 =!~+_Ȧ8+/nIpϋϓ^{]8΂̍&r>o`2Է''WE[ט.I,f@iwY=v;Z1Ymbu&ze:p8n'ȴapvK|"knx V N@pȸ8I.ꡰP;bOW6skIPDmpыx mj׀ d9!y7OZQO&Z,ͨ2y)Ө6HzX].c-/Iѥ[Gqrৰ^t~k|V26%;T(<8o/0?L]`-b\A.ۆ{IĬt[Cٳ^CmKկթ^aΆ7\(5byj'f0+ݑ\o|R!d ꡊimh{0iW!b)`?0I>va*|Cͩr"0Յ@Uz>OH3 b4wpě)AՕw Xw^*! ̺ uS60v߁a $9nypzV jGO led>&.5ުkfW+Wo_7ɜiuɰB ð ‰p+L@OJ޳U<[i志vh/Rfp[-~7y0R8 K+*ȪS1oiDg@#;rF8?wr]yR.դcas+hv*8qM"35gf7~\?祠e iYUr 8 ~bA,50R܍wiEѮ4i]ńEqNRovN3.ML).\_&C,A-7嵿+YpX;<=O]$N33ըqUw Ji WNđb z]'@4D)~#?:cֺfbH\u@Ke5ў)7p5< L `L릢7RJ8$$~Ѽn]RډRPO_a;]&#=SgY moJ6 _F"REUEŻ' x!p"tbx(dhY Xqxye_zN^V0۟yE]BuMk03RwB-ԟ5D-=8ބFD99p*ܬ  hWqO=uV*iwPD0 zPDz@8_\8Y^(8~V#XJة~+[\UH#fݘ ~>ЎUW?é˳̰ce:`J^\ϥ#.8N_4)biR8&[DŅHZf90 /ۏꬢau*\QKguGanvtcҶkj@G? 2&(NBM+K3COK(1JX7ꫝpLc`|U g5DS}#.t#XY}:`6Lykbot9(C0){`m >?jlY\w'g2S|U6 n*ѣo~Q8p|6&eVX,0V ^I{hP ;_ n=&OXd|uy ,&Zԙ/D$ lF`O=h! p8M#a 4/lQeQN ~wyz!ҧ.5WO?a]w/<"YWOuk3W?r5JٽѪH5f)(rq40xlTYJ':4?[fbw#`L?D>eqN.i*l"ݖB۝XL:k$8I^YF(<[y[vQ:z`LPYmjbp",i9Õ:vL "̈O=MuQ;jhEE]vi3<Us f(lgUpD4Dkȃ$1C5 Uh$=;]X΂c3O Βz0s!W 12G3rYt= @:SyNe0R}>$ eP*Ұ ~~xi05 ]ݜgkj C!B32Mx .lhtzs_r::p\/1jfljbX R%/R97vd`muWUߙ2PHtCe8z''}a6d. ѓ,81*հR yhZ0o)iCc ՙ}&!*p7hpw*0kB߀+̪?~uM!?Oe0 'Vbg+r{ b;,$&d$!(`"W"ݜ]fz&fY-kbf4T6sO!u 9+&)taJ^xȞ[z<BxXjkxԝ~$hevN 9OS$@Cd?_pD};&â PC'ZVq8 eR 0 \Pѷ2z ΟpAvplO b:.]Cg.4iNb L*υ;9^ݐۨVAj8m <2󤓷w(5tZ'fi1 Z%~z W]e380GSMj)U'5_U@Jˇ{0Vt+z ,3+'< wǤXkhgTs(a 3~kjEVlYa.gV۳/{N^׼}v?7!4հ0UD CMChU5Yw^\d\`Xl5DnG +#"r #+π v#eAMl/  KM5i{|i?I=+pvxkze_Wc;", ձjaz`/)U| 1!tQ%2Ϣ"zQutn ԎAJ,`GCty =0L(׈>qrPz I~ֈbGӰۈo`¥/RJ9qr\`yA2ث9I=4+OCRim-T =ըUWrq=w?U.ɱzzl9͊RlClћ1ߓۚ;rT[Vj3Zr^C8UӅle¬ mGbs<_٪s!Ψz#0ή߄gɽA/=UD 5 F?vPhlAp2쁇9*GjvbwNXOf> ApB70 :a`|219TB7 pX9uC_8}`/|:Dǖ9a=TEU?B5Ioȡ 2dOCTQPge<{}("gLp፵i .8.dvM%E,, *A5 ]dd6.ga ͝ʔǑ5;3Ui\iǷ]EPkp|b*ik4_с hHߚ9 .xMӅl=6W^0Gv;ckdm[QD#ps*BQ9W޹D셯Qz/tA wEI Ki(A0OG rL(脅Y 쁛  |{~ېnHSS((WSlNwǪ"85.\أZl:apԲ읁Z"kr>L*yESaXcЦ`CU̽a#+п>\n9?5qÎ  o s*OM1!w׻6ܠGg;$TgSd)C끛_)U<1s pkW,mywUtU_膄jI W7> OrS,uHjXhcӖ:$!}7J^* 5 psPLg^U0W`_'d.!'6Ĕ':vn?JxNfhkGOۈ42;y cm [$e;q* I0v#J$Zt,bq x\vMp EWfۼmvNٿ5rZ8#Ma(0K\:@W Ịkӡ[|yvê|82̯ "~p+-Q `Ag]ްhabFE ~8s9l9An)P7 +a:pY)'mjzKZPxi0&!6abHѢJszY2ϘߌizFWq|i[%Zxq0Ny WvX[5w7<:$GMWGm_(}`> JR!/AX,1r670MyMoHؠTn*ӣpaƥ$dֶ&= \F8cE<{Aq6x={yp˵dbY%)M\ q(9r\ ֝Jܖj*k>[gYp6 T)›JI 0p:tʘĉqU s仾n![FK<] PA+Qp5ɓX8zߎw׊7GQ&J@&<O6q*_8K?C&E[^n`$aלX f˾ ?qjxs/q#,%@j;/^,WW ?&U8 k[_+FUX= zŅJb*?؁m) `Vs&| P%t ΀+i '*/̃|z")Z;` 1]e;}BbCiۡ4$  k*xo'+kN<7@&ځLӡ4(8jfʡ͝ZvlhҦS.#rN)J0UV9GN4} p8:BϘd eӬۉQɀhl3Z lީ{ N3j +B4|֤ݘL(xgY_MMk#|Eά^#p0E-s/SR\#\Ssi]%u%JQjwٵ*P V7#׌.xv\WMv'AqJYg rr/ wE>mJNTI]x/ ;_SatznԧB..1 J@bK!j\b&)FLݴ1=R+WʰR)a;sUK$vmak*"d 0[%y qmIj &cMm4x5dd17''uj`r:Ӻ=\X_5_Rx &F +[#:&t0SuCc prXYD#q0z<ӽ0 f*`l~0AXPt${m4C޵F8 HF9mk0:nq·S`L;op <_I h|o!Uʨ cӱǁ0Ja(lW OH(_S *D-iS`ZIyJRNysr(td6g+l5ɧAmd8V=1ګm%XKj\ux "lx$8jNh=P[8+Y3ay {F(/raA2r@,?]0O*Jb1kaa j"d V`#>O 7J9=DI&{TsAvpT0W& 1o+A-~ 6Jrv9_׏dQRS֡vnC0'1A25_V87TF:2X/b,gNzsC}INO9F7ymRzyv i_tdK0N*>EdUM>Җz#Gn$#~#`b˰p4uw |X,[@ DC4qey 윓zh$ /z=JEal 3̯jX/L} ЎmXCg0_4Sr!tX~8qߣ2HJ/K<u{Q ѡT<Q7 ;p3\5\,*z.8OD-${v65ݽ\6ḟ;U_#cO>L'DmGLW?7 dApy*գiSM%5wb*)䍥b9<^,;~o<%Jʈ ō_"<s/_”9 Y3>y =RfMۏ{RyՓIy PM"I<*0|N$WOg^$- [ _%:>1? " X_Rz\PiA2loP&:\I[8!kS>y p`E.0RR=8yLS/p[a&alu%-?KBqED;E0ztl%!vUI&"H2.H6 xw>`N :,+0 P8(|?)@6_vrIyZ]ꪊ3FG YRr2 supX>j䰂ft\1̖3|l!XϽ)Ϋ{ ;Mj;φ1C[Z$HS+.ތMȅ f:FdR &[࿁Gp qd~jho\nхaAzM> W)!gǍ1әҿ+)ہ}$/h3C~`́~:m7K0PFzwb#y۰΅1jp x+lWT@/`za||CV%LS*!Cc ⎘[ QH9bjC>e-M:a6I0&XVYLH3s`Wt\xUZݸ$m.tBkL^$x8KkhX;aHǹj!k3ULѰ:8Ol'`k$`*j.;[U.,sLZ({`+~![ RcaߨoUH`3kZ7X W=ɛY~S8*Qߚ ,g o _(JށhkP=pMZr!x(E!2õ%p Lʞ] `J=z@ۚ=6^t z:JIlS1,VD]v( Y'a]X/g,2ѦHwt C#mޤlXSP:g9sEBCT?{)Jix6,Y].5 &:?aQUfT uM=:NI"U@"MOW/~qmmpAC;5!mzhcwodj7K8"凤3qD1"y>FIMlҐx;*aRct}x hVC~*Ti\ U|kn}1vMz7}At8QН^^.j{`U0"@Q,z8IT=S'Q1XʟnGԹ ;j"chAoŌFuȓ߯6rl$H0R.zn(5\ c36 8$)^A&9 Y GַiM8a71iqdM_ .qL3戡S2[7jԞ/#a@R(c d]Q OR&܏;Hy"fR-RI~5+nN-4&Fm6MWS> x/)ЦŰبKvC)ԥ1i@ݓAǒtPh qoRK `Ջu_0GTcѹ@pB=)aL`|1f, R8Fgo!][--j΄˗s4O 3`k4Y.6l!! 98~}mۓl1#m}_jE!Qy+ItS,G4DmUqҁq^]thSЍpk/ca.uصa}D~RzD9_X~)1\9L!J0:< 'f<%xL;Wh_!h-kt6*YY x PwU bҀ<-}`tq)&t'wNC{><%ͨws62lT i @mcFw}o?M0~%{}? Ԟj[Dꥲn NTIUW0և.~V9`R`m1UDn#ɑwn[;l⤣ ˄y5d6hlXݐyעEj9wN| i\)V5'xM?)I:Tj&'[b4K 5~ʭB>&z/Oے<</W*{RZhQ "w%+Cm78ap"0Me;h/hzU<֋ '? EF &-a֋GG)0*>ҚkTbiɘaA+gW˩0 vjp{ dJ͵4* n¯sՉ8K[(+֢HYPa3X*RReAAP |\[e} vr(:xKVI~wx%RMG+bO.dPV il)HOs ]MjNƶٶ3Lzi<oD,y Ix4f>+> "0YI.#ܑeZe0_b@쫺ƨ;:*oPjmY؀d5XUU頿r§[a/f#I;ޥȖc7Gdo-g ԶZqJ)ҫxT3ƶrb YJ}<=B= &ym^rIJAUt`O@OrtevPmU9g?ּ҅pm;a<b)n)^(6 ;OYvvZ*5hw7̨SZdJTQpr2pn6g;4Z.{Q\oU9PB ! { Xll3ki9d$@B eGN}̝sPu *9hmU,vp=p6 &6؉jEC-D@/F ^P:0NerGm+;ʄ5v%贁 kB_o 6`7Rs#ElC讅wù2:8ٟ.gzƿ2@Su BNF>G0 PNC3`X~eH-Wާ]l6Z?d桺>co~kwd>6Q&Z5!8`|L랄j QF >j nYp[^sPd G Z8qu:2'[DfyhHdO׊g桊 (wgj+l1Y8 숊EL +f9mq]9~qn9b>}ڡ򫝶ʈ3Fh2<M\}mj4lm ]:h9,)ЃR qX`EnPe|d`,嗤lt*^&D[˥Y KaSu-˶>V~0l26÷-k7tWmueuxn22ƗjcfXa6:=[+yL}f-,iFK `lh2o.xEv`ɉ#Zp\UzvP>8p:b%)²,b-80XZsr_-plbk e P.?t&T. AFF}Uǁ*LeŌz s/7оhm E7f22*bLWR]JTFpJ=PȜ-`E pVĭ63mM f)>s7}FFF2ս8 0pYMShdCuV0-wVNzYkV4}X8,~X\}eBwb/]lx|t{ 89_QǸɨ:CG9jOv{кjX #a8`82ȲrZ17]:;8}4KeW9 m]?7.Ey Rh͘(sUF 5=VjiM##m(|$v{k QFCu*X׳8iRSgddOuB!3fz;z3RHQ*2####"gKaBLl6ZdFw{B6OTVa8DEX`13n(2R+>_IԐF322"`*GDFI2\emVlPE)YFFFFm(t7b~])2RKK ,dRXSuf},ƏD% .spx YFձٔ,##$vݦU˜Hqzg1eX+ZlCuEpx޼Ls";reFFF9D4D?邌oe׻؈8###$g74`0eJ]>wӠ|: YGs\Q݂J)(#XG ny2,h{8M5b{a0^ղg `yZњij ü/y_6*]a΁,6d޻W1:XxG^mVko®;hg۠zpM0Tl,U_ /*wd0eFjCq*|G#J xh3ioa4 ?LV_n&d4yw>l<<_i3<8  ,a:@ 'ii;O!`2mEPV&!]Aiq@w ๢:e,~0N q`=LIJF+[h ` K {a %ON}OH8nÇa={d(E\VDY p{Tpΰ6 Go& }SQ:0 yy,Q 31 /x 3CffX$D(`&Es?<a {(Xwɞ_Ӂ>t<##)A IywfDs[ . D2Spb'PpQ({(6rBs6aE !2"2LQ9Y[f߬$z G5vxJb7t\ .tyq SmlWzؗiVek@ I#JR91Ł S= CXv0E*΃.1v{[ Ϩ10zHT/"+ 9nj- f{vWQm_@ӏ]lUd,0$tpD$9"2P pjSzHn؞=]?[udc:+ u_N0_ۜ܈e'xNذ+20% 69y x'xP ~xy!a\!~nUAXʸ^I0ېaX cp\,9u)4Ai`\aqіKa›?.t ϵm 7C_y 3#85CvY38:Ԭ ^8uI=IDATnLS:]myoo{6#gIf `[nܤAvپى2JԐ6j`cMjم(B9r;mS5;>2e|΁E-5nY V}(QwLPF,2RG; 4Qkyĺ5c+I 6o@>]۹?ac5 EuSV k 7U ffVâ@N:J;_HW쾸s\ nB _z̯m4p%?a9F%~W<3Gȗ)'P=u:O5q0zfμ2Jb>K ٭p/JΗ"bo<%%-0FBFY ~um uaI-I%0_6 qRL̀J]| Ka:Aj֢/2 Ȝv'TLPA3np̖Y`URb\ Rl+S7Ax> 3kvѣ qR9²^Mu|t{pt6TW&zbf'*?9~/&9B\[G@gh ջmLꃦP_<s\ c$_߀xZ՚="ؚIp%R͇C{ٟKӊMFڈhҐm0r@q)'1!y5UQZJ)%߀SY8<6 atՄ!ۏBkX9Ȩ&u/|9J8;)KD]T ;ss~pN"bz/H:EM0 z#?IٴG9o9VEi9hYCCTf YXp0}1@t]qa-e lI_` #a QVa ҋHa¸_x8 pG>Gڲv3gl$|6 JmS-,Q3Nod`,&GC—%S98WׄV:dX'ȶ@|IS;d?,iH]ܱ#B( +Ӂ)8 Ϛφfp`Q̗r1Dh_!M{# +.vRljSr!P.uKXSE`\ߍo>wm_AsNAGؗmC0I^[6;HYcX֖\,<h;pkw&ҧӡ_"zr&CZyHsiExQO㓥{LMpi띠m l85`#5XzMS#L3{o%m΄~IɓxlR[Zo8=P.#1qeMbl}4 /R0|mp7Nt&JZW=8xwŃpj.<h0_}}EtU1v\n9tb=؀Bm:.v{(}7%kN1pf:K~Ѭ! L]-Ƒ mhE4 b"9 SFNMER US*qD AO=r%)"|SmLW<ғ੤zFLGI}uL4h],Oh>]ezL'0.â$O<*x׃}S/7-“gog0 aO Ĭ ]m5Ao>#󢔾X@O+F`w^ G6ŗۃ,b:+S>ݰz|`tR#8E~wHkܻo´P Pi$Ӛi6NH{CNj)T,,PyVv{z zZx]!r^+xs^ON ?Brawz((֐LUE~~&Z܋RGwC s$ bjNpLIhFbI ,W pGC2KZ.ayanC:ɰvI3<cҤ$)dhv@GnS/a t 0QvL.%qjLF 1I^ٍ87I{xu^bKekRa ZrC@6o_z8rLihNRUr~l½e|G?Ir0 [jm̫(Upyv*0?a=1OU؜T斓BGGu>s[-*gĺM3JVt 0P~E۰(׌(KY.Lқ'[^% BGMf{XN@55oP(Կ5&y/Oe/j3}&U`P+w;opuRD1fq8 `$*sUOl+ZoUsV04 )4ĤʧiNX}{R~7|>1b`@ IgY4BXUe {Ol[[|~_]%8%k'u9#d??h-5un:Hq ֔*r,9 N#ժmxziΛ?kHb ^CHo/WvSٯ}/\ m,QlZj".SHAgк{` 'ƉX!s0p\& aDž10mJq~c" `3e9fBNW|1OХ@8;,mS iFs= ic< _|̃p[{nDma\و@SˮRefŹB) gm "t ֚u,"}EUq˄KL_jE띭R$a., :PCJ) TB`nS<|~fb] 7Ia1gtpYjrn"y:`_X `t| 8oLÙ|9+3@)ZE枅b݉;'{LQb\dZ_07E6`!z'Ig*7*5̏ȻS1=8JC6f}$w`ÈGq7 gXZj,B1h^[a<3yk6!b35GL[3C23a36m&3t< VWiS;n`ZV(tCfC#yd િfmU-.g8Bt|7|-ێ Tx vB:&gaNroxS4L8rx[+8DJ+UMNF? IJon8rkG|%~'ɷ4إ0Hͳo1RVÅKfP%' | Ne<Y0+pG zb$- T X[&yh]fv0z@GFGRt%#O={!a=/5ElFuerѭ "JP OD-$[ G"Ԧ*Zܧ'tj2 ^G}5|S6ͯ0m쀫rB桩jzl3JMp%Rf#Ž& z&x+-aPl='‰0qQhAj:^>^5O#L $5=(Qir?iZaw6;81S?뎂8 8$Ҏl{iÁž1fve,'6QP$?rE)L>ur^r'گ- [2\ TG3^5&_ryʓ(HY%6Ou*eTNpuL3Tb6ZX][nI Lonxng}~"U34q0O O+UT|s!\e4luc u;Z[ +bH?Yۢ&ڰn^{rAGə?\kp(`*!X FVcU~v깸9x؆Mg4t(h  payi] ?a: 'ra]80fc#c x3R8όpgqCV"Tp*vzj?x}fyy6_p kQъjI9U/" ^GxR]'D' 6Lq@hVQQ@W*[ zp,%sIr^m1Sl57V`J-K`&*|07aIG-*%u7<*6mJZC t3D pݽ>^iJ4'7JK(kޱtWE+;0MC!Xٲ3&EzH?M tݙ0J4?d4M,z9z-̅#2cecs5y6O$\~Ga ̖..ȕB/)0#[`aGQ1;< ^d1U$Yò:_)@#Kؤp0stTXY\7^(IWJ4lӃt W;er`\ &y#3BdvlS{Pq.9ٯqUD ߰Kd-קu6Уaو4Hq+X{ 5-7d'+thېiv2<99qFRۣC4t/{ah md|guV ` ʨF {P@8{t3yB}iՀf쭊ew'k⣍Tv Ըf brJ+[H*@[CwG·bg |ʷ< `0q(l:fWJ VK}N`0Ao4nS% < 3]0Vb<4X]NlC*_wDY76Q0$ TCu1c0ꈃI#1406t#۹'Ɗ2.ujIج\EnQcݹ!|{ORbU :6lDIڄe#$s9Iۤ:ɜVE3gK:mptJR\âQSD96媸$Go3}alRx#_=9vŃc n`{F8ޭR/Y ]C{#<͚?]K CG(v/20 ̀*4ĉdo}!!aRA?uY˨.0G]p5Duw&|t)t#/ m,AyE4Q^ vð@Jy2WYyRYH,D12V BVm<՜(YszP;|,=5(fMxZm+&Kf1̥UA|UlQ;vaMa'ig:rj$-Rr~r+pp0^RE$ؙtP+ڡ:_kdi:f gmJDH }<}vu  {T<xG~ ?۷<rg+lu1p}WNuk\Z:æ'Uۃ=i`S:UU"XPuT+՞EE{u^l4A h] P>IW_& .'FwaBؽPU؆5 `z*`K7`4)ܨ'`Xň£LyMzH{{j^xN>*}Th)I TcPA ugeW{ )K|. E XO6DY Wɡ3 kn5Ú$Tw,?ҥA?ma\X`Z ޔoG\O5 *nSZ32M+5sKŒ~^b'*/i*$Ǎ6ejHDFNz`KS`xy޹ "6@Ҹq>>MoK8m .sGot@{G%*EɭeCă]ctRy0Qr:)}aI$ GVʑ]XaK LfiKDH:@J#F䗽@fb{K8c: v'UVn:Ӑd,ئ,ek{W[0E8'F:4[98;W!|3i2 S";XR).%E{!0MZJmCM6o7.eeDOvOi(z 4 ,`YvN:dE VqZľ* +v>޵" ByR>o`g`?R#`!|~ K˘X7^ǧѶf#ČDOpPa-=It"=A`8$XFz8Y?[~ި7{fqPai:6gU)ƂK&jgN<" {({}FbNxYHߊiȲHW~{Ux`p" +x to)Oy6l&upH0Kٓ p(A"Ǜ8ma2-`r̀<ڝ;}t.*E͹&{קxĻ/!B0Rֿyh +*ϥp]}nd߭: an},Tk}G-)CcO4;s2 }lġ;P{`TBuࡘ́<[wZ,O8Y C`5OFX oqW ,x)1YZ QRpfC*Пj)^H2ఒ ɐe*tG`== kbm`8V KUGbv0nC&>jc}kya> h2m\lMwtHĢ̀gpg 1bO1|RFX+.d0I4gÿ T*΋0@R[̯\WԹyhj;^鍊lCi_ KZ(ez˾z"@>qjW117a 񞮉EhjUUjɖ%z6Үm(GZq|_*T`rhޚ{c} zԤ&ZJ%Օ>R _/F8`^.4} ,{(%>(>\?e(̄{I- lom&J >*G} ȍȘP{LT4E=KW}eCOqWVdgC7uTZmCDg?ÎZ=̇TeCm((7ZN WU.QV{_qcp|Ks+7'5طT{7|:~IFM{2mHx_rIcN^Wsgř˩x:0u֚<%G氙LJYz*~b:,8N$QH]; ?캔ͬVٗB _@aB Ǣ-P~8Эre, (O`>h>e!ͳ%T'77a>U/O?QԹ~zP86ݳ6av8,b0[+L#|ASa*`C)C- WnخBlFnUQ8fvxcka!,8 %"Ɲ0Rz>WÍ U%-WFPXTaCzw5n6 @!Ytڦu+$ =k2סR)*+M;8LEUϮ~߀%BZw&"wI8]QJD `! S*YT rUOCrucs$2`Ը,Q3B7)laW #2%7f{WGCk+)64z$eʊ2 G`LQV̝0}^8pd lVCNiSZDl3ۦ16zxUUEĵ =a֍nUhgVEr=^ )E^go=̆G-)e!>luNzcJ0L Dmh}S\EC-m{&,;lUxHmV9Kj)"#I^q{G|wHEM4P^~pߞ%qdۼspj2 'DT5w`IF^?:unCu-NC>^L9cl#(K)f/7*A^7wnBj| Dk'\6Sl0Ti$KFdU9'?C1v~OnZNX;d m Tl',9dCES2[3*7j' |'}"`-tbƜ VH:ΣUlzr_q(ᓿ/]JwUbxMn*LIQ7~60M%Nr +!u Rst3D3TmCcp:tuC9tu % PI(Xf1_!z92]F j8V/&-T$(ې8UrR>nV+gdn3 g؞w^K=ij4J-5ҽF̼ Yxì@="U.g|+s7%Pe) zEW-k`HNنVz }/KM9KMza0eK3/v1; AGA; aklCc[C˔hT?5?,na+P]8XW#zgk"7iʋsJ 6ƒoo RG)>ͣ-=*[k+!LC`O6lC~x'|\(u2j}9!o,4funBeLR;yB'^!0MUCV*8 knPYS-c{o>oC:N@-vk=xmCT6d( 9њY ñH%n#,6Ź5.[a %Р惰FBh]r<wq0^.e^BúB0VÚ0Ll'fO M}jV1f-i:/`vF!V][zhc)w@!\޸;! e3iU+Qz>Rd̪C =gUZwyp1̪픒ڐsOr zdCmȧ7*m`$޳W6duu/2YhrCuxZ*rghe :pNm;m /0 i+Eȧ=ad#,@[@Uz@OE3^.4כ2ϻ<Ah6pOY֬3W]JԵsV<1K 'øwI2_ol /aQ\hfeXY=RN>4zmC O_U4[J}zb:} @:2m%,T0NHTq́aodD<Ў(|1r3lSؖQS 838[4z\*vpmC+aO4>lg$60q':aXY!C|n_E 2 ua;"XSC =#@x Lƌx 3oBN C.(Zv Ru'9ݪ__Fe;|." RQ #u;7a |x7lIy5 o5ΕՑspY`Yp$b|Zx ޓ`0{px+SԣŹ\H@-l`gY0k(ja}<" |> P? G*(ϚW)@gao5N:6 98$,7 WLCu5{ ,$Sv=*.8 x&ed\8",Վ uPUS?9fuJø^4Q`.>$4 .ٿA;a` p`b<8S[mLXQ,aK'w 43|;>3)|C#ܠgFTʾ6*MDG }?<3ds2̄Ep_k=l s F Q Z[:f'vu_>eklס!qIF{Bklrc;оKwDу|!1(ti8. TtÍ0'o7ǫ4'6wJ=•Vbn%3:Fx 1PޣA^('r{ۆٶOzD8޷sM1Y`w4jP{հ٢K,i9)60>sDv@fK|EV Qfe-woNx> W?"|wbYa6r-յVek>Xa삝v۽QTĵaRmFc߂P D&\>l)y(_x)~pG 0, # y@R_TNK뗹0:n[{^Hǥ`!"}iij9{]hJx Fgev&rLEC?y|pV]G$0u;&'ޭGLO5]b< N#`< A@휺sAX? 5!ީxh<5Ldޣr}vʩgS89e (.koz% [_N[rFC>^՞wgYe~&EuAb5_L}E8ƣ,un\MNK?H-5O`cRz ~W|Rf]R[bay(i֚SeusiG-]6>U^G]7Lut6Fr:\^W/OpWRt 0C7Ŋ 0Qq3ΗtC3 6ja?gl׸O0w?+onx͓Kfo?03Y yaOR2,¿b?ê1;Ry~xF*:<>ź[=RCVI(֟c aH`$jHV0o!o3c.N-b~)ݘ..x̏+wכ8~*ojmW\&CehFs:(-{ oLJxoZ 1edhtgu+^斄ńޢ_"B{Q mZ3p6ï%_~%`&9s#: xQlCN_Mh/oU/&2$N2r,.%}04*=d]*VYO,)yŴ5Gx8YSg6J62Z&EɻQ HiPb CBx6ҥp 0oo|~v0\B2[!B'wϓgHW{@K{u0y2:eQ"Gz,̌ }YR>t$6'̇ bmUӏo_Gu>;?v4植'I!s{Y5 Jy#_jm|H pUH9ahG!Y^QQ[y8eEk%3KKB jn 2 E1X*وp[M-LN Yt5tǨ3W6 N0dߨnIZ"gi7N |/VB,ٟfYW7AlK/~$]cqZϒ49TA)Sˁ"<8uOfJ)pQ8(uk /> K#hz3Egxa Qj򪚇{.~qzd auekTX]d Y ^ۯ`a)h $cæ4h"Z+yF8qfA6t|}U1_"IFj9 &D>Kk87p |.i1K}h-A5r#fA Ÿ[?#2-ihÅ=ymGה:V٘P H0} q5u\Z)zȞ'\"g<ӪWr4Tسdg[Is#aa3t6B{r3A{dg44Rt9=7xhˣǤ{pp27AxVT pBWt;$< kXy@SX j'pFFݱ:9]UڕV*V59u'`: S2UgB0Y&7}plm2JbfGju.̃,sv pwj$xgJe0bl tͯyùӿp]U22243 -kj|obMW|I8Vg22ąݵ&,H 3}ׅ[u2/SK h/ipFTԮ(ۆ ?jt2P̔eX*s;Y9 :b–L+aLZKQ u8x $O} az<'^Cq OWx?L).a>H6@xY-e|f3c 'j|oeƍ8>cà?,܈222JD$91E^Dm8Fr6o;033KVE#NzUqʈ)U5=c(+靑Q0:E]d[ e" 6G2_0aF{ƶb#{0JTLL#,m'_Y%+2 G `-kBV_3fsRp322RVԃ.dY2"2cW-ix28ю3L٪rO'k= N ")ڈcEW%j1sK*LoNU2220NSq$}pO~avnN~tTkj=_?񙝖2M%uҾZG~o.iD:" K.pLWIrHJ3v ߇ pQjbUKpi] |E7P^p8!ߋjW-OΧ`vJNSdUp/ܟ=Ȩ=L~ {vT+[ 8@3Rӌw/}pR`: S4Aas7э5i mjnos0μo%qz![*BjKZN ܕ$߀T&e!2#`4şfۚw¦U}Lچ ]R\"dDd| 0qԽ1/Jm!Z NRuGt,{D{M|#?_/_^})P֘Z765p75dOUÒwp\ͻWf~ W˪W|G̋ɔx'LAgy*p޸T /ߗ^I=ṽem?y(}Ց\ Y\] Yd= % vʞ<2an0NJJ?]34D Ee1sJϩI;lj/jqھ#/3fUp.L_> Nr<L=Wo->ېŁw)OFt+0Jʻ!oY/q,UC=/T~\Y0ǯ N:B㤁^ Dۥ*Wr#QMFɣD+-u.uG{Z {$wf1I,IxC%HlôyVñ!uq~'?~q0 fE b ~ TJrwoY6٤fC㠳ޠy9%a|.Ume YQ诵Xv'o VљA@ngsPU Փ8K|[B#*wn'[Eբl-Y0L9SebdPC^Nb~n; ?Uռ0ݡwQv'Jpv4S@ @'q|044l5lXab - 9#zNQ| h9_!''p^<+mjR<+.;IҬ͛/s~Ɉm&M ংI\1EbQرȈ#-k;pc*E*jاlL,Oc`?/*n~сʾ,^o;p$]^ $Es)u7o-Y_N;/m$>-,0Z.T+ ʮSJW !f@{^''"41˳,7| o[f$S3n~`6 zfؔTO;h*0<@^N;{I o/3 ͈-(azЯl|>xs- $B/dau k{5W*JB- t҆Nk ϔbgbDw'ku;wE{kkW 1]!ݔHk^X_e-e#׆!/Su_rT _e¶cK&=旎 ll\Wcu>JW.xxS0l7,Ir.Eb /BF$niHo/EȞ p)ᐪ%~Y5apcAGyĪU yEn fxQXebrw:I2-wȣ=.iֲ} ]F M>>xX hN0:z'C3 w p%Pp~0 ;M|'vX", *|=]RN†%w.h/خ\e뼫CI^q<fE4$Cs{$#}v<a8p\ G}m|WZ߆68 &7N?"1qk1*+f3g 1= V*!.Yޗ`^`"U. cc/eO2xH*.Մj! yp<{ F:dV8G\'ޡV/ֆ1kj5T!<4k G] +ab^.*vLFp#~Cn2\UH17I^kƑ,9 V2jYr*0ΆypUR@.Wegp *]!jE&/{kMp]l HLY֚>R//JK>[hXg%5Q(`£nrN4=`dRw{),Z$n}"{TQfw׻7ڧ&@pR,|&]h|/UtCWCN/&"G=d=BiMًrW<·j .i(Ui ڿ!L)|aSȓ8 WòfZ7$X/P qasP\=B*fQ[R<8*վF# ?HD6d/'7ȕQp,w>` ]$OL[Z ̪-PR^UޝONx.}vЫzdT^p5o=;rՂ>R7E!2o8j}J9V@L}zěEwo¤ºE!Uc6spH>tV ta ̂kRSQ~{w?#/H{U ]&ɘ_O EMٳ5B'^g qh# *Sga# _+M~VUp9 |Lk>X=5` 4#:[62r AF]UNͩ\F0Fim Q;+2>+N3mpg(/kVI5!w(e<9NM[[hyo" ꭜ9L="_<|^y . |jt{a$tMs6 ,k.w|>0Rvi _#;μ25l{V1fn<)_&Rͥ8hzخ&f \Wh 0p⮑a).oCo!TJ߸ ބLV1J`/U0J}YN3$FD@`lg=cä.e@V3h3@0Yz zHU0J C@!T;$ <)w ÕakUm@:V)8?ɮW[dgmC..;Ϲ,@xm8\)rZe|΅uE3IuHދme*<W+`7`/|I.PS?Ut;UΤ; ԚCl)W~ص2.f7<؅ݥy>yʑo>LroWGaSb􁹁gpZwȒ8I-a\Ty`wR*2y] #䥞f t@ Ӽ*9NRUB+Np!ܝ`@ X:5,>D u O& HDFp,%hJ'B^S={tD~GQ(T9^ͪ=<:ALy]R~Rbm rE=k0 օV n̆G` ouTN$ c?$\ '?auE"M2nղ`,U{fj!v@X0Ч$@䳵(TQԯw;| =kdr[ Cxtv Y6&gMEo ^U2eS<` -Ja8tmjEZPu6b a\)-˚"űan+aRgV@"8ol\ ujh!*7x_/Ԍ 1Xg%T\$/Gp/2 ߃!UuiCp#tI\A~JM&.KdZ̙?Vozy^8i>tTKZ`{4r+p=Ljje~>Wx$.v\0V0Msxh2 @f(ҍ+ =a' =a8Uq,u}s0]G:P / @ v yh{sd*Vy^xW)OV(IqfeJ s" [\?.lr26<T d^duy50#p1^72&W-2ZHy2|ͻ.xBv:ۍW{t!sCOyIzz/ELa. X+njA{PF^'eU䟇'`' 5l(Z2rhn \[ңJX=\cS>/뱊X;*p ` (+г!` cQr8)7 8Phn\)eclzvZRZO a*8){P@Z3f0w*IJ)C%sKe@הV?,U2U RC}c& GCNVxn3|wtBjy?MW1=罍 _(+(a2 >,&: !y  'Uj{2lG,8urtaX"ITJ6b=LcX /ؖ}ݟ_0!"C-Ci7}LcqNf|:Jr y9z ꎧ%WKބB{y̩Qig8GfxrWv`|vM@ |X?:\YklC ڙ%Q$7"8 :WtÇ!nzjD  a=33P]f~&Z0yhrg (l;`7{пqRCf, Co.S* 1dOS`ڿR] }xNc3pRͅs}RNKVcbJ_w.N!UN$o]^u 8NmrRWe{ yT}^݂bm8&y';Mrvdz?a>8fIY OH .^i-i)zS32j57ڴR&~-/R4< 2)G߆%)~,Z3/$#Жr.1PT p;7j&Zmrn5vI)Xgh5R)8|%|[9una3ͪt'i{a+u]?la|IB  ċiPٰ57V 'AOvq1؉mKM@uO*C#b [lУT^M5v[ǙnCmnpSLYbuή7f Wg$$ûmp}5Aw/4Y ik$7y{`?̕sa׬Oyh|O<8 ;᧙mx'N2pomr7\xI>ԛi"b7>pʡ[;;*dC)1bQ9SIzGUGts[Q^%1%?;G2Lp7+rfX\ Y5(= \Ur#p qLCj8 G˱pXAU1* U@34pl]bwH3si2޸BKpPu?og+Cju}(e BﰷB ex ΅oT`|P]|KU.,v={)j {"'$}#NӠSXLV CnK"@3F.lttopjV:O+UqMqYXg|# :O1I嫰^89q a@?3'?s\5ӭ ^1ʭUFhx^QR2m4FHh^Y AkF(JFJrFeBe2gʐB5> v^ 9T'^Zvz00='ߎb>M ̇+'s: Wz n tA35 |y޼݂JMNpng+. bTTҧbV6Y l5]˨_r /+·EK&ٙE\8'CelI?|+*5Irg+}d+ msx | \|4R|jtcUrh@^$$sa$ʰh5ټe`x߭`7alB98T'^="2K`[0%2S[գ7„ "+ 'qax^Z{'5߅v 6̰C:¾R*{Ȫ:x2ƇSK44nl*ٚNKGoN _0\dʍ0ZZ1CEYj)TF-i {#J`&  ])^ 7$'am;+dN&vuŘiYT-:ژkM-3d)>1-"^5*DIedצ|lNoL@`VpSa3\o`%2 1-eXw >Cw΂p|N=RLJ9YC@^=h}I@"dDH%!m$&ً6&΃6b/{ћV0rv(er_YoNT6" DŽV~PX0N`&. vVl8S8VwSЬlDijhP_9sV_zn3C EnBymYshîVep-|:ن2&9rNޖ]eC{-6*޳I;xs-0Tla5:E"QCW ;qu Wȭ ya0q'$s8J< K:1#ot"$.3>%U[0jRەI+DV5xi{߂þ04P[ufI㛷͵TxVs!_ vP<uzCC=++&9Ca|Xx-LKv'\ =- ʽ]ܽΊKQK':·Ns27Glp֢੶v ʩV܉OVɱ ɁZV3_+qr0)nD@XNp?a<ԺVlngC{Zfr.,; 3>-L3'eqfYw* 6)|ؓu?AhU 28_f /GoZӣ_NllTf9,'Yiu֒cu6(((5a5 at[vR/f7Mʪp/pRaZk n}֪jea5V~VfO8 c< 3vg%VPCޚچP}iI9ȇͪ}SmCyo^.Ӳ9t]p9@ ݡ+LC uL&t m`q-̄94i6˅+Yfxh/cSİy Gȹy؂8&+MlNMd{o$JSp78~~+nkJOr0 ˣ(\]Z c S@k[yp8pKX"8n麟Z fTBg`BGxtC9ei)X,_TQW2W PVgkTyMJh7 !3maReB fx'tǞ0T aCYxXX'(=XH5z/~HjjXYx0e8hF rOLF_F3J͵J#UU'` |T)##Hlf9nwʬt5&4 IW5dv߯vHW"-dx[pM赫gZ9D0Mj<ʕ.n"S8N3I\#O?F)*JsWkcq8u_IvNG5\p\A]at}QkW]/A|532 a0+<&¨>o!^*B `{Q2jX!86zg_y|FB zVc֙@RgrZC +ygfȬx_PPեT|7΃W3W<ƭ`3awUm[y lFAM-ye@uOꑇ&~{T#2mH[_C(%J(`Srv.(aLX_7FF%}a -ZQ8N-b#%s..ޙ]<#KWlv$!N<2v%5BD${udO 0q`,ק! IIRV z`ZU*qkƞ_BO `Xāv} "u_|n `\4Vpu6\fy :iBWh/͞]H4v+aE?L]]=,G@~TSCC2doY?1n yw`udd3?J.9_i!0`{FFF ?I(aOM21uf(7 +vwuU,k9Zmca&>T5 bq@6`y9",R (;[vA[q(e=rT?/!hxJ^# X eSZ1VHQÖ]!o`Wєs%vr 6pG\Z%yHr:Mc.# z@۰CԱ4$V)3d;hk'1'?u/C=4'u=DHU'`NC0O1[C!! b#ˊ铤.=3v -:ќvgBfjZzROxqĤY~odZ;"O_Fv_Y#{X\y˲b~+\qT|{Zm\`: *Qm0}@BE0Tr[2U5$m|\-Xl޴JUt Ȩ#%b:hq,####g,>W$W\|qH o/e?{uKЙhPu "####Mb(*k"'X*&l(j}JB`,:Or$ [A_Iseebxk_<$1JHAݙ`uަI[fI#On3_OvE ?-s (JAOhvFPedd4 G10h$;5IEOZUIN˶yȁ0Q;$`:RfNi5q:ynū'+b1=LU0(- [<%vLgpua->M Ьk6YHȨkB/k[B)C|`#}`s-LFTˮ}_V++ `vC+y3&5myfQ BZҠ@Gɨ 2#)(z{K,dbvԐfk./23h05P&uKSSp^+{UL;Kò\gdI'`9c)MTa6>ٰMA(鋎dj: WNeFHҗ R0:*0dg+ 6S]Á@Ќ(<BWÕCRLBTt MCW_&ue ?ņWlG;@KZ6.ep#Ew5'%z9! ߤ<$:=8Fޏ$Fgbh_鈜 @ 2,5Vzwo7~n4dR&PU]Mjz-u^oȑja2סJIwFa 93tQ?V=-a; +6ՈCD TK`vFnퟑP|SZ(tFFlL @#s@r C$ oOHA•p/l  l{1IM\|CmFFd~<ĬR ~DFY˨`j!ڞLq߇f-vf/*5'e*fvI[3Ӽ uk*,Ub8 >f;aEՄͨ=۠{aٲ\Fw% S]}t {ιkFa|̦Ԑ1KT1WݷpW57`XSj]mTKɡfʪp5BXض5QUjCǃ0cKB_ݤL3Rg{ZC}K ΞHI&u0uK( ,##`fjIbS,TS94ᰤuWVȁD T';&bhL\x$<+Xm{h.|>.bxm.LfIXfنZYԛ{jJJJsZ-]ݪ?ߺ-ai<:/hSj#_S2PuoT[LII*I n>^d9eՎit))))~j7`hSW8I .8n plW`sӕ]af: C'g$SSŪ .gLbmEUO[B叇Jhz GB?ރ.P_Tr \lY5 JII  Q};#f4 VQÙ*[)z]'J&b:nL3V'޲rT[)̭шMIIJykp3ĽT x/_SZO` :0!ӊӅarwΦqCpfZңc$6:dUNϪSz Ѓ̊ɘR4A9Xs~6GQ j#JNWԴX%`WSHl}R|TE(K~kCN*34fa!گ ҝ`rEN|.m[99K$*u j|v~T:{c(2T=u!7FJ ԘVl N1#R.Xgzw=VcѺj$6%%VƲ. 9Fuv9'(B|5<)wf8P9 :˃%A(vbi a'8SɪU6?;/`ꡪC6A'Y+\PoHbn4$v;]``OU[FzPr$o mCZ{WqΔ+ +d?x4X euM3b*"w8lY*Xg]UZ5􌫔))5DgI`iko* Ө(JP)'S0WDpW|X= r'5aEMN+"dd# rqzTy}Ǔ :*`T`ܣ|*5*&|'>11!yRO?u/eꆕzlH]N))1gsFxF6.z; Mݝ^ȭ6 =V^{-6<0[m!]g*U;"%O!P%O{p,K)l(u`T̩T8Ae&W m<Pÿ8!}Sa.i}c % %. 9ȞӟͲmΧ(%|Fl enO!g 8Y!ɪg0LHLbP^RfwD9=a<+w8]}LzM6ݰ-*K⽇` 寵mGt3,Gu\kYcPkg4Ad01Nj6_ YR9C+rõuwb \dSpG%p g)43KQp45p<\ ?OH?E_g +|۫|0x̿\j:h0mg~?a2W& /cUCW.B=lP=N`4#>/'p 4H/ia^,xJ;)鯒p5 [iR7y0[)pujFx\(4?Tc_6lڪlM0l'Fsg T>65:{tkv#6ZK?)[4ýηnW ̈;b5< !0'jݺCGN8'?]/)(Ϟy~u=]KPP%Έpd$_-N-T#0”cbh jf_L%/{sw;tXt:YrՙX?p+:6Jarv:j_ YWs=@tLXNa,tk¼5 *yl0 tgz5]hnx/Wlqړs@EQSŒW[a : =|buntu/4˗yW>]kʴy!@O%}Kd6Cr,BO262SK=w7<QgY~W %uf>l,ft)h3.t_Mp3ܬ6F.%\%^$"IȌd(c|45rpNbrʘοu`L晸zީa~_¾0C`%*RW_xL ֏ qI`ulFdm/R*V9|`[H9^`eb0\~1fHDj5DmN@Ly9K~߁Q_E_ ~{1` KkF/[j 5,pbxYvLy3?=cFȩiY-a$xb=@/Ǐ=;mپT&8AfȧU݁ IK^",໇DɑtUA__'#y.r<-]p0Eg :՞RRɅ!Dɋ@90+`.9OouzмnHh`f }k1;|K:Vcfw*f$Uծ )LV=zR Gp T?NعL? KpmPCL윬$*nabRlػ:G,FeW]R\֚1!-eR=xjd)5AA" EjKJxb} S})*hT+HCGLnS_.=x7Wz6`'@ʚfݐ/G?Ysw+, "[N7J*ɬS~\\҄stڮjWYs%Ie7gkxR|Ʋ</ӓ@QABTǡ0RXZs[:T;RW^{:WHRLd,R SVm˔Ugd ɬgM+sI}nP_UBp&l;#68m^H, 6`ZXz ss6%rKbv<7ܳj_dIň^үH>9*8LJ"cU>kψXtٱI6,=Z.*3=MQ~_ҾhqԄv5qv s=0񫜞ջfR)LO_o|,fj[Ž|+ӭ&*:W J!"8Az|Ljo[N zxֿg|Kņegp,eV3@a ,㱲}Fpnfx'>S= $Ml Xe$씷A;΍Z--կu-D 8n[=2r=`K,rzRvU/938#h3++fP9 BAx3,6[cݨ (ݍw“psps̳"Ly,ҚQvU/ށfHIF+-zq$iRΌT>&Jdnw /泯mo˱m F%?E#$>)J>"&@C5*aJa(g)[pUbw-}y Yg6m9sZx9:"E"O"Mey1YBe8Fin}dG-|V$ 9T0`o-fPPCb_-"Ozu~ucbg`m125ϵHU»Kc"nY˓8_L@g8:歏2T 3!l_tp$] Opy8<[&Drr|n|,"T诇wIALi5IsG#OkKJ͵P" d,60UJH\EO@ %/W9>Ct"|] H-r0^\u#^l*vUTs%#5su bG1%ݜOʔbqWp4t,_`Zmj20 U>`w4\/۫n-xFrxQȾE0<Қ 8&}tq"4?YƦ([dR F+Sl 7]&('Bl&LwYcw"?AuI%p8tp>,>$/r$`5Q?/Hq5&"ni%ͅ#WI즒3QwE~F}|6HR#a(˰: 32Jō/|[Tm ߒC'؏ƮL9+bߓ7QTdfzyEp.YszdC%$+ËBK(f)]\_^aGeQ ̅Nͣ=L "A>spf2/~..GYIa vJԈze]lERfj>&ooK2wsƾeR0GЋ=6'7SǕ%h/}L50zKK-iTgB$̹)-TbƗKHaS6"8ovbSٲ-Bz>[**bR(߲ 6J]9>CQ֜I"lu- Ũ.e}i\ Sۣu~WHW~^9av" oqw9PT.d "IS;(9ͼt]-*ZSblr6`{ U2e^_l`Tٯ!'MM2k}"]A[p`E$Rӛ KBljƇDY3U`B!ldl(H֩Fa(7F(}T $/6Q󎌚<،A5 IZD!Ǧ`-.e֍+X^)F0$5+h2?irVq-Yy=ISHr,Թax<P>7Ɨ~.-0"_ S^Fլ ҄pZ92 %dUʺ+aOaLNmt[q>nSZ 8xJ(FT/-rf|K~klvY zDB"ozYY>q?D4XGDx][aι?9M7&7d,0H' iAx(NyP&J9/f@vũOȓZauDuIh~TFɓ?cܨ,-pL887j?P`HFCۆr*h$KUJkah7fx M0Km*ͨ3b7{ + ÍR" "Ə^)l:ճ ' yvr= WA{B{J)v>\tVeRê0p.wTKHd:} e RPY+ZM 6w؏ %ñ3dʙ@;mHvYJ+vĽwDqbTa8Tkiq{I0 ?֨qچ#qU#w"d(I d^M -$n8mju9R)4 & "LjbתB #ri=D*M/ o2@ׇ`Y^ȷ# ^^oDӱhguTgj݄w NyU- -2A*]eyXa͑Q!_d&;P-MBw퇟K, `2JkQt!ikB2Pu^ 8y)RwF8tH9!홣[vL6+cq]!m30&o(y?h)U"Iy|PnO\ ?͒ YNGscݢ~iuVǧ \[7\E~^ywpET; |~+crRjCGBX}~ EY+o97 `K/_+։2SUlLսG|'1q)3r|ZKnքJds \//"2"G *=UN9|O\_2gaLh ]BK<+ )yt"!]&*p[p 48d؀5ay(.ȯ$p:t.3&3hV\n2[|*٢'@H-6#ԒufIU*m(ŰBr2WK,XA.xHV*l8s9>WSeȄ3&=r^ޒC|}\PFm($rX,g` <CNsY*y6l9 kr~]&?:A'gK;z;nRe~\GXhwV?S%_ _/?OPg'8.'SOE0yX Q\kmx'_rޒ[1 "<<]u[~J,r&/mWYI, Yg|gưץ:*zCGàEPEK}foYG1ٳ? YrQ&XD 3&K ӫo1GdI߀Ttgdl]i2A'LS! 828E^yֻ`?K)A~&4X0`*U&&9Ikh!xܚgI||c8Qy$^lAⵏ{ V,[6"!!EiT>A(xO\C?`7l{ T,hXa˽PJq8JXsOl} 4&?D%%u~ԕDn8 mT Ҹ>.edT- V)LW<9n*#a8o3 yvZx*|_:yoL9-&F@FҦj۶3Qs\$I>j0rFZE[| _`-pn>OFVNYTᭅBo4`Y Nm<$.6T5ֳ.-a=ls= ֽ{a؏s`M_(gF k 1Pw,2*qr .Rgw-'h*y(+0[%#1 `Aub0S*O!/@2;-Ued{)V R8tkevp &EU[bp!`V,Q{Xp-[A; yXuszGuDUQӤ\F / ߃[VBVi]ҳ :^՛^aEum'!nY:9 zDrQ):D\iX&k,!% o;]>c<pT|p1P K`kەQnH#C sYk؆",!{H.Zc]YњUWꇭk6z=2`[0՝`?!/O}|D;mOPHppg:}:ǭ֕pzΓ.^c5;l> Ynr:<9$$Z 'JJLB0/O&|&ګDF5T `S%"N#܉ z E6+#EW ]~6}{{ͤ򣓬Fs*LBfj78>&4wV[O6gj߽$=nT6Thot~yh,0Ҫ%6tPbHI)tLmj ٯ \ J2[mKSB!\ Xa?Lm>l –XS-㓤RUdF8Z  >l`tvw,o)y{AV#' 9Oo&bX D휢F__JL[22zzLh*hJ:hh)٨;K+&xX`yh  v!ͺLKҵ{Yl$vn7-ϙrL:ԀI=IbbJՠ@n p`k&7alRF=as|'jidJOqípda Xh=1ބ# #쭰)U~~ @W0rfXkH>rv/|eHo{k}%pJEx,$X~$KJ20S6xhh㷆,  Z/հb)Z +>gptaI`V 0 ]Tnn('yLW E]wA1) $QOYp߬I ъ}[ׯ?&X ɟ&\2b,6deو`Vog`| }'uFnnP/Ś-q5`Jń3=t w+>2|aO jdI<VK%OؕE8f8˜``l]T w^q-t64s>S9S/@>U .knmGsjv0SKl[MSj8ܪ*M|\\\)yGdh/dotGal`Y^9a+{0}*88==lzh=0 K #QCjc eRܘJ Sa2  DK"~n)UߔVE֫$]1gdx0MNfZy(H* w8 4U$m2&۔0]Z (&~< Xe6 4Xv4S[s*سN2ω[C;J,0Q}$ä٬v)3Gv~S,ad܂U/z1`#a0cŃD -| f8ip$hih$y6j֬YثfmZb'"d^enK R:Z96Xgp'R˰GrqJ9Yǝɰ ^v?T@ڪT>w{ LxVd%jJEݸm$*#QjҪxX'YرOcU6*SkR[? |H~Њˬ0 ^e<啪#%% 'ek MRR2 ;p@>l~;`C 0d/Tk}'> a n!etU^ ^M:,e݀TnRSm:B#tjaS1_bLѡv.ob' ;*e¿ |N!!}#ntq39;ضf!5:NV+)U V |G!Tbi!k=yv'HݳžoqT t(ZZͦ6Jo᮷rzχBwݣpRuʁJ{v󺙓G<$\JHߦuݭf8ٔ$ -E;{d !aҊC-@JJJUcIhIXM eY KzJ2 g8XFe5Ȧo I CY⪂cd*HN$VV ybei]Cd߫%dKl$h桔hپALDgB{xA^`8ֻNt^bBʞE@cSRK+G 4.PH\s{aL*LPWׂV^6#QJJJJ))))uP]&& UX}%T"s塂tu33RNII>vS AZ *?:4UZ9 SRRRRICOLIkާ΀}m_0KI*1%iBzbI[|2ҚgT:dfM̂^>PE׻ZtjOI4dj))))`:r/aճ<m 9JtR&uUeBuVpvl<S^ef}2jN)))) ZT`C$jMII\,rrUXH N kVC vn[iqQA2U9:J`Oݰ@tҰtWyQRYISSW?/KqPc\r@ZZ]չ X/+6yS!Za샅e^p"l-è~/LpfXPwFF:a \Y cq˓)0*X8lC߃INǖE ށ ^/DGENDZlQ/ɁE&5gT-@JHC))> p.{JH)JQͳ0&`Zd& %9Ngu.6)RB?ξR_V3& Brcp9̂w{9U J9 §د$eS,%%L3%&pZ`6UZ^F֏A^p"wCHi%deVmD pT)tFZi'Q1Ig9yN#|7Jo} pW`ZOܔH;ΔTլ_ '8_'nޅ0',Zu`qJtQANg^z|qڱ |QǟmpjWy4yH)wXWHH:~ NpkLJ|fJLNygU܃}y g]ogZ3dJ|SUM@*mJJ#rkSVyB.p.(Z렷*p+tvVcnJLRbmׄ 0GE-uFl|1fKKF ̆G\Suc:7IAgÚBmQ.oR ƈZ ?H#:LMҏtid*ljO NCq 7.~$IZSJܤ桔X1v]`.l P,> ~`$]Ii%bW *'^uqw u`Zph'ŦXfqyy6L %꧶CR-|Z| *8p o:[)Qk͔aGopi{p@):ɮ!&$[_cAgz${OE0S4lO3BhKB{Py24ÕR8+ OD1f +}QMo%>!R"ڿ󩺷`XRgwD"AGIhagbyk 棡d`@33jHC4lMjCGq)S>%0 gȣ|=$+p-_l6 Rs!mx z|!N0K7+֗(afy!TXZ؛Z}MbUqmۆ PZaZP7[uTٚ-t% )6桤boyaî~!>#7穷7FAXJ9ôEjg4Om/-ŽKڵP5=X'Էh(BpE^;omϣ0Aҍ$~ZG z@35h6C&:} M3k`#,/hȶVF)Yi*2ҐҶ̀3Ԓ h'^:nݰ-D}VOخ}KH!S-`lNlR m!&U{.C@md7=zu5Lgya6vYdq"n~xsچܕdz*BdKf[yz%`\/Yr7F If3|ըyx&*{p\h8dJvj5RyF `B=)2X\Z5?t)Ply v21 uL=56wꗬw[U Q˦8ꏇ$|j2ya§C`л7,Uj* \A ̒e d'HUVibudnwN/˺WurǶF.hAabsqUܓ.֪steET;k\{,%+fe"0س!cYKR7΀Pn_O[V]QfvIs, vy֊KnGE:jdրՠk=gl0'AA)Qoԉac߱K4rW;̋%LdZ'N>fY`',\A0UƲf :E.O\pY#\Z௡nk0C ,39SF$9WbJ[t  ^ʖR6%۰:C>$)E!z"wxZ3O%KfR+Qy .caxPU:|Cʴp[||/WǛ*w]rzy}p<|1R-v<]/σH} {kv8Ltn*3 ue y˳k5= # _\HS`8V:sj Pϊ5SvfK?C9X `CDb8+ 1+6wUV[!3Dks$Y8p k/["jn6#"#=80$#z)v|:SnY MĄhݢgkD?8O{_(3$/_.<;`*4AI=oA:Nw#YÎ|$ܝ$}3}s9}fDgeۜGJ=jh oO{O4 069Ӏu-Ҽ3qJ!h }sO^Y%[n]24$p˝90iR|^V[ bx|#vWsU.?)]p  Y ԖyZى܄8lj5t+hee ˈZ+pQX Zi XXF'RCMU܍U.gdZ~:gO[2aL{8V9rxZLi\圲~RKLAx F =0O8ur?oB<_-a |Lg)fa<'|Hނ\"JsOA-IKOu hۑkK8fmG2YzɱEPRYd`$6s*aə;|uiY 5Ip-,u+4F!m7= h'ZD+Ivy9.͇p$x"xVܪB^k` <^e"gϩbRnk8]MwMGe_1 d.&;bp,|,MA-*z:?O싟3xpN2؏-!q/kݰZD,wC-% ++vȪnW~` ^xV ۃp[7x Wyp=A=dR'mJi0o8߄Q-MX*+vA\`{t<.ALLf:`S'.x5=n V2ʘIWJ?Õŗ1Tkk>(],Y8:>!+ŇazFNr|mcR:Vud.j*tvy_ OF'{0YA0-*JA%J&Agl|E'` 0Eml͝&&}L|6K(8X a_ y:ոT&<>gmNCyq$,GKoS -啓d2.y8. U!Gج+YC!d`R4uFr" Wguor< Te褜KP#Pz9#  +]%A/mi!Em# !󐶔;9L)F):@T6pdGB>=16(,:A69I4%aTZ >J C&['h= iSp8̫(`Wz\#Į*ggc)+0 6KonU'h6hۼ֮+ӌ{cJ)ſ;p Pv.i^:w.hgc&O3g5g8p 4Ƀθz"PsCRN;}6aںzjn(gA~4z'hۆ c&f5LkzCfJRm -/H؊m#./xKTr\sQwO`\!*PN]JJ=32Zvrz8_Ϋ= 6g+^b?A-,IOZ CMQI&i}FL{kR~MAMd+SЀ2'D6`nx%ET ~~K2O4?}"IH5pO#DlVa!/_hE6Iv mazgvx!L0`L)'mtInE393ްF5cS Qyx:4d(m:+aZ$WJ,jbݽ:yϻ 2F$F}W'eq\ az'Lr)&K ɳ8HFr2+6]jWQ(4:x=zbWf} %Mۇ*\ɷ?nk7"o-{IӀW:>ie0k`9<_GB|KMCI\4SĶP2VG"U's{LFY1x_TarcxdºRkMzĢOmU[°~ 8KMaetC޿p5&"!P?>޵&R9YuלyRq ; `tIuK$[5] 5z*w+?#JЄpS[+u3/X69|N]fQ/ÑxX"Je?O YD0VVi`557Np޷Xe îC6Y0X$axԈz'sN62? ߳~>f8-f5ee.[X+8 Mg#+WIr,s͙;_6xJ%]ȀL*Z$I׫=ն3:N2Ήz~أx'2AFݮผ<f3s]1$ѧш2) ZhI9XkBG6E%Xۆ0s-LiVkQm?r̯_=fn{ٍ%/ F2tMp/ts% 6Y%'>oboۆ\Yj*ӂPe\LUh_epI&Gw7=}3}uR1(L86CR5voq9k?-![gc(s _Ka7"Ϳ$(.4A$nQ n6LS꘵\yEx&Cw ;t `206|*K|[qa7;Oy}a'{2^xqQ- C `*L0P ݠ; Mx1|0]Uo = UC`4=48Ul ^F[ExNMySJmLp!roN4F绍P[ KxHK8 I,PTy(gV[D @:^Z xKtW槬t}|":a׮d׃ ,${ٷx9Edb .ӹKSOtkI_rB[Dխ۽  ȏ.6ZV0F$l{b2rrs ZM)y몼Ty&>]jϞcW1ؒ`&ŏ>Фfv}Q^`I M{ t{C$O9ZaIh&3Tս'}Il[.&P+\ Ckt0 M99oc70b) Ҙf/g-ny y^V;5sbVaRJV7A:al^c`Up$4'&t2:`l0Y oBNZ4drQ$kYX:MBPArVZ44yp!g6OeKe~:E=wdR63Nm [-VյoS0L7oٰ.ld=6 $..GW5 +# F9>!?|zZ/5 ̂xPɻJx^@R T>9ej%L>j%5􁶀kk9˹ Mu֔M|w?Vf\Vhq[_Ujeka:cՐq11QMqn$ ot9,qaVe]/Gڋ$h:dlo9QW5=ֺa2 r[3{` 0F OU;UNɮ0SlTuw0P! ^y&yMѳ zN5w d`pJ.g~2gbbFD\S/hʈ3 z;`S+:b}2Fy>Aq=v;sӃn0zv2\wt^`۵Bӫl*0\S%398RU0^ ` a <,7G|BO> P9 }W8R@!b6`;^ NIL>0{l*r$7N-vg-,L yXgq cV5gOsr'l0Cy-H<(G3MY+K(-b) CZ'0L|p,iIqشI*)XoFp` ,60-qtxS^~\`z"T%O?)3߳Cko&iȝ mU2[l28ǐ K*7y_.v-pp|$v5h>^E)0B\}ǹ ߅qF+,|(a,h* "5*XIy60 =쵖+`%o!W9E+$Ƽ6BofHY0@{_]I,d \nWZ`\=.޾h8tSbv0ѹM'z[ƀgE¶LU`m_U ˵{p:YI:c`* Sa*{JT.]"^4k2/-N?_IzA:xhF ++MG}'7ס,p􂯩-"%נzUV;䯽vd,:m(w2S^м W5bfƪlp9|szF;% ) jA~Wvn< /fϪj2GTP5H8U2Ga Ls&&w XR1Ia Lh^ݝI#apڔTKj³ ,lF6PIC芑YV@Z%TX /09r R`%SCY=`+ti +3kvAp p|DUU~%9apކCT=y^˦ ==|֫|;Eچ$}Xux2 ]-Vә ɦu9^kcx [mʋn/d5L,'/ò$؀Y`6Y$J c$z:x6970m8'\qjQL=@tMPۆ/B ùٙ!f)xaY|~sK& vS3\S,ӼL {XyWmV/ue =a } + Au1?敼視-[65dcٍӠNƈ0ף ~~ހ>,yH fIuH6TD[h-FPxG(^dlRّD],wr|Ý6 ҿA_ ͮ2]0.rݳukYp{ 4B Pɛk7>=nѶd `$o_pVza͐c!JtЂ𖫢vTAV_4@: ]\5uh,$sxꃐqNG~g+^dԖ!VCr8`@9QUF9D Y8C{zNݥC^م=zڃε2g&C`)ۊ#vR[*Cd,@(d8XE{-'6pS$9+?R_ގGòYr~!x_"}1/3 DrlfXg@ <ʙM,zip*NS~@-\ 0UdpOTb .)ޗuhi쬌6 :te7^,'Teq\ (qYkcL>tjV1-^ŕ"r>ph#Mo(arRz@'N8E.xAggL8B&3*à-pk>er_u9 V5NRww+ռ.+:& .h^ryR0L*}`%̓)lJ\{YU56n&_Cg6C@rC;}c'b*5.o:jmÃNG|$rE#tߖH`4AD$A8 \卨C=8 :rƔj1*kRWݤ/ ^fXK27^Zu(d bZ@wecG6(6Ο<V<.0Pۜڲ æ$U,:aSZT=^p) HW{Nw8E? a49y8hl2[+Ty`:ٵCw5c$gSobWg.r}{ IoNx iOcWrx!x0>kf:<8.c_G` LTމOW:)'Q2p$DfZf5As]~6|5ߑsaSu|X\LxRNIts$z1p {7ܕٚ2jVlZMFuMŮ'YlYiUxjnNɾFJoMePm l\ ,Q0 扆Wyv&o.Eү6=8\6Ȇ#]:_|fT!ȳzZk?I/ʙ˥p7022h^V]+C 2& !6x¨~-^ES\ 9R>Kmb~)>Ε"@F1L-7R tāѳ$E NUp ,gg`,*8 0¿=q;Cbt3Re0L<[mY˓h *!fp4Uk y&DX/{L̛V?E\ g*'Kjj0d9?rUy&CU֢h?ʊb |nuZ Y7`-nk'*1JX `8QoK!+;Gn]z'ʨ?@|RRZ[l9$kșT<ǨOo=0` lB3 [Ợ[ۇ#:u.loB,GThry*1ޟ -N+3;[^bmƏ/GW|χhv![#Bx J`"*7SՕ:;l ʩ^ݬ݁)))f IlcÕS^l&G%p/k ,mE0:Up?D G 7U% xJ=ã׮a=餤H6{iwD3BΕp 3ID93[PO0d Krf(hO2=d=Ùzw:"',޾dJnx岏co~O > QNj:JOT?ӪK[ՐРv))bL9/7|-l)$yjE2D= |4s0 %L1p 솛L> ?C r.J9c%M%F$h1޲:=pW**#Ȫ,7-Ua |: 0$uSg䠯+ĬjSR*ЕwR>y:atG!=9" cB Ců<3M2]â'j<(X05F p/<*.W&6 P쟐1f!4]a1"bPEZCنJ[۱=ji HIWjCr^~wR61"ƃV8.ךN|\`6f9qCyX P=M߃p!lZ f:GrL @35pX}-`XR 4`ՈrrsuIηp3/a\6%%o QƦ8>VMo**% Zxqhj+Ԥ6Y oCpWGr6I-%$쟜Uu4 m`:'k197D.B(qފ+vWUZ HIFBL1Μ!IR>aea;l:h/k##``=lن .%@HZ 9•'GmV؞יx[IM0rߙR]hR9"Ws8]8Tk¼s, C{wIv{0ƌD`2,x켓U>rR }`n,CKr_?8Z^=N@;X1v=Ea&_bS&))(zCAъɂ3az&S @_XdYc;r[h &lm0H" m*ͻtzhp ZC*ۗ4Ā% !s2:O?!L<$|c9%%le%}U{3 ;g"ʻeG)0_U W4o><~ Fp Xl߉-* !jYQLMr0dy]r`́P_Ⱦ3ͰL\xZ![f4Dms`7#[Mp20 U{,o,D#%aa޽/IIIEH̐lvVF@D6ͭF«yKNEpI0Y@{yy@X͒_r$ HVhU 3BJȐ%p daϮ6Y|@XcUˠiIƝyoCŔփ[ }as1뾆6T9<EtӵTvp&0482ps 2JcD우ռf"(4Rb-x1*^Q!c\/t_=\# D | :]Ra.ߨF=%vQbj3 b? ^)Qjy/%ڄFq$s裚;0^:;OUǯ)O?8I- ;!8I|`ÓSmX Jz N`܍za (0G>"X.P9 /+] )Ʈw(+<8>Fshֆ>f@_h h / )F7Oy0\W/*q.>#῍1j9{*/iRZ&d:Bs7Nia0JRRK^{y ءCg|5t.p: TR'emӀC0Q_p3,j]KFI>k NbϊE[-꼶j+KI){l&/%c(9,5yȄU)2evB'!5Swo#w㐳 m< 3P@߱<4 6EXc GU7 ʎLII ei~U5@gtCwcw9 gJWC%;T"lgN'@g8}UOl T[]}TX?TQ^F'L<m>Ky^8n'jqNae-x&{իScZ` P:aJ]fSa"+hO0.!r]6ACSPJ59\,y\ HҢ7o fh  N`ռ(oH ]Vm?`NrXc.l2Q'a"p-zKl_U\[<`xe#R`hتF g;BȨYueIHI C p5C/K{jpvCcK0 Ae\W~ ,G5 "ߟr{RrK~#hŐ}z(cxG_08OjdWMVqu2guCpF1f%;CHRi[2ˁ} kcc>D/~U+$m %% ʻV6p(e2eym?L*pt[aUi&(=$4}ĢpI7|urBy*UU LEF]u@T?`x(o!7)ǽ1fOh-.lhbm5 Yʹ>Mnz\ 2imaʼ,st!t2gp|/LO=' ]`kנ(hv89 b舉{^>dt3ʁhKI߿'n@/8~lv{u$*&qXq_:`1 Jɶ^Ȭ$Hľ΃*f8!Ȏ85rb>/K.{tO-rd.^ ANKM#X`2B=1b`8+F%xJŶ~3ѢL$VSÓei]f-'`4A8 9.-Rh&0C.g&쩾Äzx]ItOT:Yd:\y B/vk큥é`"t5q/¤nqCRӺS4ˌҐ5/"tg*.ԭd*'Dg᰷x QW^LgNe+h8MW$$ |QdCnx~2mXA= =0砇|P&f 00E!ݧU6y)r?eFlj:zXր0 CaSJ*q"lE=' {FWpԫ$Fh(Wi[R!eL <4U;/\mҬ GrÐ%^?'Y}` h us h'7tfAW +`3GJJ5R>J|X#M>P_O6v b)=[v9Ԛ]0iu:ijBSy6.$B>^*jآbVxb+O`Vn߇jaZn`,ߋ4R<\etKB/x\*.T0GL\Sv2+?`ȣD5X [Tx(MTF1eTFJѽlĐlPQyIω0 yar|iEn G:mu*~8q#}.̖8q04}ZmSVpu6TFJJmPfB06e̕㜙z?ktALZ:&6 zfx#cI0`Z3!-FF))bgݢvF%LYJmYpS8ŒumP]DWexq_*i7۬DBLcff`@0']凯;6:8\t6J*5dزB>T4LlC ڏ)JZ{EOXI}sɡe ׬ Cj#ϢËPy&5C?\/6g20C`A7T &m=IDE q51{>n$$w))QGi:UJj` %&p>koG&hoVҥc* eS;1J]ybW",/ZZ_Ӣ+H6P)LeMB 7{Fuk?2=?)?N$TRc$pjBe ܧk(>y$ ["S Ti7 )%*,4 [vn55zeO 2%f<[d;< L%LyX@;m9&:Sz `B78/t6k(%0K$jSOCc1AypXT9Հu4ҕKclqYi͊H ʩ- Œ5 [s r5djqY~RGbWN60s |H ]@3ᨒ>YM5dI0 Z8&:ٞ W;XWq< p̂~EB0 nP΄ـI/@Q'SRZ.L vn$Ws" juNRnL3`afL8 ށ߄/PX [sS0> kcʊJf§xx/oeaꉢ;ᮘɥ, ޾9 Z=1PSK 5dʪ>+?f1ah˓@SBb1"6_Hc=p 4hpyzX(L4@  `?TmL |220@?8FI> v B1]gp]¤C;0Raz%jTvCĕ0 `h֥ 1a2gxzL,tI0Sk7IK a5+L XXcpҝ\bLwm+`ܐC]>U̔S!:oh_.V &aSt;oJlO $-m\cb8ys|Jbl"?2\v::%u&]3))r,Yh;֓pdmӏn )69f:$|¡rCCPԡ  S$I"#߆+ślC= .;YNpD- 2No)1[.4@)v/}3e-4@u~ya; 0%I>y`4E*Ԛ o 0Te̻vCmפ쌯y!q?:k۹]ǕάR4CGު`BG^]gIII?&@G0`,vu34X/s"]+%Ҭ?X7ΨSj_*OU2Un;p;qsnz)7i$$$$$B~V"'Tbl| HӈB!!$! nHHg~̷9s=SΜ>9̬;e^{q/}_ϟ` ̆l >Ӑ&0-y0B^{39+ʦ/#aʒwwU7rdrs*6mg`}g{Cb2`GF <\\Iljg/NPOItEz{RL]& wp#[u+[b!j_%XVI–FA?gMoT&O Z5\^JD0\QޞHu }TH ӒNvOJQn'@70Gj)Bjk`:|zztc}Zp##L,R߸zQ /9ܥVN!҈RU- ^9_-pM¸LY+YuJβ Нa;sG8eM0Իj#6Jr 7Vوt]VD"M6ð?t+I"O2ӏLq\ o`A͜pzRpvV#soU{˽[Wt~/|0yOe]rvq oi2:(9H*2`򂴪 ^855/;` xpGwK0,gˬ^v՝jB[;er !u${kp WC% G[SO2*r1qY}Bt8\  {h*"\)f:MZ;wp<3%%;v8nLn^ȑyhHmrMEHL+fÓ0 )Jf N+2H))w8F눞~nc6NJfJج=\ӌ2Ey[ *A*5U{|V-5|8_'"XT)ǯcchXG7XOyG`>헰>IXB+rꯪ%n8 TSD*SRCp|Ԗ_]JS~X_m./YH=>dc5tXa6l4z6%tYgQROQZavlLPyh]a]Cچ+j\D +7iKR-='^v[mt4?a,!?1RD8=a0GKAep}y1x=$2:׳dOIi2f \CBt)J~ 2ȹbr-ޔHށT&F5,$܋*BoӼ-m 08S$/r!f6 q bCC9NVw>fֻݧ%!Sw)lJpŰ};:\a ,Giۮ=l"a҆j+u;dS[P)D[j0Dyf'yGPV[CWο=%c0o&~< kK*jR' sLp_fY&n^@Lյ8W ].*Y>+g(96%g 1KbH:AvϣЀ7Oܛ? y(/)qe * Wiy g3:{1aٞLaḍGUvk? Q9 r9tG]*sTǓ%|i bCCqU_T o Ój<ocq3 WPȾB g.R;lS_A|\| \Cj^0N'VֆN>uS `V/0[B*M#Oo @T13ĶGU 7sQCeHt<|]}74&𓘗 Cz _tؗ9&E|MG+D̖ )o7\ ZN?• `cJ#LlsF]UAnGzto +kE/d8MG3 f0ry \cghpZ$̰*X@yi)!a JB"2C c *< z@S??u T=!_iPbcGL2!eC)u )fc`IM0KUIJ-{2ZaOq 5QeOi98^bKR$kpAi/gz@Cn(TY`0!NZF{K9vui+_iKb0bx %JCcfjmםiC 'μ: v=d " ] '\*|M,LBC san2 Ɂ2n0 )i@(? myͱUPLg Xf8NDG.XGmĤ Cb`h<Ӗ4.{H*2wdC If}%;bW~o={*fqPP`0 c2 M\ڞA`r͑qPh<`KԘ1$(rݓt4{v$DoϣXېy 0!`h<,-ݞರ!Y/{"r0q=5jHŗ5/2}m-sH7u5$u`c2 n@ du 1XZbjN{xmQޔb>:HRA8`07B߄>瓖`ndYWx?*y 1{I"Xh,DGܗ$J|Ի`˄*`S>Ġ·o„%2c2B8Dy`^p` r 5"ڌ0K6GC:KI{Dd+!:;?6K}BIXf YC 9}LpJ r uA 0P->&j\{ÇdYboG| Ɛ?,_ VoCOGD!sBl'~4LCw5 )RКYt%OFx1Y>\+{).-jV[{|\OCCk{u ~&ہt}K 1 :P{×|:]ב?\qdwp hZ);.myTb%wD~,1~uþMS&ذ(p!<7vl o=H?xg_~KϣpuG(Rx< ķ}7KA%N"x m qCFNbGGcwΆڿmUg\%lٳַqj`2$PF. CIȽ93bL&.xz1f"|`AO8A5[|vXf5?0_}]E^"p$:+h44 ˆVM gJq\08kCCPC:x2mIk0 ^=PVik'eiX$ہ1)S`{&!yD;ZT|DAJ}N˦Y$l7Gaָ )Pmqߑl.Ƌ#da^(6t:c:<gBPXT=4E-DwW}VT (E欕=LPe44 <ԐLfh7kup$aQH &Kc!0 te6MZq&x3r[ mYج`li}#lfR;\uiIΟKgnJ3nD jϕy󶰔lO_?pgJ-lO~G+?21Ls#y!%@4;T+=5͐YMcF^L$W2Wp4 o1x@Y.[syH៩ Pq:dEp8Ƿ<8 U|Xf*34ԈFTօmI扽RĐ <ԐY,v& CU$*fJW b0+~Oƍp;ܞ,c2U)3pah4*5#~.)PCb(t(o.p Bd8nXقT1 ) tVbf S>pPgtB鯃IP167/yӱzySc2XY*f`мզ+|!dPulC"@l?xFbJᏙޒNʵ0/M1VWx=1D6ՅbVUC\ c,ÙSҾo 8K-8>5) h?JjAVVy`H̎%J*ak d#`Xl9UB#Pg*jNd0X%+B B 2ɭ\[ƹ~UlgvZ&_(.: 8gQi^2,3IJ>l 0vV_AE p|0 KMFC(Ȇ~ ^+;0 Z4ϔa0 BG D{z|:œHb, +qmC:7$(ݡ,ObCCט|Vk(w-T0 ~ߊT[`/J>;Oc!,e\."ThP~`V4D; J?ƨ4CaH cۺӯ N$p 3nUAndUd3X^ې]ېaPX,5$G8RIzo Q;ٗ[R.eQ˾ӇHw ͓oH [#5qle s`.SjJ9NՅ34ڤȿH' >%_)6+v CdfS>p j92<;["]~|eWZ{w: ,-O,UD%>zp8z8ōe[1dy~V▻>K˓<50XY3jd<÷>DڂFD KT^*+牖 [0T @]rdrscHtϔ<gw H3.fyS0e lC}Wp,,NS4Có6^ <JԂ#`" '$> 9,TuQXk$ GagRgH'8:Ibs-W3 >  jWd.Lv*e5k MZA0WT|cf)ȓ|slAh k?؝`RmKg0,& ;IH?vt3m:uM~2u7 Y`?)&h a_@: /D?;4UܚpÁʍ̆^$#eܹė"ވ0z`CJxn3# xƹ_K{ ٤.p L'ا'm:Ƞ +! Rt)>e'ؕYOGg-3_tM<= &!5CHlCYnm ?ARR3dG|)S`Y~[$S؎36T8T&鄣!Xa$,p ,p;%([`NH}L8$1ꚯ/`jl:l}P>$CMк׍}KT& pPDŽqECQ#bWhu&蒄D 1ʼn%D锄,Ց0!ޝV |oANKLWVRUD@PP΅QcND_ R:-?_t2&D8krVK(SJI7p'œ%_΁>)v(^pHl$1)U)嵱ڰ?:@;5]vvS$/Lm4C]LӽTw4SQpㄟ\Uu0)Vx+rG< n{DCǻr>l [><({ gp `InzI0D> R*Cs[}G+pN HYfJD8T3LNl ;|~OR b'](5 #Ax'v$ٶZ9Xjx{ p%\f |.Ap)q;h_!-;)A0GqptpK"I97ΐ'&Pjzbqpp|`O_9JGd̖Xf ḓ-'@XOFko6dEp\ɦa3)rd*N_honIu^SgNq(]`p̺!1RQ)({m ,X3˚m7Nf86 =~œy hk8}*b;Q z~Yx, q. (~ QlhI;kիs p0ZB9]pHɧxgX[U)9g eł_e$|PܯCWHyj< XAhoe;v% >A6հzA/0? H8FbQ8gYyw;|fPuPǯvÐ I(YIo(y(k}:fRSg +ehEj't#Ryw ۔Hc+fÝ[>v>Ky0ީrR:>0R]6Glʵ,.+$^LýGݼSB sl^'Xg丟26D3ij3zއaKlbW~M\ݞrŻ`q8PzFx <ySN]6&bz Qk%e/}h[wM/HP5@[&ߚϹ0UzeC'2ډ g `&<\(Ic8_%_C 9KJlÉj`Y6βʿdr ߀ɂy -p|6A;c`L&/͵6I0O 0UrTηVѨguL$3\jmEքgYپ\%8s_Ri L.1=O!b v8ݡRaZX˸n<-ZSyx. [=7,aȑyHϖ[}9N_!iSR54vj:Z?K X,yw)\9ei`:/¢Ti,Q^]Bwuz5{_'mq rV )I` d p(pFMk0N#<#Sn Li+;/C k쨅mX;$'5:xm^ \T]j ouVɴY_ `(%cV`KJݸC3bZ?(ҮZK;khWC3 2S w0k]Y|[ YaU];aex>A7lN ʍCZ{P%f6^#P #Jƹzľv 2v0'jUBm9^>dV{_ 06â8=&Sgw2jN5ǫ0Gkp p;&k]f8_/kkz&b&TDEpzt'xt#2 `yM3̆b`y(U1l̏;ɉh2h.R7e0٣g>så0Jنy1+Z}KY_O[?ቲ l8h ̄ހ wIonm4#moi?oysЧ]e#Ezoѫ۾"7"qW`Ԛ))C5hdb K>8Z5u6ت=jټ @򟔍Yp |C[^. 򏵃jCp( 6`]O{Q>aB*qz,JPa t#Q*ܠWbxS(X 'p+,>_y@ ?>8\%mU'e}{= m(~-*ĥ ukpk !7VXNWpdx:$Dy\1Kctv2}~o(x1`\M$+L9D |(y y+R6l?lrɲ(m9~I<)γdOCNiڃzk9Q+'@wípOށF<߅ӕR[P I*õpsfYƟٝtũdlCL Yw;A+YvN]NҚ'?[riԡd54 aIo`_ߐwwǐ3:_H,q-yDܕ >fQ]z9;ȋau2E#GejaX0Vj]yu]{-< <01FxV,!7\ ;h?πmoZ,[\p: #0 Wh) ‹auV>~w`So!0\0 ֳi<9C7dMQIl?sJ:Vo^`R[M~ٞ߆/#%rq%*rT~CJ*fy a0̄ł'c+PP?y#^!k`(dZkXNd|įB%Xd4$ pECdMq6ɰrR/x_ep dz>G@+~5?%Og9A¿NbQxXJj5eLx6*UinZҮ!aX FKPsa0]:ms`-*a|,WopcHv2Q1lhk/!Al)>zG1>Q:UYG %l'l0 J~˹}od&y N*Ptaڣ5 w"JGUZ8fRCmàwe+Y*٧K:E1 TvR2vz3$4/!R58!W}0Dd pC&q.zylo }K 5%pJs$\" APɯ{L)*m EuSބyO: =ị0r6Sxj;Xfyy;{V?)V!w iOS5V&$@ %?RƩoE|#r=J^^.mw٠q\]'h8" tC0Q!Iz ]t;7lf%6ap-8>-cX V`(ɠsRy{(P><9rQZ ^p4 S;++]-KJ%*sBl2lp(=ڞS|[3afl"^^]p&|& 6Tr}.H:z˰@츽 tN( .CaSlOU:Osީ.Z&_s>R`ܙېjVx<$mRxQ|ءnGJ-/>tlbu:vG:fIғk`{:QܫXiنt!FƂ mH_!p:B1>3^)!P?/X!g$ # "t9v|1!ԫ]H<'!GFn~ݛmC qтtHͼ_Fyi0gC?B}Up\qJVO[}`HSKҺ× bHle!ǟI4Pp z?ZWA/jׯD$ÃpO;t:L:'zw#iQxvYΦ]Z~ ܑHdX_es$zU̻\0VB?Dz:@)O7grW0'E A%g~~`a5|3N {*RC-#$<*y-A'jDzblU& _e㴙i<=n,[R̅=תe954'$`\8O%Ȇ=^ Xu4``|\&U|ӈW8l% #pw"w{i%/eV< ]x!mI*lj%7ŹH[N*T8 PNJd.O,:~72Z +s5JL{%)DYsT4wdω8ƝoɚNH%GC?zX^8Q)7<zK ^z"bo k{/-oQ:Edpk"}lڷ~|V'6 5NGYGkҥ\ 6|QYg/&p8px, _Lql M xzrtxw]kW 3J35 ޛ杒@<11?%Jȿ*5f3m5džR0 ð1fy ^P#L +4(\YFieaCym4/dJV]܂Wպ†Y1j hR9+:O{&x|&ȩ?a]cJxf{˯S׀k4lo!;a\hX=^ 8.d("\&q).a%j2U)` *,̂ o+H-ꐂrmĬvFx4|\Ϸ«!@oiɼ( ΄ɨW,a )ٷ}Ҟ[X| >(uz>]|^$}dQ.Y]uaQEKg( |!~y6y'#n ~,^cLIk=6鸞Y])3_@o(1r15Q4[I û^{L`Z )h>J c2J#( \f;a11Er{& SN[a'&8k)vYEPvIgve>5C>'' T-qyHNIެb p?|:iP_`%#-k.^l%E,˕?t?.9#HO܇pSV^kfRod@p,ߞ ߄n5.J r)V»P \cCyǎoG/ijݠ+nA 4_'!cҸep I|PF^0 :y:B.ʰe00^Ukg `iy(酾 鵜*fߕJke1wiUP_;?H'F6m(p!%j$DEFÒD4c2qWjXl NFTt3/ >魡~ߝT'< w)pZCL\F8:zbu_%o{`8&u&Dnlꑎ̓iraZsT ++@vawt/{ݬ*?{R0XI;[6 [a/3B1!!Y0D[›d*x0vڋ=hRP4DfX-IZDqBH867|+yWוڝA^ˆ'-޵>"6mJxCEplk_Άk% VhQ;Awј d)ݠ.Ca ڶnC`2 1G=\ pMPrm^)aHr%GEe69X=P|?tiP/TjF%!Ta/RةPOMϾA4&{ lBv^W0ld:Logව!k]G&Ld+P[/2CP.&9:b.ڌnEp/7(, Gh* p TpS(5[oX,h[2@uFpcj3p$l6t554FXlH0vgo(\lhX,@KՔ%?l<8OGI]>_2l !NqĐx}bWs3 X!f.HPpZHkQI W#U|2CaȐ3} &- pbC6=LF860sצ?Lʄ]+,I{& fLU՛KFFӖNcM_rTp؇ykі!<% XE@g.c;R)Ix(wo(j ŘrMX-Cyz ?:5GY,6exmc Pf.3Z_;}Cp1v4Iƺ&3[`a0NMcF zL(_7{Y^aC`e6Ƀ_ɈBhHj:mI#cg Ag-5д]p2"  džp@K%5X(K eP1fW;C[X6T(b}ن4Udx (Nd, 7<#yr㻫mgZ[2ڌ]=}' Y`r.x9av;`KJ"h^W%b@yY l ;Cn(hCvib+O|~ Y'tԓ5-! qc.sA?= mzC+>-u`ÛuX?cBC LkAOtsAvȟG;OLe8J<ve6DAa!7ŏTET&p]ڒn US>:4f%Ng9"\Fj{k"7lxkn@PV,KaclĄ?Yu}Q>Li`Umf 8ކTEg8S+& /8N"tM&v?Jd(DorMtIƽ07)Q7i f507ҳ$]5<J-=+䈰,7exÁbP*x=nw<٠>u+́0HaLsoa9xEv-~Z[he+\%i Ua90!AQ3́1xǫC]Q\3Ėh*5 XUE$Qf2#]0Q0d{۔ZǺtzB`5* J8!=NWN;*7,PNq0P l o}Y[C_A퍞63Ά 6 0N\ ђjC"(zǔ| \ye 𪂖qK)UvaHTF1arZ }՛%ɃR`;0'nKd#J!c0bx&&w Gc`H㡓8# ` $""*XÃhp,׾C~cӱvzƩaxc2,$قUU[0Zsk#BA C?t6@giXGy0GՆWC) 5-q;pr7Uf*<ved7Kå }dYUH!l25ga/Ok@gb(>0;2fy_ȕνXfT ,j}7qXP_̯Trw/x1D习uy'YNXI Y¨-xXFʠsWosJv[7/ {˟"Rt]nptm2-@G8-p3 'H=0 Qx &x^['Z6pzQ:G`0=dH4 ia^J8\\v{n/}hdJAwU' TRSs.W6#]۸KSqb;ܬ 5ż0O!%”"fqX3[%}ʔC{“*,YX#%O ~&HX? Ož0vg4:xR%< CА{Ȑn+Uܢذ Z%~Q" 3R޴5 wu3a;mp7L3`1쌭rY'89Lxv:/  6L[fİMQUsm_p|"bCzP.p{b{Ç`=aq:肪| :<UXكi Aé)xFiW@6"0:C1ob*p4xS/;`E"eL4i˓:n[ s+`8^+۬?Кd1框a" m>FTXhd)H5~}8\3Z6o`\M}Zju]_c_:)']i 5#},8;a^"9o4 AmVpL )EfrUAmVpLS'p 60/u.5wЈp@ީ"H-<'|4¤'0;n5CW DYe62F7>nٖB3*26cj!kԄ,S\G'12,'Ds!04(?'&Ƈa<<ت^n00΅?%+^)Mphh '6 f?^o5Ѳ]zMjQ*ǩU,X?g|r41wԥ}[hk!U8H#S4lGv p?~pCyExl0:W!9,8R-yn(fD%na+%>lcHݓփ JOn i*4bbmHbWҝBE许U܌~Rlbր4gbbA $ 'LOQppT +Q'@tLZ3ꉵwe7L (F6l*8R|yJ}dpt*ʐ:} nPC:0Wq0n֔b0RO$L:})~"Z ҵ 6spLE!p앫(O饰BzxX adY#f=tȈ5R,"|I ANTToތS ,t T!{vgNILދru)U6p]p*NRւ|ŀ҅ fXcpGTY PNhH ~ Ԡ|O2 s3|؛$|IPMZ&`6GY `<,_ް/y/ˑyp1`I"ۦj&A`ie,P/#Z`^;[\2R[)8 p8ذނȣ}x=yO%3:<@+ :P,-mw. Vw)F}&zZ5mɝZ+b1*nA  Ҕ%Cx8Rm14dv{ӑk$=/ޣFt됮5Vy#O7eh-yKީ l CM?E+jlU5񪝶*{z;FZq Bu\/A8zrqk<30 ^n>WP )sIuѮ` N72rto]poCR Cٶ=08 /J 3Mz_6Sk9xgW5cƏ;% ký"ok5 8ZGfzcy^nDLϖ=YRg T%qnǽᄘEa̦ds찁jI|Uf<ѭη^JJ)l#w0Cڼl,S6\#δKpZI^a07YvIͳ@w8p {zRJH K2uSJ(;k a3S=s[CĿhAGy4`P`p9|'6ySز"v"vA8w;td`ȓ0 l8 x U!|ճzOJ> pܚ<rK(,s9R^C`i8.~Gy1=~6Ӝ [X`k6,ÕuzH^5[t<׻KmaU9)̇0[rV ,LS?D##_,;훈 xc9& ~Cp4~U!frd^a,ذ7fVR;,'£ژ ULK AnLwH-}xfr2Jߡ']AxnYmpxQ v߃T;]KtӰ T % s*fG듑2K0 ٔ%JaD3M>u wz!3hf0FeP7Oڰ NZ 1YV;u)S!fGuA ܰ2K\B7ic?9Ifn$ Ȳh8m0NCʓaŻК=oyˠ7*nyNBWi_}:G(½*}<|u`C8Ha8P^q`kZLCcგ*Xd]GLtMf~+K[/9f?QUwp_U`:X1J*JرW)^-2Z\ Xإt ,epo%`J$0RŘhn > U &M!0rV>T}atFei4naLSw]ߝڠ$ )Ϡو.ªa F5ّF5@JzZv JX\P}|OXļ?seke.1\VIPZhFxSyU.W5"3$r ߐLC_bg-;|pJ3e ^iȓ3V!G&ȗyo9Bv$-1Fe}Q2)biɰPނs۰H?nA/WܰpPTz8&y\M W R:Fy\#cI$%۔ x,sm⌡>vP^ʿ,Ŋ̅ܫChDTG΋?, 0o6ܮ`ecۆ^*ܔe)?|a/lZ{5s0|$ q3F;an{>.RBke'ƫ_*߃ϩ߅fV\f sl)n__>ct/yށ`447db6\?5>rfY2vf+Ymp)2fKŪp,W]` ,q)+K7 5I=As3 b<?Us/sS%%!YsW\mCڽ I6^v;f48 DĚf׻}(e}kF񉼛13تw O 3/ 9׹9Җgdd "s̃mA23؆2KHnkxV@faa4.+{qE\ Za+݇MAp<Np| g)񓱣ݥW¡*} G<̫Ujqi)nDlC2JvI]Ok!̓k;?!c# 7$s&_7Y40VQbkA ySprQ񷏃Ԭw j eMFbr K˵;ݟOAOuVNfܘް-#D/\H`|A5h4l]ڢ'P}0t m&%<Wa<7eCx'˧UP?\7fۿ)a>!-˗i& `L׷ VKz,Vx_]dp|Li1CbJ k판"" O|'3nc׫Un'+a5UA)/b|ofCTUrQ8o 8(șX (!H8Յ /΅py?g( hܩ;³צ LnUF u5RiBB̀^ox{7 U$ {nfXc=.̇ጷ`!rÂ|2o5 (d}| Vl`ْa7CsP38b'+[VV6HZie%*{÷jUJQ,Xq$l]_0'<Xj 4T8?/<ޘ0TNz/pƋL7rFlɎ)14l V~|W6Th3pjZSW8V>i|cKaG{ &Q\y±`1J)_*./ԡ7~0nO.fy]W~|G G4RvȒ{? xx>ǁȆ1,^;̑5+F2h iu:iR"v~ .;C,I+}pxkUT|y_qndG8 v8Iuvd +NP͔5޷ [d*^Uk(Ȇ=ٞ%WBjAð2(,s,Wnq;`;5>~ 5|ӛWu0&qL`hX΂"m&@t}eťR,QWM9\d\"80OF g<[Sa0 ۽urkHV),eV氤kYkujB,gs0ېC2)Y܃7IwAGiY|Aঠ6B"ȬhKbYFֺD =Ƨj}.lqX0׷(_0Mp VC>Άj_uCM~e/ݠ;}:$um5 9"pjYBE=noJ;6V]y3<j@ 'Ts9fz˄h+a.lM;Bx1gXlR\er2Gy޽\!k$IYs2x,h yX:*_a@9 .s#aaZx>@S}KJa?UDɔy('#ީV6l y=_<[[MJmǟk!)g8 'nm3]a;+U"7#/_p+Kb iwiXVH=XY-C,vW*2pt>#ےa<:1@qcaBL)qJ9 os/lS`yCɝ c` c!ؑglreK/&H,&:½AW `fBEB /<)p1 t|;'63:<I CcRuT U9@t!|mNQ֘ Ӑ { ȿcZAJՊ)_/&ثU֋zǹb1oa>s1p CkC̪NeMpF'G! )^/l4}`8#H5|:+y,x')VdJ5~D3|۾ ")G}ks#)+Ž WZ3|@-BSafNtqE 7Δ`04&K= oe|:Koxo9J+LH D(<\ɡ0ZYhV3Qx> :!;YctH8BfC_Yا~pSTIXu5Fհ}G۷+ka.̀! a<|[gBDEɎ*)XB9JȚLJ)$E C2o}](JZq}`Wp CXCdS΃0iK(FE>&߀ Xo v:qpZzVt2 C?W86/MLP rG&X!Sϥm"'yWK0a. M :n ݡbO2 hnK&`ePhC5UI0L7xڋ6vA <'gg|VnVg1Mz*NPxŴ5ùn 2t\&!C]Zy> p|̀u::>Ѵ%q.ܘ`+"Dnv6'ڲDDrqRRIc)5n<cY$ߨ$Q~;K|~W5:VFcY8 ܍3Sw8 lGjNʒْxQ[0F4"9|o ;nz0gFΡjs/ƾQ&\:čt^}`=lmlh41N϶$ktްA]P1wpH:F)vup<a`kl>1mzH92 !+4N CګBG]H=/§ӖAK[T(9(Uw )PVSa$$ )2reblh;R^.Ǽ-m!}wK<:IG<*Вaqn$3m0]R 0}[9 I1xmsӍu{%aeai#soꍻGab(@wVoj;h^N +[[^(5Sutp<c^ U8Gnݺ g,_4g3 P[uG1O[ QUk4+<-#[L Y(.|Y2nI"S . P4!!?(8pwlEbU , f34Kv¶QP7":O7ÛFI‚ 4.mj-'^b a/Б Pˆ spfBOy~,MQ̓VNg4;;/"]`z[q77 sƓebV@xԣu!Gz^7`:RPwJNJ$߬eq]$(R#`ypz JtMft0r1 V-U-p t" 6R&4=0T&&sBHDxl2$ѿQ=Zѷ LVnWNr_IP46{A-Xnq8S &l 렟JGA\mXVڷh5~Pa `#ayIzܭV>:C; &e e8{dp]}|I8puj C1!! VUng$h!rBGo`TqAE|ʃL 2GGמ/x:B'`8%K*Cks3o![je\| ;Z(*ExziKbGK6wy͙w$jfB7{(-\ %aVEKƗIkU.Ռn&x0K+?zPV)Qކ | ~;ı%S8d7[ my\܎Ƚzn]V]CIv ˡ(@7 {Ȳpm6!C?`yȐ_4 )' g͐gV3މ镠$B_$ka*OfRx# ٳ:z2X#;"hKU([?2D$8Km/4Aud,X>ݥR&*7j$}/1sX$}jzr^7ηmocT|XJdF]I1e6 j84hC!XpT69J gPc 9 :?'+"<"EU^lmVSwcy/PqrL6*D-_::aG2z쐻kٻM\Jqz8^0%U#$U} 1kϵz*s<X/ GzmȆj`3ݦdfqt] vC}s[_q7' k/!s8w\7J |}OaLrP&٩@Pqpluj4vTH)<^him#п $Y%9_ x+<awM0YF@exwuXp9=j{n&x0&^aS#`]`ZϸP6 ;1-}5>ې !lE8L6%}mQ^\RaN1 e±w>_~g2DhMA;W@3Us3 ڥiBQzveY=c& 8  ChbV R(]/VĴl)z*2Uݾ>tTkm]qU(<嬨g8RӐE.CR7e6ݑBА}mt ά2*pAڊeyES_g%p2R`XOAD Z3}}]m]šG!e=YR!Df)׷e"UxP2v\mYp7\Ft0'RΐE&U s8f˭!q{4'(O [3l7i,dm>[[f)\^31 @8^TL'gmC~GYAR":P{Lԃ'@fl)g:>q[fvW  Vօ,߿9c 2 Kp8I yr)4+~+|pCcf0e#d< :݀*s[rP*kzmY8ULN{`k?A907׉;eUɏ`/]«rղ9V.j L޹le%r=R^ oY ~3%0oId=pWoNi■3hJ:nm:H'ԇ%e ccO&_xܐct~ej ߒhvPG )%S&lMxp}w'Na׃0Ǘe9u.rDeьb v5k$u[ԫ˸3 aS d(#5D-p<#Pc=1apc(+0fD=v3k[%28 =qp'L g(vu07ﶡ])vX%u,TRQˆ ٤ڻ]k+a{Hs۝\9d ̅o,l ´4$d`ja"pM U9l5(2l^e3+zBC.YS28zwl.ekZS`]pCfw-G-TʶxfƟ(]qI,0W5}rAx y -p- n j0ﲟ󜬀7a}YjØ,˶tMH[`grՊBZecS|~ԉ#`zuh' o?@/$yddBdkMCYr̘m_hC9qr*c +|A@FgFSv{ax?(op(ņt8NZy!>6F2f U%/x2jOa,! p1_6 w,JT(C]Ȳ膃ꋪn\ I a&Cj ~y=~r} WICOr_lP4)=uXƖ41npt5Ӹ8߭ &Dy67 ŻRϵX裎*le헪 R"ɒd^9\:K% \hUiXׇkHGF`]򧶿 MN79p!:Sb: c,G-3uO,S]4nCF1ȣf# ^-rDX%Êyi; /{8O*\2,&TlXi$Um/tyÃ>8XI{z0pǁp\4 @i)uor Q-_h*x6IҫguP2ORęRL KLfzOB4S[{rvbUқW/O ]alVP O }@(AWx=f~]5_4O<&&!/VvOWY>} @Q)Noɶ^s}IR1 z[& 1G~7i!rW,@BmGo}?9wĖT1Ԣ:dKVٵ>oD]6Վ7(%=64#f%>!`?,xֆ:BBzp+'02KFlBȽiA ﯅igԑ xME:XGs缶!),:mRfx,q@n}:\h9ݠ~< J#w pQ9.(yl/F>{ Y2lF;1˕uj55| ,>z+k}b?Fk 5o|:UaP 5sH7N2-,1 _9a;nDϽ!~0IUbԖQ+vPs87B}B q|U,X&NȰydN u-+d_]^<E GעXE08L'dm8*:bR)rx5#*haC,q0\6b!f~b+)M xc ߬O!M +47y5%C」?LShKsZd+v†}{C;YwCW~ 9V!BdьD-y.cp;ቲ-s:aL;CKc/Qg7k<7wSY1pRy9 a mE5۪GzX5r>zB+<_x _/^ae^ͰyJn/~Prs4PMc0[!FBFƳhc%kn ׄ;x ުxYa`4e3q'!lŰ?) T3D rڤm7CU1b=aF̥`!K/}~}4U |6K<LᥗGC'XC<,,^!8aq"<Wj<>vqJy >0:I֋;27Uxfjk*z2[&D*q= w'}C5yb=e~a6^0ԩ(;a nXKY ߆  /էlۭEeW.w`5 ^jFc2 6ކ=.!6gɇ?5I[jtw.P]~1`k}hx!/V^ 0$t=% 6TS29^IPGo=`6j',闾OP5mD/zݮN̚"eƎV\->ɶPEVODpϫwgkn@BjFQ@w",E$wEoKCy‘0}JW6YO\%CCy;~,__`dd36JDWwb-p/ ȼ&x(z3555Hm6d˼DֈgӸi{8[59#U؆!/5t Ul<-sp3| $WlGll@t1{A'xA`;&mc2O mU35ߚ/OF0OGD§f|-wWCC8EP9T{~HnM~ otZϨ:7e`x T?Ka"taL>8-Y cW ΂RP0j̆i0k3OH1ָk{A:e1p0np%Qf֘?*7_8)M{۶NuFu%b"ꄝFw[ݲsG}j%Omڝuvmn?X :趤S>_L8w6/[6mO@8q>YX߼֋!i E[ C*CbHWb:jnGWuzaz&w]DŽk08d0L'ubZܬ8oN][9s;/ `adꁏ↕^5{lPnɰ$)[|9vVyVR)$;ῃI~RLS Ã[\M{֐̜[TRXeץ-O a j!O{vNwV)O֮-oU~x8e|˻s7 [w6kO] fstrS~H78֤-ϟEa}gOEV\_d/|!`+;5h eӎt}S{ȭVV QWKYچ%fO52Z8)3%Op޶Q6R[Ux H?ßktp=\ ƍ4“F`,k\3&3!-F|:HDv(p  ="Mztc}2| ͂a ^P Z:O5GW= S5(kQ[QFGZ꠯^PV,cd{(S,ʦAsk9Z4}oI<[ӹm;. doXm,l%WL/aZ 4`2tm9[6&(? o(7􅕾e54C$e2(FUyD]%TtTnLʒ+4dWZa%5Û'0:)EϙMgN0›@*"*BiWJqM +ېf4 "ʝPfpUR2 _oF9`&ɎxmC8 nPYS/ʣ"f->@eʰr:η+%ĬWjGyp_%~/1]?GiΪBХp+IJ]VOZĢSV;vvy㫔;c1=BK%$Û~06{qqM\8fZ'W aH̶wHwfJF6;Eٗ@~fF_ZB/]roX2*SZV|<! :`K^e; c&d|Vp.lkg)siQxwK2!M0:T\mH2ہ6$r#;qi^I Ke[WzBx\9Qf@Z(%oAŰ͆ ,2_G h :D j[a>i6Ca>{pM_ ,cn'6x{%~`-t`lK.~ &AĐo cu̵D'" !gr1o[y]I̅9&MZTiVhl+BQrA{6?5٪"\͍ c(M}?7dϙZ.3;LnL7$.W]ym[jץB[eW<iyp0Ot}l``i&d$>|CzFN+Ŝq )owLkA8DYᚬ 0<4 La;,kg•Cz ba _߬XN`F4oWӲBE+~l[z 3*^0ߤXτ&g(3AzhRTVAJ,CCwL13&N{MMU%~Zo.nnNTR.XhmFOx0̃f 6Zש^|mM:jϾ٧Ǜ᦬jP!ꈯ?Kmzy>PcګWXτp!`:Bo1iem&#snI 4>1ր.b<DlrU.å63z`= =;<80j! ‡_i_cC}?X΄Lp@4`iF#-6/(gKqW=̖;>T-c̓ >LGv1jOkYJ^[̂c^7Ұ9"ŜEWCg+u6Elrօ)أX6hbtاkGbgk} u J ;1]4ҳf' 4Y3G{RattNp&`RpeFu4YG*E-L𲕐:4բo!0fW;80<3*̈́epMoHٍFM+-A 'jO74o›EUv{[0h[ma<^ɋB&z: n-붹=N˳E~I;n1$vQ9a'p`_^9 ^Jmѵ?[%*@֖L)4tC1L} EA`}Km)<÷ay: 6=[Ӆ um6p5*~Ct.a^8>ܼbξɇp)\g2ࢎDЧEI/jS$3u4&~俱`-I!쏾fGa! ;^7ߙ6F07yRYS Q]$粒}1V7`X6HוX{|39?ǜ xKa*6)1曾My6[E$_T aܮ)0z+-YL@07hN {3|>Kҷ@;ra| ,^V`a51#3NZLw0&Cyu.>nh0*Bv0v m4LMY`haeau=8hLHcj} VLViug`aFq`%p,X a( |/tm,S,ۍKBoCtk ̇uRQWxm~T"{[/1d?PzhGUWc텯zކKP)>._+*wE8~BG*Vo\#0f^ޡ̇?[0DK@ZL>Poë E,f MʥHZWll>nk8C 4FF/bS8Vn++To>G;vkp C &"<>|(+]XprKT)=fCV 1"3Gv*+\pERc\xsw pً»^'Kz7T;жDJ3es釹VIVB .jikLM@7X}``u'xkLYyF hr$_B߱/>WMoJtᦳ{!| W i-&CTQ%dW4"[P8rym;J2 fd .MyMx!Ϗ8ja풔N ld7-+Gj3j' lXe } A7Cᑭ$Pk>Gᾂ/Wk9 ?M-o5j6Cc PsUE]CCPd k]1i3r+u+ ->Ga4f/x>Aà5/Qz$q@maӖ0ZBv)En/LQƮ5Dd2憎dvn>Q C ji@0v1Zp F~=w,UPrdLlϛe%x4-1t3@K;_& У%-JE^F _\mӮJG\lu؝0:Y1uYǬ>sp,#di0!Oa166dq< ݝ`N : GDKN\ MZ{ ,)eG { Fi7or{ BBC\ /rm$ܹA9Y۷oEZszUQpsFWKzFSBvzHLpqI2m`m'03pcK ~*CWCCX]E_1ɑ^\̩# C]ko`|ܤ4a?<oD`m37d1j if nuEDΰe `ϠJI[XH0ދ>ſ'1M o**L#C \Ԥevۙ7pB1OWm z!AW.~gШ oysi?z=wqHMU"2"\O^R3D|;.kE`̅ܭ͚!x$ x4VWev)֓s&g=zn>,99w&z8rL7V?h6V9S\'0&aD~U K4s~20XO m_n0dlo10JyվOv3&;CT 73 V] QPf= QSk$1|\$jfn-[(.1~]M2 ΀Du7&ža9 p tG82+0iU@ By,LALA \kܐ0.W®ɹ(w{k0zFxAt.g{jaRbRH%$α*DTLu'i2UK}t== -ȵvpY@CpB03r ./ *%f0uy"}mZH9Sz"t1gs9h+?Acg3 l WÕ@2CG/g ökaR*ZAN-~2>T:xs+BDKa fxq8Xhq8 8 ׂ`±EB4p Hw 42eb{@?g0E7`Ap$̓m!Ne%Pz"Ԅ 5|,Gį%y, ;yp;WI^x4l;4L u8e+j?K&lSZ O$l:An1]dgX m+`.`!t3p՘ 3$s&'\`*gM+o]a0sm<Gñ&%mף]EpީRyu,|lI eU.kZa=\(WaW9zF-1Һ?;`v7 VSu)^mY'ƨgoճ  Khi,7v$oyp'UY<ﺗz]*LSK؄>!,cn^dT2pUC[^7A8j\P>* Y1jA?N0" n<x#lloeWHI"3D) zs>"<كDL!9#y!UˤZ}*S/CCoKQjU*Jh ݧ`h!b| _` NfЬe WI0VRS-U7>>Vv8//k  .*1!"e,z[B-'Jax.>mj,}$M{RQP< h+2ݒ!֩]PzR|Ng5j;Wk- )v ֦Eg#෍_3G*6VVyPcz`+<}uq/Lݜ`9<:D)9,.d`=tN1ژaўچ}?7ч$ ítE)n5M!,@o4C'a~[ `<0J%mfSr["o><vVp4e\MnȾO8iC H )Rϡyf Rw5*Hzg ~,E;u"AEDJg:< _=  VB lBwɿH[ *ܷrDUd-#N[Fo 6rGv}>3WrC""u""R:;k2.̈́}M`7C3qP`;l A;I- ?pH#hrv=i( 5g4/E&iE)\&""O錒S-9DDi|}ZuJN郊 {Iݧ-UDs;T """b(=$"" Ƕl j1YLntRpRNDDʁjH´8B; |giP?ܔBmx!3M '71C""0;$gౝ/ )VA} NMN\9̓NDDJH|fR5e*e_+DZRJT:&&%2w Nk)M"""hr$:N(qP 7$`I)I-""eN!hPKAFI@ QzHDD@k`$ 8NJcSO UZ,MA*;L 7m@hkbA%:|2Xutu$b;m+w^z`:G msHi֜3Y_0ڻ6j f î0ƂŸ|[دq]"j60u$RT3z9G\!DZ m!xD*ɰ _gE'GӑFF)V615<ȄsC3o V2̨cn6*!RR̓"k^3`G|щH,EɌoLswDDJ3z1ϹFÔW52 u8yV0<ǮCAh)jHE.-7KCw<)`!rs #(=Tn] <Cg.cR&RIY{+n6ty6d&i kl\v5YE?ӭx-`_3y`x2K&zmoAG`"<}H1W*+>[7j imsQ/ODRБY6{ s#'[:NAa1<\   (=fF}hm9Ϟfy a8tP/[uX0S2 e@w?V*}͕ax&6O GLNHH^h|ƌ!=^`s6-"]4EeIzM*Զ+[EO$mUMr8Cr3Vep",{oo= E?/iN/&AW!ú=ǓQMN 򶇋X*Pށ6;a{bKv XQ&x?Hec%gC.օ$ `%eIs>5Cs`\h 4SbPP"} |X4?X3v1HW.l]/M F `.l2\5:ֺĻ%TsPc%d.8ݜ6Е~)6'xibO*a\=SinC5T~q<^e$a&Lts#K .3[P=STxvZatٻpẃ&0>َ,89|ùA;8򵞄! tX6% &1CNY !kdx6mK"nt3puԙe.%/[6QQ@<8,Fí3W҅ѷ:@O`wZ0c, ?6 qH~K@@o8FY0"nGB;sD;?^gy<)<߉!L5|AJh 6Um`*Qn?TpGx10E dD Bxj{`FkJR#c{Qpm =sK_Cz!י.kp~GHL7t#y:s՗š)wF"Mܗw]0*|ӽA^TpI?cApL1=A8ikp<oW=vEె|o֒ǔiG ㊤x9?M`MK;g^H2=l`_Sp7ptZ"_kᯰ*(f6|K"%8̅0$<"+0/0Vt8:/\3%̂M"i`ۆlop]{ m_A5hXuﴩxu&C$pj`gFمl>|,JS~֘Hb*R=7t .{f>W/]Z\nkh?WŖz\ [wR]ēL ~4q89kjʜ%Aٟ1㆖o_{GR@΅)O.11[ `sK8& _$N)p\jnvh`ofWh /.a@4`uA23g]bW8!6'nq qKV 1d/h}<-0ujDgD [b|BkkDvq\(wlsE*yN[CD`.L_ap~>Çb2Y5W,/C5ڟ]22p@*esp)h_FBvG$XCibvP nZ&ʬwcH؆Xmn̓v 1]ؼBK}u:ؤc} 7^ سoZ`tn_B-dHX5`4L4H61}Eп" ih S `/88\9:M$1 ,+E!>t ΅;Hl +(gCrMH.6{w* ?q5 :=  -x}CKygwP /%.OkW% $a% IDATc XXSZ %&R? x-h aZ,Sg% *t08ȽRxA {vߣчq*[nޟ0G\IȌ)o3V(H;:K `7;-íCq#puK \/:#xx=H6}py[΁k`sB cg)n:Zl.'0:0fG$AkiXV6:  Wk W 9֊"x 40Zmѻ\M2`(509 ޖ IXq$~5!}`(ºj*K4\nGz36F2%CYodp8<VHai,j Yӂ'xr],stWohc># ,?3]32gx\l6ik<в>쬅2L:n|Fep_`M\48<hU`k59qH}x3|K^].nKz˂K Fqx[X }߳ZbX=cR <ê` bdijAGIf~oHWUeL1f]ekڟPdއiɨ.9okIrǬ\6T=Xw ̈-2ux^[0JfW?Z͎u~}\3=j`{L¯sC,`$cXC,E." {G[t{#sa .O+EFm7%V"+nؓg#7ʹߍy0 6_ 1XGD&WzQXclIp5OʞƘ>UuC\}W`̬*eÞ2FG`9̅΢fE?;YG8&X#e߇gLutaUu(C`lJ?+;T&T>%A~ayAir5APnHri Y Mm \jp!fi6 {GD$j{Φv *l#"j-[ kpgezw?o&}Dy@$I:Ѱrނ7` %nlG7𝈃.1wfGY4XqT |7FD$R?- 8ui[ʬh*2_GKO peHQfQ: k\)=$bYATӄ`vVnxApYĕ6A3:Zw_Q-*!)8 FlDd4 er1nUp6TkgVe\fe冀g' T;␤-e0Dʄ&'3ӭCFpWcr7GOށM]\#".\9:Ͱ1IϚtf_Mn^p><g)&찡olhpo,Z8ZkP|#)^ >l_VD\psu IY_~h#̂s%Jn[~%DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$Scܨ IENDB`PKm@Օ!! encoder.cPKmK2e e  !symatrix.pngPKqK-