From 7bdd77b7775ca31368686ba63874f9c7dc8fc065 Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Thu, 2 Apr 2020 12:22:37 +0200 Subject: [PATCH] 1. add preimage module. 2. add gedlib module. 3. add ged module. 4. create Kernel class and StructrualSP class. 5. rearrange directory. --- .gitignore | 9 + gklearn/ged/env/__init__.py | 1 + gklearn/{preimage => ged/env}/common_types.py | 0 gklearn/ged/median/__init__.py | 2 + .../median}/median_graph_estimator.py | 10 +- .../median}/test_median_graph_estimator.py | 14 +- gklearn/ged/median/utils.py | 53 + gklearn/ged/util/__init__.py | 1 + gklearn/{preimage => ged/util}/cpp2python.py | 0 gklearn/ged/util/cpp_code.cpp | 122 + gklearn/{preimage => ged/util}/misc.py | 0 gklearn/ged/util/util.py | 344 + gklearn/gedlib/README.rst | 97 + gklearn/gedlib/__init__.py | 10 + gklearn/gedlib/documentation/Makefile | 20 + gklearn/gedlib/documentation/gedlibpy.pdf | Bin 0 -> 170276 bytes gklearn/gedlib/documentation/make.bat | 36 + gklearn/gedlib/documentation/source/conf.py | 199 + gklearn/gedlib/documentation/source/doc.rst | 2 + .../gedlib/documentation/source/editcost.rst | 42 + .../gedlib/documentation/source/examples.rst | 165 + gklearn/gedlib/documentation/source/index.rst | 36 + .../gedlib/documentation/source/readme.rst | 97 + gklearn/gedlib/gedlibpy.cpp | 25510 ++++++++++++++++ .../gedlibpy.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 33486048 bytes gklearn/gedlib/gedlibpy.pyx | 1548 + gklearn/gedlib/lib/fann/libdoublefann.so | 1 + gklearn/gedlib/lib/fann/libdoublefann.so.2 | 1 + .../gedlib/lib/fann/libdoublefann.so.2.2.0 | Bin 0 -> 126848 bytes gklearn/gedlib/lib/fann/libfann.so | 1 + gklearn/gedlib/lib/fann/libfann.so.2 | 1 + gklearn/gedlib/lib/fann/libfann.so.2.2.0 | Bin 0 -> 126848 bytes gklearn/gedlib/lib/fann/libfixedfann.so | 1 + gklearn/gedlib/lib/fann/libfixedfann.so.2 | 1 + gklearn/gedlib/lib/fann/libfixedfann.so.2.2.0 | Bin 0 -> 83216 bytes gklearn/gedlib/lib/fann/libfloatfann.so | 1 + gklearn/gedlib/lib/fann/libfloatfann.so.2 | 1 + gklearn/gedlib/lib/fann/libfloatfann.so.2.2.0 | Bin 0 -> 126848 bytes gklearn/gedlib/lib/fann/pkgconfig/fann.pc | 10 + gklearn/gedlib/lib/libsvm.3.22/COPYRIGHT | 31 + gklearn/gedlib/lib/libsvm.3.22/FAQ.html | 2166 ++ gklearn/gedlib/lib/libsvm.3.22/Makefile | 24 + gklearn/gedlib/lib/libsvm.3.22/Makefile.win | 33 + gklearn/gedlib/lib/libsvm.3.22/README | 769 + gklearn/gedlib/lib/libsvm.3.22/heart_scale | 270 + gklearn/gedlib/lib/libsvm.3.22/java/Makefile | 26 + .../gedlib/lib/libsvm.3.22/java/libsvm.jar | Bin 0 -> 55185 bytes .../lib/libsvm.3.22/java/libsvm/svm.java | 2860 ++ .../gedlib/lib/libsvm.3.22/java/libsvm/svm.m4 | 2860 ++ .../libsvm.3.22/java/libsvm/svm_model.java | 22 + .../lib/libsvm.3.22/java/libsvm/svm_node.java | 6 + .../java/libsvm/svm_parameter.java | 47 + .../java/libsvm/svm_print_interface.java | 5 + .../libsvm.3.22/java/libsvm/svm_problem.java | 7 + .../lib/libsvm.3.22/java/svm_predict.java | 194 + .../lib/libsvm.3.22/java/svm_scale.java | 350 + .../gedlib/lib/libsvm.3.22/java/svm_toy.java | 502 + .../lib/libsvm.3.22/java/svm_train.java | 318 + .../lib/libsvm.3.22/java/test_applet.html | 1 + gklearn/gedlib/lib/libsvm.3.22/libsvm.so | Bin 0 -> 85176 bytes .../gedlib/lib/libsvm.3.22/matlab/Makefile | 45 + gklearn/gedlib/lib/libsvm.3.22/matlab/README | 245 + .../lib/libsvm.3.22/matlab/libsvmread.c | 212 + .../lib/libsvm.3.22/matlab/libsvmwrite.c | 119 + gklearn/gedlib/lib/libsvm.3.22/matlab/make.m | 22 + .../lib/libsvm.3.22/matlab/svm_model_matlab.c | 374 + .../lib/libsvm.3.22/matlab/svm_model_matlab.h | 2 + .../lib/libsvm.3.22/matlab/svmpredict.c | 370 + .../gedlib/lib/libsvm.3.22/matlab/svmtrain.c | 495 + .../gedlib/lib/libsvm.3.22/python/Makefile | 4 + gklearn/gedlib/lib/libsvm.3.22/python/README | 367 + gklearn/gedlib/lib/libsvm.3.22/python/svm.py | 330 + .../gedlib/lib/libsvm.3.22/python/svmutil.py | 262 + gklearn/gedlib/lib/libsvm.3.22/svm-predict.c | 239 + gklearn/gedlib/lib/libsvm.3.22/svm-scale.c | 397 + .../lib/libsvm.3.22/svm-toy/gtk/Makefile | 22 + .../lib/libsvm.3.22/svm-toy/gtk/callbacks.cpp | 447 + .../lib/libsvm.3.22/svm-toy/gtk/callbacks.h | 54 + .../lib/libsvm.3.22/svm-toy/gtk/interface.c | 164 + .../lib/libsvm.3.22/svm-toy/gtk/interface.h | 14 + .../gedlib/lib/libsvm.3.22/svm-toy/gtk/main.c | 23 + .../lib/libsvm.3.22/svm-toy/gtk/svm-toy.glade | 238 + .../lib/libsvm.3.22/svm-toy/qt/Makefile | 18 + .../lib/libsvm.3.22/svm-toy/qt/svm-toy.cpp | 437 + .../libsvm.3.22/svm-toy/windows/svm-toy.cpp | 482 + gklearn/gedlib/lib/libsvm.3.22/svm-train.c | 380 + gklearn/gedlib/lib/libsvm.3.22/svm.cpp | 3181 ++ gklearn/gedlib/lib/libsvm.3.22/svm.def | 21 + gklearn/gedlib/lib/libsvm.3.22/svm.h | 104 + gklearn/gedlib/lib/libsvm.3.22/tools/README | 210 + .../gedlib/lib/libsvm.3.22/tools/checkdata.py | 108 + gklearn/gedlib/lib/libsvm.3.22/tools/easy.py | 79 + gklearn/gedlib/lib/libsvm.3.22/tools/grid.py | 500 + .../gedlib/lib/libsvm.3.22/tools/subset.py | 120 + .../lib/libsvm.3.22/windows/libsvmread.mexw64 | Bin 0 -> 14336 bytes .../libsvm.3.22/windows/libsvmwrite.mexw64 | Bin 0 -> 13312 bytes .../lib/libsvm.3.22/windows/svmpredict.mexw64 | Bin 0 -> 28160 bytes .../lib/libsvm.3.22/windows/svmtrain.mexw64 | Bin 0 -> 68608 bytes gklearn/gedlib/lib/nomad/libnomad.so | Bin 0 -> 1814544 bytes gklearn/gedlib/lib/nomad/libsgtelib.so | Bin 0 -> 5539856 bytes gklearn/gedlib/librariesImport.py | 6 + gklearn/gedlib/setup.py | 33 + gklearn/gedlib/src/GedLibBind.hpp | 528 + gklearn/gedlib/src/GedLibBind.ipp | 688 + gklearn/gedlib/test.py | 159 + gklearn/kernels/__init__.py | 3 + gklearn/kernels/graph_kernel.py | 211 + gklearn/kernels/structural_sp.py | 400 + gklearn/preimage/__init__.py | 14 + gklearn/preimage/median_preimage_generator.py | 667 +- gklearn/preimage/preimage_generator.py | 35 +- gklearn/preimage/test_k_closest_graphs.py | 2 +- .../test_median_preimage_generator.py | 66 + gklearn/preimage/utils.py | 13 + gklearn/utils/__init__.py | 2 + gklearn/utils/dataset.py | 550 + gklearn/utils/kernels.py | 2 +- gklearn/utils/parallel.py | 6 +- gklearn/{preimage => utils}/timer.py | 0 gklearn/utils/utils.py | 487 +- 120 files changed, 52529 insertions(+), 255 deletions(-) create mode 100644 gklearn/ged/env/__init__.py rename gklearn/{preimage => ged/env}/common_types.py (100%) create mode 100644 gklearn/ged/median/__init__.py rename gklearn/{preimage => ged/median}/median_graph_estimator.py (99%) rename gklearn/{preimage => ged/median}/test_median_graph_estimator.py (81%) create mode 100644 gklearn/ged/median/utils.py create mode 100644 gklearn/ged/util/__init__.py rename gklearn/{preimage => ged/util}/cpp2python.py (100%) create mode 100644 gklearn/ged/util/cpp_code.cpp rename gklearn/{preimage => ged/util}/misc.py (100%) create mode 100644 gklearn/ged/util/util.py create mode 100644 gklearn/gedlib/README.rst create mode 100644 gklearn/gedlib/__init__.py create mode 100644 gklearn/gedlib/documentation/Makefile create mode 100644 gklearn/gedlib/documentation/gedlibpy.pdf create mode 100644 gklearn/gedlib/documentation/make.bat create mode 100644 gklearn/gedlib/documentation/source/conf.py create mode 100644 gklearn/gedlib/documentation/source/doc.rst create mode 100644 gklearn/gedlib/documentation/source/editcost.rst create mode 100644 gklearn/gedlib/documentation/source/examples.rst create mode 100644 gklearn/gedlib/documentation/source/index.rst create mode 100644 gklearn/gedlib/documentation/source/readme.rst create mode 100644 gklearn/gedlib/gedlibpy.cpp create mode 100644 gklearn/gedlib/gedlibpy.cpython-36m-x86_64-linux-gnu.so create mode 100644 gklearn/gedlib/gedlibpy.pyx create mode 120000 gklearn/gedlib/lib/fann/libdoublefann.so create mode 120000 gklearn/gedlib/lib/fann/libdoublefann.so.2 create mode 100644 gklearn/gedlib/lib/fann/libdoublefann.so.2.2.0 create mode 120000 gklearn/gedlib/lib/fann/libfann.so create mode 120000 gklearn/gedlib/lib/fann/libfann.so.2 create mode 100644 gklearn/gedlib/lib/fann/libfann.so.2.2.0 create mode 120000 gklearn/gedlib/lib/fann/libfixedfann.so create mode 120000 gklearn/gedlib/lib/fann/libfixedfann.so.2 create mode 100644 gklearn/gedlib/lib/fann/libfixedfann.so.2.2.0 create mode 120000 gklearn/gedlib/lib/fann/libfloatfann.so create mode 120000 gklearn/gedlib/lib/fann/libfloatfann.so.2 create mode 100644 gklearn/gedlib/lib/fann/libfloatfann.so.2.2.0 create mode 100644 gklearn/gedlib/lib/fann/pkgconfig/fann.pc create mode 100644 gklearn/gedlib/lib/libsvm.3.22/COPYRIGHT create mode 100644 gklearn/gedlib/lib/libsvm.3.22/FAQ.html create mode 100644 gklearn/gedlib/lib/libsvm.3.22/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/Makefile.win create mode 100644 gklearn/gedlib/lib/libsvm.3.22/README create mode 100644 gklearn/gedlib/lib/libsvm.3.22/heart_scale create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm.jar create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm.m4 create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm_model.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm_node.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm_parameter.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm_print_interface.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/libsvm/svm_problem.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/svm_predict.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/svm_scale.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/svm_toy.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/svm_train.java create mode 100644 gklearn/gedlib/lib/libsvm.3.22/java/test_applet.html create mode 100644 gklearn/gedlib/lib/libsvm.3.22/libsvm.so create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/README create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/libsvmread.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/libsvmwrite.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/make.m create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/svm_model_matlab.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/svm_model_matlab.h create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/svmpredict.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/matlab/svmtrain.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/python/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/python/README create mode 100644 gklearn/gedlib/lib/libsvm.3.22/python/svm.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/python/svmutil.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-predict.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-scale.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/callbacks.cpp create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/callbacks.h create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/interface.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/interface.h create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/main.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/gtk/svm-toy.glade create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/qt/Makefile create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/qt/svm-toy.cpp create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-toy/windows/svm-toy.cpp create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm-train.c create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm.cpp create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm.def create mode 100644 gklearn/gedlib/lib/libsvm.3.22/svm.h create mode 100644 gklearn/gedlib/lib/libsvm.3.22/tools/README create mode 100644 gklearn/gedlib/lib/libsvm.3.22/tools/checkdata.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/tools/easy.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/tools/grid.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/tools/subset.py create mode 100644 gklearn/gedlib/lib/libsvm.3.22/windows/libsvmread.mexw64 create mode 100644 gklearn/gedlib/lib/libsvm.3.22/windows/libsvmwrite.mexw64 create mode 100644 gklearn/gedlib/lib/libsvm.3.22/windows/svmpredict.mexw64 create mode 100644 gklearn/gedlib/lib/libsvm.3.22/windows/svmtrain.mexw64 create mode 100644 gklearn/gedlib/lib/nomad/libnomad.so create mode 100644 gklearn/gedlib/lib/nomad/libsgtelib.so create mode 100644 gklearn/gedlib/librariesImport.py create mode 100644 gklearn/gedlib/setup.py create mode 100644 gklearn/gedlib/src/GedLibBind.hpp create mode 100644 gklearn/gedlib/src/GedLibBind.ipp create mode 100644 gklearn/gedlib/test.py create mode 100644 gklearn/kernels/graph_kernel.py create mode 100644 gklearn/kernels/structural_sp.py create mode 100644 gklearn/preimage/__init__.py create mode 100644 gklearn/preimage/test_median_preimage_generator.py create mode 100644 gklearn/utils/dataset.py rename gklearn/{preimage => utils}/timer.py (100%) diff --git a/.gitignore b/.gitignore index 5559d48..de3945d 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,12 @@ htmlcov virtualenv .vscode/ + +# gedlibpy +gklearn/gedlib/build/ +gklearn/gedlib/build/__pycache__/ +gklearn/gedlib/collections/ +gklearn/gedlib/Median_Example/ +gklearn/gedlib/build/include/gedlib-master/median/collections/ +gklearn/gedlib/include/ +gklearn/gedlib/libgxlgedlib.so diff --git a/gklearn/ged/env/__init__.py b/gklearn/ged/env/__init__.py new file mode 100644 index 0000000..17aefc7 --- /dev/null +++ b/gklearn/ged/env/__init__.py @@ -0,0 +1 @@ +from gklearn.ged.env.common_types import AlgorithmState \ No newline at end of file diff --git a/gklearn/preimage/common_types.py b/gklearn/ged/env/common_types.py similarity index 100% rename from gklearn/preimage/common_types.py rename to gklearn/ged/env/common_types.py diff --git a/gklearn/ged/median/__init__.py b/gklearn/ged/median/__init__.py new file mode 100644 index 0000000..9a291ae --- /dev/null +++ b/gklearn/ged/median/__init__.py @@ -0,0 +1,2 @@ +from gklearn.ged.median.median_graph_estimator import MedianGraphEstimator +from gklearn.ged.median.utils import constant_node_costs, mge_options_to_string diff --git a/gklearn/preimage/median_graph_estimator.py b/gklearn/ged/median/median_graph_estimator.py similarity index 99% rename from gklearn/preimage/median_graph_estimator.py rename to gklearn/ged/median/median_graph_estimator.py index b70cc61..70651a9 100644 --- a/gklearn/preimage/median_graph_estimator.py +++ b/gklearn/ged/median/median_graph_estimator.py @@ -6,10 +6,9 @@ Created on Mon Mar 16 18:04:55 2020 @author: ljia """ import numpy as np -from gklearn.preimage.common_types import AlgorithmState -from gklearn.preimage import misc -from gklearn.preimage.timer import Timer -from gklearn.utils.utils import graph_isIdentical +from gklearn.ged.env import AlgorithmState +from gklearn.ged.util import misc +from gklearn.utils import Timer import time from tqdm import tqdm import sys @@ -822,5 +821,4 @@ class MedianGraphEstimator(object): def compute_my_cost(g, h, node_map): cost = 0.0 for node in g.nodes: - cost += 0 - \ No newline at end of file + cost += 0 \ No newline at end of file diff --git a/gklearn/preimage/test_median_graph_estimator.py b/gklearn/ged/median/test_median_graph_estimator.py similarity index 81% rename from gklearn/preimage/test_median_graph_estimator.py rename to gklearn/ged/median/test_median_graph_estimator.py index 2a930df..bc4beae 100644 --- a/gklearn/preimage/test_median_graph_estimator.py +++ b/gklearn/ged/median/test_median_graph_estimator.py @@ -8,7 +8,7 @@ Created on Mon Mar 16 17:26:40 2020 def test_median_graph_estimator(): from gklearn.utils.graphfiles import loadDataset - from gklearn.preimage.median_graph_estimator import MedianGraphEstimator + from gklearn.ged.median import MedianGraphEstimator, constant_node_costs from gklearn.gedlib import librariesImport, gedlibpy from gklearn.preimage.utils import get_same_item_indices from gklearn.preimage.ged import convertGraph @@ -31,7 +31,7 @@ def test_median_graph_estimator(): # Load dataset. # dataset = '../../datasets/COIL-DEL/COIL-DEL_A.txt' - dataset = '../../datasets/Letter-high/Letter-high_A.txt' + dataset = '../../../datasets/Letter-high/Letter-high_A.txt' Gn, y_all = loadDataset(dataset) y_idx = get_same_item_indices(y_all) for i, (y, values) in enumerate(y_idx.items()): @@ -75,16 +75,6 @@ def test_median_graph_estimator(): gen_median = ged_env.get_nx_graph(gen_median_id) return set_median, gen_median - - - -def constant_node_costs(edit_cost_name): - if edit_cost_name == 'NON_SYMBOLIC' or edit_cost_name == 'LETTER2' or edit_cost_name == 'LETTER': - return False -# elif edit_cost_name != '': -# # throw ged::Error("Invalid dataset " + dataset + ". Usage: ./median_tests "); -# return False - # return True if __name__ == '__main__': diff --git a/gklearn/ged/median/utils.py b/gklearn/ged/median/utils.py new file mode 100644 index 0000000..741320c --- /dev/null +++ b/gklearn/ged/median/utils.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Wed Apr 1 15:12:31 2020 + +@author: ljia +""" + +def constant_node_costs(edit_cost_name): + if edit_cost_name == 'NON_SYMBOLIC' or edit_cost_name == 'LETTER2' or edit_cost_name == 'LETTER': + return False +# elif edit_cost_name != '': +# # throw ged::Error("Invalid dataset " + dataset + ". Usage: ./median_tests "); +# return False + # return True + + +def mge_options_to_string(options): + opt_str = ' ' + for key, val in options.items(): + if key == 'init_type': + opt_str += '--init-type ' + str(val) + ' ' + elif key == 'random_inits': + opt_str += '--random-inits ' + str(val) + ' ' + elif key == 'randomness': + opt_str += '--randomness ' + str(val) + ' ' + elif key == 'verbose': + opt_str += '--stdout ' + str(val) + ' ' + elif key == 'refine': + opt_str += '--refine ' + ('TRUE' if val else 'FALSE') + ' ' + elif key == 'time_limit': + opt_str += '--time-limit ' + str(val) + ' ' + elif key == 'max_itrs': + opt_str += '--max-itrs ' + str(val) + ' ' + elif key == 'max_itrs_without_update': + opt_str += '--max-itrs-without-update ' + str(val) + ' ' + elif key == 'seed': + opt_str += '--seed ' + str(val) + ' ' + elif key == 'epsilon': + opt_str += '--epsilon ' + str(val) + ' ' + elif key == 'inits_increase_order': + opt_str += '--inits-increase-order ' + str(val) + ' ' + elif key == 'init_type_increase_order': + opt_str += '--init-type-increase-order ' + str(val) + ' ' + elif key == 'max_itrs_increase_order': + opt_str += '--max-itrs-increase-order ' + str(val) + ' ' +# else: +# valid_options = '[--init-type ] [--random_inits ] [--randomness ] [--seed ] [--verbose ] ' +# valid_options += '[--time_limit ] [--max_itrs ] [--epsilon ] ' +# valid_options += '[--inits_increase_order ] [--init_type_increase_order ] [--max_itrs_increase_order ]' +# raise Exception('Invalid option "' + key + '". Options available = "' + valid_options + '"') + + return opt_str \ No newline at end of file diff --git a/gklearn/ged/util/__init__.py b/gklearn/ged/util/__init__.py new file mode 100644 index 0000000..a288557 --- /dev/null +++ b/gklearn/ged/util/__init__.py @@ -0,0 +1 @@ +from gklearn.ged.util.util import compute_geds, ged_options_to_string diff --git a/gklearn/preimage/cpp2python.py b/gklearn/ged/util/cpp2python.py similarity index 100% rename from gklearn/preimage/cpp2python.py rename to gklearn/ged/util/cpp2python.py diff --git a/gklearn/ged/util/cpp_code.cpp b/gklearn/ged/util/cpp_code.cpp new file mode 100644 index 0000000..acbe22a --- /dev/null +++ b/gklearn/ged/util/cpp_code.cpp @@ -0,0 +1,122 @@ + else if (option.first == "random-inits") { + try { + num_random_inits_ = std::stoul(option.second); + desired_num_random_inits_ = num_random_inits_; + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option random-inits. Usage: options = \"[--random-inits ]\""); + } + if (num_random_inits_ <= 0) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option random-inits. Usage: options = \"[--random-inits ]\""); + } + } + else if (option.first == "randomness") { + if (option.second == "PSEUDO") { + use_real_randomness_ = false; + } + else if (option.second == "REAL") { + use_real_randomness_ = true; + } + else { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option randomness. Usage: options = \"[--randomness REAL|PSEUDO] [...]\""); + } + } + else if (option.first == "stdout") { + if (option.second == "0") { + print_to_stdout_ = 0; + } + else if (option.second == "1") { + print_to_stdout_ = 1; + } + else if (option.second == "2") { + print_to_stdout_ = 2; + } + else { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option stdout. Usage: options = \"[--stdout 0|1|2] [...]\""); + } + } + else if (option.first == "refine") { + if (option.second == "TRUE") { + refine_ = true; + } + else if (option.second == "FALSE") { + refine_ = false; + } + else { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option refine. Usage: options = \"[--refine TRUE|FALSE] [...]\""); + } + } + else if (option.first == "time-limit") { + try { + time_limit_in_sec_ = std::stod(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option time-limit. Usage: options = \"[--time-limit ] [...]"); + } + } + else if (option.first == "max-itrs") { + try { + max_itrs_ = std::stoi(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option max-itrs. Usage: options = \"[--max-itrs ] [...]"); + } + } + else if (option.first == "max-itrs-without-update") { + try { + max_itrs_without_update_ = std::stoi(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option max-itrs-without-update. Usage: options = \"[--max-itrs-without-update ] [...]"); + } + } + else if (option.first == "seed") { + try { + seed_ = std::stoul(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option seed. Usage: options = \"[--seed ] [...]"); + } + } + else if (option.first == "epsilon") { + try { + epsilon_ = std::stod(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option epsilon. Usage: options = \"[--epsilon ] [...]"); + } + if (epsilon_ <= 0) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option epsilon. Usage: options = \"[--epsilon ] [...]"); + } + } + else if (option.first == "inits-increase-order") { + try { + num_inits_increase_order_ = std::stoul(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option inits-increase-order. Usage: options = \"[--inits-increase-order ]\""); + } + if (num_inits_increase_order_ <= 0) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option inits-increase-order. Usage: options = \"[--inits-increase-order ]\""); + } + } + else if (option.first == "init-type-increase-order") { + init_type_increase_order_ = option.second; + if (option.second != "CLUSTERS" and option.second != "K-MEANS++") { + throw ged::Error(std::string("Invalid argument ") + option.second + " for option init-type-increase-order. Usage: options = \"[--init-type-increase-order CLUSTERS|K-MEANS++] [...]\""); + } + } + else if (option.first == "max-itrs-increase-order") { + try { + max_itrs_increase_order_ = std::stoi(option.second); + } + catch (...) { + throw Error(std::string("Invalid argument \"") + option.second + "\" for option max-itrs-increase-order. Usage: options = \"[--max-itrs-increase-order ] [...]"); + } + } + else { + std::string valid_options("[--init-type ] [--random-inits ] [--randomness ] [--seed ] [--stdout ] "); + valid_options += "[--time-limit ] [--max-itrs ] [--epsilon ] "; + valid_options += "[--inits-increase-order ] [--init-type-increase-order ] [--max-itrs-increase-order ]"; + throw Error(std::string("Invalid option \"") + option.first + "\". Usage: options = \"" + valid_options + "\""); + } diff --git a/gklearn/preimage/misc.py b/gklearn/ged/util/misc.py similarity index 100% rename from gklearn/preimage/misc.py rename to gklearn/ged/util/misc.py diff --git a/gklearn/ged/util/util.py b/gklearn/ged/util/util.py new file mode 100644 index 0000000..b58e945 --- /dev/null +++ b/gklearn/ged/util/util.py @@ -0,0 +1,344 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Tue Mar 31 17:06:22 2020 + +@author: ljia +""" +import numpy as np +from itertools import combinations +import multiprocessing +from multiprocessing import Pool +from functools import partial +import sys +from tqdm import tqdm +import networkx as nx +from gklearn.gedlib import librariesImport, gedlibpy + + +def compute_ged(g1, g2, options): + ged_env = gedlibpy.GEDEnv() + ged_env.set_edit_cost(options['edit_cost'], edit_cost_constant=options['edit_cost_constants']) + ged_env.add_nx_graph(g1, '') + ged_env.add_nx_graph(g2, '') + listID = ged_env.get_all_graph_ids() + ged_env.init() + ged_env.set_method(options['method'], ged_options_to_string(options)) + ged_env.init_method() + + g = listID[0] + h = listID[1] + ged_env.run_method(g, h) + pi_forward = ged_env.get_forward_map(g, h) + pi_backward = ged_env.get_backward_map(g, h) + upper = ged_env.get_upper_bound(g, h) + dis = upper + + # make the map label correct (label remove map as np.inf) + nodes1 = [n for n in g1.nodes()] + nodes2 = [n for n in g2.nodes()] + nb1 = nx.number_of_nodes(g1) + nb2 = nx.number_of_nodes(g2) + pi_forward = [nodes2[pi] if pi < nb2 else np.inf for pi in pi_forward] + pi_backward = [nodes1[pi] if pi < nb1 else np.inf for pi in pi_backward] +# print(pi_forward) + + return dis, pi_forward, pi_backward + + +def compute_geds(graphs, options={}, parallel=False): + # initialize ged env. + ged_env = gedlibpy.GEDEnv() + ged_env.set_edit_cost(options['edit_cost'], edit_cost_constant=options['edit_cost_constants']) + for g in graphs: + ged_env.add_nx_graph(g, '') + listID = ged_env.get_all_graph_ids() + ged_env.init() + ged_env.set_method(options['method'], ged_options_to_string(options)) + ged_env.init_method() + + # compute ged. + ged_mat = np.zeros((len(graphs), len(graphs))) + if parallel: + len_itr = int(len(graphs) * (len(graphs) - 1) / 2) + ged_vec = [0 for i in range(len_itr)] + n_edit_operations = [0 for i in range(len_itr)] + itr = combinations(range(0, len(graphs)), 2) + n_jobs = multiprocessing.cpu_count() + if len_itr < 100 * n_jobs: + chunksize = int(len_itr / n_jobs) + 1 + else: + chunksize = 100 + def init_worker(graphs_toshare, ged_env_toshare, listID_toshare): + global G_graphs, G_ged_env, G_listID + G_graphs = graphs_toshare + G_ged_env = ged_env_toshare + G_listID = listID_toshare + do_partial = partial(_wrapper_compute_ged_parallel, options) + pool = Pool(processes=n_jobs, initializer=init_worker, initargs=(graphs, ged_env, listID)) + iterator = tqdm(pool.imap_unordered(do_partial, itr, chunksize), + desc='computing GEDs', file=sys.stdout) +# iterator = pool.imap_unordered(do_partial, itr, chunksize) + for i, j, dis, n_eo_tmp in iterator: + idx_itr = int(len(graphs) * i + j - (i + 1) * (i + 2) / 2) + ged_vec[idx_itr] = dis + ged_mat[i][j] = dis + ged_mat[j][i] = dis + n_edit_operations[idx_itr] = n_eo_tmp +# print('\n-------------------------------------------') +# print(i, j, idx_itr, dis) + pool.close() + pool.join() + + else: + ged_vec = [] + n_edit_operations = [] + for i in tqdm(range(len(graphs)), desc='computing GEDs', file=sys.stdout): +# for i in range(len(graphs)): + for j in range(i + 1, len(graphs)): + dis, pi_forward, pi_backward = _compute_ged(ged_env, listID[i], listID[j], graphs[i], graphs[j]) + ged_vec.append(dis) + ged_mat[i][j] = dis + ged_mat[j][i] = dis + n_eo_tmp = get_nb_edit_operations(graphs[i], graphs[j], pi_forward, pi_backward, edit_cost=options['edit_cost']) + n_edit_operations.append(n_eo_tmp) + + return ged_vec, ged_mat, n_edit_operations + + +def _wrapper_compute_ged_parallel(options, itr): + i = itr[0] + j = itr[1] + dis, n_eo_tmp = _compute_ged_parallel(G_ged_env, G_listID[i], G_listID[j], G_graphs[i], G_graphs[j], options) + return i, j, dis, n_eo_tmp + + +def _compute_ged_parallel(env, gid1, gid2, g1, g2, options): + dis, pi_forward, pi_backward = _compute_ged(env, gid1, gid2, g1, g2) + n_eo_tmp = get_nb_edit_operations(g1, g2, pi_forward, pi_backward, edit_cost=options['edit_cost']) # [0,0,0,0,0,0] + return dis, n_eo_tmp + + +def _compute_ged(env, gid1, gid2, g1, g2): + env.run_method(gid1, gid2) + pi_forward = env.get_forward_map(gid1, gid2) + pi_backward = env.get_backward_map(gid1, gid2) + upper = env.get_upper_bound(gid1, gid2) + dis = upper + + # make the map label correct (label remove map as np.inf) + nodes1 = [n for n in g1.nodes()] + nodes2 = [n for n in g2.nodes()] + nb1 = nx.number_of_nodes(g1) + nb2 = nx.number_of_nodes(g2) + pi_forward = [nodes2[pi] if pi < nb2 else np.inf for pi in pi_forward] + pi_backward = [nodes1[pi] if pi < nb1 else np.inf for pi in pi_backward] + + return dis, pi_forward, pi_backward + + +def get_nb_edit_operations(g1, g2, forward_map, backward_map, edit_cost=None): + if edit_cost == 'LETTER' or edit_cost == 'LETTER2': + return get_nb_edit_operations_letter(g1, g2, forward_map, backward_map) + elif edit_cost == 'NON_SYMBOLIC': + return get_nb_edit_operations_nonsymbolic(g1, g2, forward_map, backward_map) + else: + return get_nb_edit_operations_symbolic(g1, g2, forward_map, backward_map) + + +def get_nb_edit_operations_symbolic(g1, g2, forward_map, backward_map): + """Compute the number of each edit operations. + """ + n_vi = 0 + n_vr = 0 + n_vs = 0 + n_ei = 0 + n_er = 0 + n_es = 0 + + nodes1 = [n for n in g1.nodes()] + for i, map_i in enumerate(forward_map): + if map_i == np.inf: + n_vr += 1 + elif g1.node[nodes1[i]]['atom'] != g2.node[map_i]['atom']: + n_vs += 1 + for map_i in backward_map: + if map_i == np.inf: + n_vi += 1 + +# idx_nodes1 = range(0, len(node1)) + + edges1 = [e for e in g1.edges()] + nb_edges2_cnted = 0 + for n1, n2 in edges1: + idx1 = nodes1.index(n1) + idx2 = nodes1.index(n2) + # one of the nodes is removed, thus the edge is removed. + if forward_map[idx1] == np.inf or forward_map[idx2] == np.inf: + n_er += 1 + # corresponding edge is in g2. + elif (forward_map[idx1], forward_map[idx2]) in g2.edges(): + nb_edges2_cnted += 1 + # edge labels are different. + if g2.edges[((forward_map[idx1], forward_map[idx2]))]['bond_type'] \ + != g1.edges[(n1, n2)]['bond_type']: + n_es += 1 + elif (forward_map[idx2], forward_map[idx1]) in g2.edges(): + nb_edges2_cnted += 1 + # edge labels are different. + if g2.edges[((forward_map[idx2], forward_map[idx1]))]['bond_type'] \ + != g1.edges[(n1, n2)]['bond_type']: + n_es += 1 + # corresponding nodes are in g2, however the edge is removed. + else: + n_er += 1 + n_ei = nx.number_of_edges(g2) - nb_edges2_cnted + + return n_vi, n_vr, n_vs, n_ei, n_er, n_es + + +def get_nb_edit_operations_letter(g1, g2, forward_map, backward_map): + """Compute the number of each edit operations. + """ + n_vi = 0 + n_vr = 0 + n_vs = 0 + sod_vs = 0 + n_ei = 0 + n_er = 0 + + nodes1 = [n for n in g1.nodes()] + for i, map_i in enumerate(forward_map): + if map_i == np.inf: + n_vr += 1 + else: + n_vs += 1 + diff_x = float(g1.nodes[nodes1[i]]['x']) - float(g2.nodes[map_i]['x']) + diff_y = float(g1.nodes[nodes1[i]]['y']) - float(g2.nodes[map_i]['y']) + sod_vs += np.sqrt(np.square(diff_x) + np.square(diff_y)) + for map_i in backward_map: + if map_i == np.inf: + n_vi += 1 + +# idx_nodes1 = range(0, len(node1)) + + edges1 = [e for e in g1.edges()] + nb_edges2_cnted = 0 + for n1, n2 in edges1: + idx1 = nodes1.index(n1) + idx2 = nodes1.index(n2) + # one of the nodes is removed, thus the edge is removed. + if forward_map[idx1] == np.inf or forward_map[idx2] == np.inf: + n_er += 1 + # corresponding edge is in g2. Edge label is not considered. + elif (forward_map[idx1], forward_map[idx2]) in g2.edges() or \ + (forward_map[idx2], forward_map[idx1]) in g2.edges(): + nb_edges2_cnted += 1 + # corresponding nodes are in g2, however the edge is removed. + else: + n_er += 1 + n_ei = nx.number_of_edges(g2) - nb_edges2_cnted + + return n_vi, n_vr, n_vs, sod_vs, n_ei, n_er + + +def get_nb_edit_operations_nonsymbolic(g1, g2, forward_map, backward_map): + """Compute the number of each edit operations. + """ + n_vi = 0 + n_vr = 0 + n_vs = 0 + sod_vs = 0 + n_ei = 0 + n_er = 0 + n_es = 0 + sod_es = 0 + + nodes1 = [n for n in g1.nodes()] + for i, map_i in enumerate(forward_map): + if map_i == np.inf: + n_vr += 1 + else: + n_vs += 1 + sum_squares = 0 + for a_name in g1.graph['node_attrs']: + diff = float(g1.nodes[nodes1[i]][a_name]) - float(g2.nodes[map_i][a_name]) + sum_squares += np.square(diff) + sod_vs += np.sqrt(sum_squares) + for map_i in backward_map: + if map_i == np.inf: + n_vi += 1 + +# idx_nodes1 = range(0, len(node1)) + + edges1 = [e for e in g1.edges()] + for n1, n2 in edges1: + idx1 = nodes1.index(n1) + idx2 = nodes1.index(n2) + n1_g2 = forward_map[idx1] + n2_g2 = forward_map[idx2] + # one of the nodes is removed, thus the edge is removed. + if n1_g2 == np.inf or n2_g2 == np.inf: + n_er += 1 + # corresponding edge is in g2. + elif (n1_g2, n2_g2) in g2.edges(): + n_es += 1 + sum_squares = 0 + for a_name in g1.graph['edge_attrs']: + diff = float(g1.edges[n1, n2][a_name]) - float(g2.nodes[n1_g2, n2_g2][a_name]) + sum_squares += np.square(diff) + sod_es += np.sqrt(sum_squares) + elif (n2_g2, n1_g2) in g2.edges(): + n_es += 1 + sum_squares = 0 + for a_name in g1.graph['edge_attrs']: + diff = float(g1.edges[n2, n1][a_name]) - float(g2.nodes[n2_g2, n1_g2][a_name]) + sum_squares += np.square(diff) + sod_es += np.sqrt(sum_squares) + # corresponding nodes are in g2, however the edge is removed. + else: + n_er += 1 + n_ei = nx.number_of_edges(g2) - n_es + + return n_vi, n_vr, sod_vs, n_ei, n_er, sod_es + + +def ged_options_to_string(options): + opt_str = ' ' + for key, val in options.items(): + if key == 'initialization_method': + opt_str += '--initial_solutions ' + str(val) + ' ' + elif key == 'initialization_options': + opt_str += '--initialization-options ' + str(val) + ' ' + elif key == 'lower_bound_method': + opt_str += '--lower-bound-method ' + str(val) + ' ' + elif key == 'random_substitution_ratio': + opt_str += '--random-substitution-ratio ' + str(val) + ' ' + elif key == 'initial_solutions': + opt_str += '--initial-solutions ' + str(val) + ' ' + elif key == 'ratio_runs_from_initial_solutions': + opt_str += '--ratio-runs-from-initial-solutions ' + str(val) + ' ' + elif key == 'threads': + opt_str += '--threads ' + str(val) + ' ' + elif key == 'num_randpost_loops': + opt_str += '--num-randpost-loops ' + str(val) + ' ' + elif key == 'max_randpost_retrials': + opt_str += '--maxrandpost-retrials ' + str(val) + ' ' + elif key == 'randpost_penalty': + opt_str += '--randpost-penalty ' + str(val) + ' ' + elif key == 'randpost_decay': + opt_str += '--randpost-decay ' + str(val) + ' ' + elif key == 'log': + opt_str += '--log ' + str(val) + ' ' + elif key == 'randomness': + opt_str += '--randomness ' + str(val) + ' ' + +# if not isinstance(val, list): +# opt_str += '--' + key.replace('_', '-') + ' ' +# if val == False: +# val_str = 'FALSE' +# else: +# val_str = str(val) +# opt_str += val_str + ' ' + + return opt_str \ No newline at end of file diff --git a/gklearn/gedlib/README.rst b/gklearn/gedlib/README.rst new file mode 100644 index 0000000..7a44bbf --- /dev/null +++ b/gklearn/gedlib/README.rst @@ -0,0 +1,97 @@ +GEDLIBPY +==================================== + +Please Read https://dbblumenthal.github.io/gedlib/ before using Python code. +You can also find this module documentation in documentation/build/html folder. + +Make sure you have numpy installed (and Cython if you have to recompile the library). You can use pip for this. + + +Running the script +------------------- + +After donwloading the entire folder, you can run test.py to ensure the library works. + +For your code, you have to make two imports:: + + import librariesImport + import gedlibpy + +You can call each function in the library with this. You can't move any folder or files on the library, please make sure that the architecture remains the same. + +This library is compiled for Python3 only. If you want to use it with Python 2, you have to recompile it with setup.py. You have to use this command on your favorite shell:: + + python setup.py build_ext --inplace + +After this step, you can use the same lines as Python3 for import, it will be ok. Check the documentation inside the documentation/build/html folder before using function. You can also copy the tests examples for basic use. + + +A problem with the library ? +------------------------------- + +If the library isn't found, you can recompile the Python library because your Linux is different to mine. Please delete gedlibpy.so, gedlibpy.cpp and build folder. Then use this command on a linux shell :: + + python3 setup.py build_ext --inplace + +You can make it with Python 2 but make sure you use the same version with your code and the compilation. + +If it's doesn't work, maybe the version of GedLib or another library can be a problem. If it is, you can re-install GedLib for your computer. You can download it on this git : https://dbblumenthal.github.io/gedlib/ + +You have to install Gedlib with the Python installer after that. +Just call:: + + python3 install.py + +Make the links like indicate on the documentation. Use the same architecture like this library, but just change the .so and folders with your installation. You can recompile the Python library with setup command, after that. + +If you use Mac OS, you have to follow all this part, and install the external libraries with this command:: + + install_name_tool -change // + +For an example, you have to write these lines:: + + install_name_tool -change libdoublefann.2.dylib lib/fann/libdoublefann.2.dylib gedlibpy.so + install_name_tool -change libsvm.so lib/libsvm.3.22/libsvm.so gedlibpy.so + install_name_tool -change libnomad.so lib/nomad/libnomad.so gedlibpy.so + install_name_tool -change libsgtelib.so lib/nomad/libsgtelib.so gedlibpy.so + +The name of the library gedlibpy can be different if you use Python 3. + +If your problem is still here, you can contact me on : natacha.lambert@unicaen.fr + +How to use this library +------------------------- + +This library allow to compute edit distance between two graphs. You have to follow these steps to use it : + +- Add your graphs (GXL files, NX Structures or your structure, make sure that the internal type is the same) +- Choose your cost function +- Init your environnment (After that, the cost function and your graphs can't be modified) +- Choose your method computation +- Run the computation with the IDs of the two graphs. You can have the ID when you add the graph or with some functions +- Find the result with differents functions (NodeMap, edit distance, etc) + +Here is an example of code with GXL graphs:: + + gedlibpy.load_GXL_graphs('include/gedlib-master/data/datasets/Mutagenicity/data/', 'collections/MUTA_10.xml') + listID = gedlibpy.get_all_graph_ids() + gedlibpy.set_edit_cost("CHEM_1") + gedlibpy.init() + gedlibpy.set_method("IPFP", "") + gedlibpy.init_method() + g = listID[0] + h = listID[1] + + gedlibpy.run_method(g,h) + + print("Node Map : ", gedlibpy.get_node_map(g,h)) + print ("Upper Bound = " + str(gedlibpy.get_upper_bound(g,h)) + ", Lower Bound = " + str(gedlibpy.get_lower_bound(g,h)) + ", Runtime = " + str(gedlibpy.get_runtime(g,h))) + + +Please read the documentation for more examples and functions. + + +An advice if you don't code in a shell +--------------------------------------- + +Python library don't indicate each C++ error. If you have a restart causing by an error in your code, please use on a linux shell for having C++ errors. diff --git a/gklearn/gedlib/__init__.py b/gklearn/gedlib/__init__.py new file mode 100644 index 0000000..1289a2c --- /dev/null +++ b/gklearn/gedlib/__init__.py @@ -0,0 +1,10 @@ +# -*-coding:utf-8 -*- +""" +gedlib + +""" + +# info +__version__ = "0.1" +__author__ = "Linlin Jia" +__date__ = "March 2020" diff --git a/gklearn/gedlib/documentation/Makefile b/gklearn/gedlib/documentation/Makefile new file mode 100644 index 0000000..d42ba39 --- /dev/null +++ b/gklearn/gedlib/documentation/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = Cython_GedLib +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/gklearn/gedlib/documentation/gedlibpy.pdf b/gklearn/gedlib/documentation/gedlibpy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a88fcd519b23436e5076a89ebb958f1b7655091 GIT binary patch literal 170276 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

@MKmMJwe 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 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/gklearn/gedlib/documentation/source/conf.py b/gklearn/gedlib/documentation/source/conf.py new file mode 100644 index 0000000..d1836bc --- /dev/null +++ b/gklearn/gedlib/documentation/source/conf.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +# +# Python_GedLib documentation build configuration file, created by +# sphinx-quickstart on Thu Jun 13 16:10:06 2019. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +#sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('../../')) +sys.path.append("../../lib/fann") +#,"lib/gedlib", "lib/libsvm.3.22","lib/nomad" + + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.githubpages'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'GeDLiBPy' +copyright = u'2019, Natacha Lambert' +author = u'Natacha Lambert' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'1.0' +# The full version, including alpha/beta/rc tags. +release = u'1.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# This is required for the alabaster theme +# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars +html_sidebars = { + '**': [ + 'relations.html', # needs 'show_related': True theme option to display + 'searchbox.html', + ] +} + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'gedlibpydoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'gedlibpy.tex', u'gedlibpy Documentation', + u'Natacha Lambert', 'manual'), +] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'gedlibpy', u'gedlibpy Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'gedlibpy', u'gedlibpy Documentation', + author, 'gedlibpy', 'One line description of project.', + 'Miscellaneous'), +] + + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/gklearn/gedlib/documentation/source/doc.rst b/gklearn/gedlib/documentation/source/doc.rst new file mode 100644 index 0000000..07ec991 --- /dev/null +++ b/gklearn/gedlib/documentation/source/doc.rst @@ -0,0 +1,2 @@ +.. automodule:: gedlibpy + :members: diff --git a/gklearn/gedlib/documentation/source/editcost.rst b/gklearn/gedlib/documentation/source/editcost.rst new file mode 100644 index 0000000..ea3d36b --- /dev/null +++ b/gklearn/gedlib/documentation/source/editcost.rst @@ -0,0 +1,42 @@ +How to add your own editCost class +========================================= + +When you choose your cost function, you can decide some parameters to personalize the function. But if you have some graphs which its type doesn't correpond to the choices, you can create your edit cost function. + +For this, you have to write it in C++. + +C++ side +------------- + +You class must inherit to EditCost class, which is an asbtract class. You can find it here : include/gedlib-master/src/edit_costs + +You can inspire you to the others to understand how to use it. You have to override these functions : + +- virtual double node_ins_cost_fun(const UserNodeLabel & node_label) const final; +- virtual double node_del_cost_fun(const UserNodeLabel & node_label) const final; +- virtual double node_rel_cost_fun(const UserNodeLabel & node_label_1, const UserNodeLabel & node_label_2) const final; +- virtual double edge_ins_cost_fun(const UserEdgeLabel & edge_label) const final; +- virtual double edge_del_cost_fun(const UserEdgeLabel & edge_label) const final; +- virtual double edge_rel_cost_fun(const UserEdgeLabel & edge_label_1, const UserEdgeLabel & edge_label_2) const final; + +You can add some attributes for parameters use or more functions, but these are unavoidable. + +When your class is ready, please go to the C++ Bind here : src/GedLibBind.cpp . The function is : + + void setPersonalEditCost(std::vector editCostConstants){env.set_edit_costs(Your EditCost Class(editCostConstants));} + +You have just to initialize your class. Parameters aren't mandatory, empty by default. If your class doesn't have one, you can skip this. After that, you have to recompile the project. + +Python side +---------------- + +For this, use setup.py with this command in a linux shell:: + + python3 setup.py build_ext --inplace + +You can also make it in Python 2. + +Now you can use your edit cost function with the Python function set_personal_edit_cost(edit_cost_constant). + +If you want more informations on C++, you can check the documentation of the original library here : https://github.com/dbblumenthal/gedlib + diff --git a/gklearn/gedlib/documentation/source/examples.rst b/gklearn/gedlib/documentation/source/examples.rst new file mode 100644 index 0000000..c3496b9 --- /dev/null +++ b/gklearn/gedlib/documentation/source/examples.rst @@ -0,0 +1,165 @@ +Examples +============== + +Before using each example, please make sure to put these lines on the beginnig of your code : + +.. code-block:: python + + import librariesImport + import gedlibpy + +Use your path to access it, without changing the library architecture. After that, you are ready to use the library. + +When you want to make new computation, please use this function : + +.. code-block:: python + + gedlibpy.restart_env() + +All the graphs and results will be delete so make sure you don't need it. + +Classique case with GXL graphs +------------------------------------ +.. code-block:: python + + gedlibpy.load_GXL_graphs('include/gedlib-master/data/datasets/Mutagenicity/data/', 'collections/MUTA_10.xml') + listID = gedlibpy.get_all_graph_ids() + gedlibpy.set_edit_cost("CHEM_1") + + gedlibpy.init() + + gedlibpy.set_method("IPFP", "") + gedlibpy.init_method() + + g = listID[0] + h = listID[1] + + gedlibpy.run_method(g,h) + + print("Node Map : ", gedlibpy.get_node_map(g,h)) + print ("Upper Bound = " + str(gedlibpy.get_upper_bound(g,h)) + ", Lower Bound = " + str(gedlibpy.get_lower_bound(g,h)) + ", Runtime = " + str(gedlibpy.get_runtime(g,h))) + + +You can also use this function : + +.. code-block:: python + + compute_edit_distance_on_GXl_graphs(path_folder, path_XML, edit_cost, method, options="", init_option = "EAGER_WITHOUT_SHUFFLED_COPIES") + +This function compute all edit distance between all graphs, even itself. You can see the result with some functions and graphs IDs. Please see the documentation of the function for more informations. + +Classique case with NX graphs +------------------------------------ +.. code-block:: python + + for graph in dataset : + gedlibpy.add_nx_graph(graph, classe) + listID = gedlibpy.get_all_graph_ids() + gedlibpy.set_edit_cost("CHEM_1") + + gedlibpy.init() + + gedlibpy.set_method("IPFP", "") + gedlibpy.init_method() + + g = listID[0] + h = listID[1] + + gedlibpy.run_method(g,h) + + print("Node Map : ", gedlibpy.get_node_map(g,h)) + print ("Upper Bound = " + str(gedlibpy.get_upper_bound(g,h)) + ", Lower Bound = " + str(gedlibpy.get_lower_bound(g,h)) + ", Runtime = " + str(gedlibpy.get_runtime(g,h))) + +You can also use this function : + +.. code-block:: python + + compute_edit_distance_on_nx_graphs(dataset, classes, edit_cost, method, options, init_option = "EAGER_WITHOUT_SHUFFLED_COPIES") + +This function compute all edit distance between all graphs, even itself. You can see the result in the return and with some functions and graphs IDs. Please see the documentation of the function for more informations. + +Or this function : + +.. code-block:: python + + compute_ged_on_two_graphs(g1,g2, edit_cost, method, options, init_option = "EAGER_WITHOUT_SHUFFLED_COPIES") + +This function allow to compute the edit distance just for two graphs. Please see the documentation of the function for more informations. + +Add a graph from scratch +------------------------------------ +.. code-block:: python + + currentID = gedlibpy.add_graph() + gedlibpy.add_node(currentID, "_1", {"chem" : "C"}) + gedlibpy.add_node(currentID, "_2", {"chem" : "O"}) + gedlibpy.add_edge(currentID,"_1", "_2", {"valence": "1"} ) + +Please make sure as the type are the same (string for Ids and a dictionnary for labels). If you want a symmetrical graph, you can use this function to ensure the symmetry : + +.. code-block:: python + + add_symmetrical_edge(graph_id, tail, head, edge_label) + +If you have a Nx structure, you can use directly this function : + +.. code-block:: python + + add_nx_graph(g, classe, ignore_duplicates=True) + +Even if you have another structure, you can use this function : + +.. code-block:: python + + add_random_graph(name, classe, list_of_nodes, list_of_edges, ignore_duplicates=True) + +Please read the documentation before using and respect the types. + +Median computation +------------------------------------ + +An example is available in the Median_Example folder. It contains the necessary to compute a median graph. You can launch xp-letter-gbr.py to compute median graph on all letters in the dataset, or median.py for le letter Z. + +To summarize the use, you can follow this example : + +.. code-block:: python + + import pygraph #Available with the median example + from median import draw_Letter_graph, compute_median, compute_median_set + + gedlibpy.load_GXL_graphs('../include/gedlib-master/data/datasets/Letter/HIGH/', '../include/gedlib-master/data/collections/Letter_Z.xml') + gedlibpy.set_edit_cost("LETTER") + gedlibpy.init() + gedlibpy.set_method("IPFP", "") + gedlibpy.init_method() + listID = gedlibpy.get_all_graph_ids() + + dataset,my_y = pygraph.utils.graphfiles.loadDataset("../include/gedlib-master/data/datasets/Letter/HIGH/Letter_Z.cxl") + median, sod, sods_path,set_median = compute_median(gedlibpy,listID,dataset,verbose=True) + draw_Letter_graph(median) + +Please use the function in the median.py code to simplify your use. You can adapt this example to your case. Also, some function in the PythonGedLib module can make the work easier. Ask Benoît Gauzere if you want more information. + +Hungarian algorithm +------------------------------------ + + +LSAPE +~~~~~~ + +.. code-block:: python + + result = gedlibpy.hungarian_LSAPE(matrixCost) + print("Rho = ", result[0], " Varrho = ", result[1], " u = ", result[2], " v = ", result[3]) + + +LSAP +~~~~~~ + +.. code-block:: python + + result = gedlibpy.hungarian_LSAP(matrixCost) + print("Rho = ", result[0], " Varrho = ", result[1], " u = ", result[2], " v = ", result[3]) + + + diff --git a/gklearn/gedlib/documentation/source/index.rst b/gklearn/gedlib/documentation/source/index.rst new file mode 100644 index 0000000..42b7067 --- /dev/null +++ b/gklearn/gedlib/documentation/source/index.rst @@ -0,0 +1,36 @@ +.. Python_GedLib documentation master file, created by + sphinx-quickstart on Thu Jun 13 16:10:06 2019. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + + +Welcome to GEDLIBPY's documentation! +========================================= + +This module allow to use a C++ library for edit distance between graphs (GedLib) with Python. + +Before using, please read the first section to ensure a good start with the library. Then, you can follow some examples or informations about each method. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + readme + editcost + examples + doc + +Authors +~~~~~~~~ + +* David Blumenthal for C++ module +* Natacha Lambert for Python module + +Copyright (C) 2019 by all the authors + +Indices and tables +~~~~~~~~~~~~~~~~~~~~~ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/gklearn/gedlib/documentation/source/readme.rst b/gklearn/gedlib/documentation/source/readme.rst new file mode 100644 index 0000000..bafe5ea --- /dev/null +++ b/gklearn/gedlib/documentation/source/readme.rst @@ -0,0 +1,97 @@ +How to install this library +==================================== + +Please Read https://dbblumenthal.github.io/gedlib/ before using Python code. +You can also find this module documentation in documentation/build/html folder. + +Make sure you have numpy installed (and Cython if you have to recompile the library). You can use pip for this. + + +Running the script +------------------- + +After donwloading the entire folder, you can run test.py to ensure the library works. + +For your code, you have to make two imports:: + + import librariesImport + import gedlibpy + +You can call each function in the library with this. You can't move any folder or files on the library, please make sure that the architecture remains the same. + +This library is compiled for Python3 only. If you want to use it with Python 2, you have to recompile it with setup.py. You have to use this command on your favorite shell:: + + python setup.py build_ext --inplace + +After this step, you can use the same lines as Python3 for import, it will be ok. Check the documentation inside the documentation/build/html folder before using function. You can also copy the tests examples for basic use. + + +A problem with the library ? +------------------------------- + +If the library isn't found, you can recompile the Python library because your Linux is different to mine. Please delete gedlibpy.so, gedlibpy.cpp and build folder. Then use this command on a linux shell :: + + python3 setup.py build_ext --inplace + +You can make it with Python 2 but make sure you use the same version with your code and the compilation. + +If it's doesn't work, maybe the version of GedLib or another library can be a problem. If it is, you can re-install GedLib for your computer. You can download it on this git : https://dbblumenthal.github.io/gedlib/ + +You have to install Gedlib with the Python installer after that. +Just call:: + + python3 install.py + +Make the links like indicate on the documentation. Use the same architecture like this library, but just change the .so and folders with your installation. You can recompile the Python library with setup command, after that. + +If you use Mac OS, you have to follow all this part, and install the external libraries with this command:: + + install_name_tool -change // + +For an example, you have to write these lines:: + + install_name_tool -change libdoublefann.2.dylib lib/fann/libdoublefann.2.dylib gedlibpy.so + install_name_tool -change libsvm.so lib/libsvm.3.22/libsvm.so gedlibpy.so + install_name_tool -change libnomad.so lib/nomad/libnomad.so gedlibpy.so + install_name_tool -change libsgtelib.so lib/nomad/libsgtelib.so gedlibpy.so + +The name of the library gedlibpy can be different if you use Python 3. + +If your problem is still here, you can contact me on : natacha.lambert@unicaen.fr + +How to use this library +------------------------- + +This library allow to compute edit distance between two graphs. You have to follow these steps to use it : + +- Add your graphs (GXL files, NX Structures or your structure, make sure that the internal type is the same) +- Choose your cost function +- Init your environnment (After that, the cost function and your graphs can't be modified) +- Choose your method computation +- Run the computation with the IDs of the two graphs. You can have the ID when you add the graph or with some functions +- Find the result with differents functions (NodeMap, edit distance, etc) + +Here is an example of code with GXL graphs:: + + gedlibpy.load_GXL_graphs('include/gedlib-master/data/datasets/Mutagenicity/data/', 'collections/MUTA_10.xml') + listID = gedlibpy.get_all_graph_ids() + gedlibpy.set_edit_cost("CHEM_1") + gedlibpy.init() + gedlibpy.set_method("IPFP", "") + gedlibpy.init_method() + g = listID[0] + h = listID[1] + + gedlibpy.run_method(g,h) + + print("Node Map : ", gedlibpy.get_node_map(g,h)) + print ("Upper Bound = " + str(gedlibpy.get_upper_bound(g,h)) + ", Lower Bound = " + str(gedlibpy.get_lower_bound(g,h)) + ", Runtime = " + str(gedlibpy.get_runtime(g,h))) + + +Please read the documentation for more examples and functions. + + +An advice if you don't code in a shell +--------------------------------------- + +Python library don't indicate each C++ error. If you have a restart causing by an error in your code, please use on a linux shell for having C++ errors. diff --git a/gklearn/gedlib/gedlibpy.cpp b/gklearn/gedlib/gedlibpy.cpp new file mode 100644 index 0000000..3766a46 --- /dev/null +++ b/gklearn/gedlib/gedlibpy.cpp @@ -0,0 +1,25510 @@ +/* Generated by Cython 0.29.15 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "src/GedLibBind.hpp" + ], + "extra_compile_args": [ + "-std=c++11" + ], + "extra_link_args": [ + "-std=c++11" + ], + "include_dirs": [ + "src", + "include", + "include/lsape", + "include/Eigen", + "include/nomad", + "include/sgtelib", + "include/libsvm.3.22", + "include/fann", + "include/boost_1_69_0" + ], + "language": "c++", + "libraries": [ + "doublefann", + "sgtelib", + "svm", + "nomad" + ], + "library_dirs": [ + "lib/fann", + "lib/gedlib", + "lib/libsvm.3.22", + "lib/nomad" + ], + "name": "gedlibpy", + "sources": [ + "gedlibpy.pyx" + ] + }, + "module_name": "gedlibpy" +} +END: Cython Metadata */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. +#else +#define CYTHON_ABI "0_29_15" +#define CYTHON_HEX_VERSION 0x001D0FF0 +#define CYTHON_FUTURE_DIVISION 1 +#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 + #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 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 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 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #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 + #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 + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #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 + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #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 __cplusplus + #error "Cython files generated with the C++ option must be compiled with a C++ compiler." +#endif +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #else + #define CYTHON_INLINE inline + #endif +#endif +template +void __Pyx_call_destructor(T& x) { + x.~T(); +} +template +class __Pyx_FakeReference { + public: + __Pyx_FakeReference() : ptr(NULL) { } + __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } + T *operator->() { return ptr; } + T *operator&() { return ptr; } + operator T&() { return *ptr; } + template bool operator ==(U other) { return *ptr == other; } + template bool operator !=(U other) { return *ptr != other; } + private: + T *ptr; +}; + +#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" +#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#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 + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_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) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) +#else + #define CYTHON_PEP393_ENABLED 0 + #define 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 + #define PyObject_Unicode PyObject_Str +#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 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 PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), 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(MS_WINDOWS) + #define _USE_MATH_DEFINES +#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_ERR(f_index, lineno, Ln_error) \ +{ \ + __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; 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__gedlibpy +#define __PYX_HAVE_API__gedlibpy +/* Early includes */ +#include "ios" +#include "new" +#include "stdexcept" +#include "typeinfo" +#include +#include +#include +#include +#include +#include +#include +#include "numpy/arrayobject.h" +#include "numpy/ufuncobject.h" +#include "pythread.h" +#include "src/GedLibBind.hpp" +#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); +#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; + +/* Header.proto */ +#if !defined(CYTHON_CCOMPLEX) + #if defined(__cplusplus) + #define CYTHON_CCOMPLEX 1 + #elif defined(_Complex_I) + #define CYTHON_CCOMPLEX 1 + #else + #define CYTHON_CCOMPLEX 0 + #endif +#endif +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #include + #else + #include + #endif +#endif +#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) + #undef _Complex_I + #define _Complex_I 1.0fj +#endif + + +static const char *__pyx_f[] = { + "gedlibpy.pyx", + "stringsource", + "__init__.pxd", + "array.pxd", + "type.pxd", + "bool.pxd", + "complex.pxd", +}; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 + * # in Cython to enable them only on the right systems. + * + * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + */ +typedef npy_int8 __pyx_t_5numpy_int8_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 + * + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t + */ +typedef npy_int16 __pyx_t_5numpy_int16_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778 + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< + * ctypedef npy_int64 int64_t + * #ctypedef npy_int96 int96_t + */ +typedef npy_int32 __pyx_t_5numpy_int32_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< + * #ctypedef npy_int96 int96_t + * #ctypedef npy_int128 int128_t + */ +typedef npy_int64 __pyx_t_5numpy_int64_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 + * #ctypedef npy_int128 int128_t + * + * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + */ +typedef npy_uint8 __pyx_t_5numpy_uint8_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784 + * + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t + */ +typedef npy_uint16 __pyx_t_5numpy_uint16_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< + * ctypedef npy_uint64 uint64_t + * #ctypedef npy_uint96 uint96_t + */ +typedef npy_uint32 __pyx_t_5numpy_uint32_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786 + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< + * #ctypedef npy_uint96 uint96_t + * #ctypedef npy_uint128 uint128_t + */ +typedef npy_uint64 __pyx_t_5numpy_uint64_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 + * #ctypedef npy_uint128 uint128_t + * + * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< + * ctypedef npy_float64 float64_t + * #ctypedef npy_float80 float80_t + */ +typedef npy_float32 __pyx_t_5numpy_float32_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 + * + * ctypedef npy_float32 float32_t + * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< + * #ctypedef npy_float80 float80_t + * #ctypedef npy_float128 float128_t + */ +typedef npy_float64 __pyx_t_5numpy_float64_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800 + * # The int types are mapped a bit surprising -- + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t + */ +typedef npy_long __pyx_t_5numpy_int_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong longlong_t + * + */ +typedef npy_longlong __pyx_t_5numpy_long_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_ulong uint_t + */ +typedef npy_longlong __pyx_t_5numpy_longlong_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804 + * ctypedef npy_longlong longlong_t + * + * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t + */ +typedef npy_ulong __pyx_t_5numpy_uint_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805 + * + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulonglong_t + * + */ +typedef npy_ulonglong __pyx_t_5numpy_ulong_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":806 + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_intp intp_t + */ +typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":808 + * ctypedef npy_ulonglong ulonglong_t + * + * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< + * ctypedef npy_uintp uintp_t + * + */ +typedef npy_intp __pyx_t_5numpy_intp_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809 + * + * ctypedef npy_intp intp_t + * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< + * + * ctypedef npy_double float_t + */ +typedef npy_uintp __pyx_t_5numpy_uintp_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":811 + * ctypedef npy_uintp uintp_t + * + * ctypedef npy_double float_t # <<<<<<<<<<<<<< + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t + */ +typedef npy_double __pyx_t_5numpy_float_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":812 + * + * ctypedef npy_double float_t + * ctypedef npy_double double_t # <<<<<<<<<<<<<< + * ctypedef npy_longdouble longdouble_t + * + */ +typedef npy_double __pyx_t_5numpy_double_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 + * ctypedef npy_double float_t + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cfloat cfloat_t + */ +typedef npy_longdouble __pyx_t_5numpy_longdouble_t; + +/* "gedlibpy.pyx":39 + * #Long unsigned int equivalent + * cimport numpy as np + * ctypedef np.npy_uint32 UINT32_t # <<<<<<<<<<<<<< + * from cpython cimport array + * + */ +typedef npy_uint32 __pyx_t_8gedlibpy_UINT32_t; +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< float > __pyx_t_float_complex; + #else + typedef float _Complex __pyx_t_float_complex; + #endif +#else + typedef struct { float real, imag; } __pyx_t_float_complex; +#endif +static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); + +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< double > __pyx_t_double_complex; + #else + typedef double _Complex __pyx_t_double_complex; + #endif +#else + typedef struct { double real, imag; } __pyx_t_double_complex; +#endif +static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); + + +/*--- Type declarations ---*/ +#ifndef _ARRAYARRAY_H +struct arrayobject; +typedef struct arrayobject arrayobject; +#endif +struct __pyx_obj_8gedlibpy_GEDEnv; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 + * ctypedef npy_longdouble longdouble_t + * + * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t + */ +typedef npy_cfloat __pyx_t_5numpy_cfloat_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 + * + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< + * ctypedef npy_clongdouble clongdouble_t + * + */ +typedef npy_cdouble __pyx_t_5numpy_cdouble_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":817 + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cdouble complex_t + */ +typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819 + * ctypedef npy_clongdouble clongdouble_t + * + * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew1(a): + */ +typedef npy_cdouble __pyx_t_5numpy_complex_t; + +/* "gedlibpy.pyx":178 + * + * + * cdef class GEDEnv: # <<<<<<<<<<<<<< + * """Cython wrapper class for C++ class PyGEDEnv + * """ + */ +struct __pyx_obj_8gedlibpy_GEDEnv { + PyObject_HEAD + pyged::PyGEDEnv *c_env; +}; + + +/* --- 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); + +/* ListCompAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len)) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + Py_SIZE(list) = len+1; + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +/* IncludeCppStringH.proto */ +#include + +/* decode_c_string_utf16.proto */ +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 0; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = -1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} + +/* decode_c_bytes.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes( + const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); + +/* decode_cpp_string.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_cpp_string( + std::string cppstring, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + return __Pyx_decode_c_bytes( + cppstring.data(), cppstring.size(), start, stop, encoding, errors, decode_func); +} + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); + +/* 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); + +/* 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 + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #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 + +/* 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 + +/* PyObjectCall2Args.proto */ +static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* 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); + +/* 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) {\ + 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);\ +} +#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} +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 + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* 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 + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* 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); + +/* 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 + +/* 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 + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* UnpackTupleError.proto */ +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); + +/* UnpackTuple2.proto */ +#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ + (likely(is_tuple || PyTuple_Check(tuple)) ?\ + (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ + __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ + (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ + __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); +static int __Pyx_unpack_tuple2_generic( + PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); + +/* dict_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto +#define __PYX_HAVE_RT_ImportType_proto +enum __Pyx_ImportType_CheckSize { + __Pyx_ImportType_CheckSize_Error = 0, + __Pyx_ImportType_CheckSize_Warn = 1, + __Pyx_ImportType_CheckSize_Ignore = 2 +}; +static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); +#endif + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); + +/* CythonFunction.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; + 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)) +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ + __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) +static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *self, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(void); + +/* SetNameInClass.proto */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) +#elif CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_SetNameInClass(ns, name, value)\ + (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) +#else +#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) +#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); + +/* ArrayAPI.proto */ +#ifndef _ARRAYARRAY_H +#define _ARRAYARRAY_H +typedef struct arraydescr { + int typecode; + int itemsize; + PyObject * (*getitem)(struct arrayobject *, Py_ssize_t); + int (*setitem)(struct arrayobject *, Py_ssize_t, PyObject *); +#if PY_MAJOR_VERSION >= 3 + char *formats; +#endif +} arraydescr; +struct arrayobject { + PyObject_HEAD + Py_ssize_t ob_size; + union { + char *ob_item; + float *as_floats; + double *as_doubles; + int *as_ints; + unsigned int *as_uints; + unsigned char *as_uchars; + signed char *as_schars; + char *as_chars; + unsigned long *as_ulongs; + long *as_longs; +#if PY_MAJOR_VERSION >= 3 + unsigned long long *as_ulonglongs; + long long *as_longlongs; +#endif + short *as_shorts; + unsigned short *as_ushorts; + Py_UNICODE *as_pyunicodes; + void *as_voidptr; + } data; + Py_ssize_t allocated; + struct arraydescr *ob_descr; + PyObject *weakreflist; +#if PY_MAJOR_VERSION >= 3 + int ob_exports; +#endif +}; +#ifndef NO_NEWARRAY_INLINE +static CYTHON_INLINE PyObject * newarrayobject(PyTypeObject *type, Py_ssize_t size, + struct arraydescr *descr) { + arrayobject *op; + size_t nbytes; + if (size < 0) { + PyErr_BadInternalCall(); + return NULL; + } + nbytes = size * descr->itemsize; + if (nbytes / descr->itemsize != (size_t)size) { + return PyErr_NoMemory(); + } + op = (arrayobject *) type->tp_alloc(type, 0); + if (op == NULL) { + return NULL; + } + op->ob_descr = descr; + op->allocated = size; + op->weakreflist = NULL; + op->ob_size = size; + if (size <= 0) { + op->data.ob_item = NULL; + } + else { + op->data.ob_item = PyMem_NEW(char, nbytes); + if (op->data.ob_item == NULL) { + Py_DECREF(op); + return PyErr_NoMemory(); + } + } + return (PyObject *) op; +} +#else +PyObject* newarrayobject(PyTypeObject *type, Py_ssize_t size, + struct arraydescr *descr); +#endif +static CYTHON_INLINE int resize(arrayobject *self, Py_ssize_t n) { + void *items = (void*) self->data.ob_item; + PyMem_Resize(items, char, (size_t)(n * self->ob_descr->itemsize)); + if (items == NULL) { + PyErr_NoMemory(); + return -1; + } + self->data.ob_item = (char*) items; + self->ob_size = n; + self->allocated = n; + return 0; +} +static CYTHON_INLINE int resize_smart(arrayobject *self, Py_ssize_t n) { + void *items = (void*) self->data.ob_item; + Py_ssize_t newsize; + if (n < self->allocated && n*4 > self->allocated) { + self->ob_size = n; + return 0; + } + newsize = n + (n / 2) + 1; + if (newsize <= n) { + PyErr_NoMemory(); + return -1; + } + PyMem_Resize(items, char, (size_t)(newsize * self->ob_descr->itemsize)); + if (items == NULL) { + PyErr_NoMemory(); + return -1; + } + self->data.ob_item = (char*) items; + self->ob_size = n; + self->allocated = newsize; + return 0; +} +#endif + +/* CppExceptionConversion.proto */ +#ifndef __Pyx_CppExn2PyErr +#include +#include +#include +#include +static void __Pyx_CppExn2PyErr() { + try { + if (PyErr_Occurred()) + ; // let the latest Python exn pass through and ignore the current one + else + throw; + } catch (const std::bad_alloc& exn) { + PyErr_SetString(PyExc_MemoryError, exn.what()); + } catch (const std::bad_cast& exn) { + PyErr_SetString(PyExc_TypeError, exn.what()); + } catch (const std::bad_typeid& exn) { + PyErr_SetString(PyExc_TypeError, exn.what()); + } catch (const std::domain_error& exn) { + PyErr_SetString(PyExc_ValueError, exn.what()); + } catch (const std::invalid_argument& exn) { + PyErr_SetString(PyExc_ValueError, exn.what()); + } catch (const std::ios_base::failure& exn) { + PyErr_SetString(PyExc_IOError, exn.what()); + } catch (const std::out_of_range& exn) { + PyErr_SetString(PyExc_IndexError, exn.what()); + } catch (const std::overflow_error& exn) { + PyErr_SetString(PyExc_OverflowError, exn.what()); + } catch (const std::range_error& exn) { + PyErr_SetString(PyExc_ArithmeticError, exn.what()); + } catch (const std::underflow_error& exn) { + PyErr_SetString(PyExc_ArithmeticError, exn.what()); + } catch (const std::exception& exn) { + PyErr_SetString(PyExc_RuntimeError, exn.what()); + } + catch (...) + { + PyErr_SetString(PyExc_RuntimeError, "Unknown exception"); + } +} +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* RealImag.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #define __Pyx_CREAL(z) ((z).real()) + #define __Pyx_CIMAG(z) ((z).imag()) + #else + #define __Pyx_CREAL(z) (__real__(z)) + #define __Pyx_CIMAG(z) (__imag__(z)) + #endif +#else + #define __Pyx_CREAL(z) ((z).real) + #define __Pyx_CIMAG(z) ((z).imag) +#endif +#if defined(__cplusplus) && CYTHON_CCOMPLEX\ + && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) + #define __Pyx_SET_CREAL(z,x) ((z).real(x)) + #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) +#else + #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) + #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_float(a, b) ((a)==(b)) + #define __Pyx_c_sum_float(a, b) ((a)+(b)) + #define __Pyx_c_diff_float(a, b) ((a)-(b)) + #define __Pyx_c_prod_float(a, b) ((a)*(b)) + #define __Pyx_c_quot_float(a, b) ((a)/(b)) + #define __Pyx_c_neg_float(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_float(z) ((z)==(float)0) + #define __Pyx_c_conj_float(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_float(z) (::std::abs(z)) + #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_float(z) ((z)==0) + #define __Pyx_c_conj_float(z) (conjf(z)) + #if 1 + #define __Pyx_c_abs_float(z) (cabsf(z)) + #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); + #endif +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_double(a, b) ((a)==(b)) + #define __Pyx_c_sum_double(a, b) ((a)+(b)) + #define __Pyx_c_diff_double(a, b) ((a)-(b)) + #define __Pyx_c_prod_double(a, b) ((a)*(b)) + #define __Pyx_c_quot_double(a, b) ((a)/(b)) + #define __Pyx_c_neg_double(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_double(z) ((z)==(double)0) + #define __Pyx_c_conj_double(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (::std::abs(z)) + #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_double(z) ((z)==0) + #define __Pyx_c_conj_double(z) (conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (cabs(z)) + #define __Pyx_c_pow_double(a, b) (cpow(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); + #endif +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(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) + +/* CStringEquals.proto */ +static CYTHON_INLINE int __Pyx_StrEq(const char *, const char *); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'libcpp.vector' */ + +/* Module declarations from 'libc.string' */ + +/* Module declarations from 'libcpp.string' */ + +/* Module declarations from 'libcpp.utility' */ + +/* Module declarations from 'libcpp.map' */ + +/* Module declarations from 'libcpp' */ + +/* Module declarations from 'libcpp.pair' */ + +/* Module declarations from 'libcpp.list' */ + +/* Module declarations from 'cpython.buffer' */ + +/* Module declarations from 'libc.stdio' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.type' */ +static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; + +/* Module declarations from 'cpython.version' */ + +/* Module declarations from 'cpython.exc' */ + +/* Module declarations from 'cpython.module' */ + +/* Module declarations from 'cpython.mem' */ + +/* Module declarations from 'cpython.tuple' */ + +/* Module declarations from 'cpython.list' */ + +/* Module declarations from 'cpython.sequence' */ + +/* Module declarations from 'cpython.mapping' */ + +/* Module declarations from 'cpython.iterator' */ + +/* Module declarations from 'cpython.number' */ + +/* Module declarations from 'cpython.int' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.bool' */ +static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0; + +/* Module declarations from 'cpython.long' */ + +/* Module declarations from 'cpython.float' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.complex' */ +static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0; + +/* Module declarations from 'cpython.string' */ + +/* Module declarations from 'cpython.unicode' */ + +/* Module declarations from 'cpython.dict' */ + +/* Module declarations from 'cpython.instance' */ + +/* Module declarations from 'cpython.function' */ + +/* Module declarations from 'cpython.method' */ + +/* Module declarations from 'cpython.weakref' */ + +/* Module declarations from 'cpython.getargs' */ + +/* Module declarations from 'cpython.pythread' */ + +/* Module declarations from 'cpython.pystate' */ + +/* Module declarations from 'cpython.cobject' */ + +/* Module declarations from 'cpython.oldbuffer' */ + +/* Module declarations from 'cpython.set' */ + +/* Module declarations from 'cpython.bytes' */ + +/* Module declarations from 'cpython.pycapsule' */ + +/* Module declarations from 'cpython' */ + +/* Module declarations from 'cpython.object' */ + +/* Module declarations from 'cpython.ref' */ + +/* Module declarations from 'numpy' */ + +/* Module declarations from 'numpy' */ +static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; +static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; +static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; +static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; +static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; +static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/ + +/* Module declarations from 'array' */ + +/* Module declarations from 'cpython.array' */ +static PyTypeObject *__pyx_ptype_7cpython_5array_array = 0; +static CYTHON_INLINE int __pyx_f_7cpython_5array_extend_buffer(arrayobject *, char *, Py_ssize_t); /*proto*/ + +/* Module declarations from 'gedlibpy' */ +static PyTypeObject *__pyx_ptype_8gedlibpy_GEDEnv = 0; +static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &); /*proto*/ +static std::string __pyx_convert_string_from_py_std__in_string(PyObject *); /*proto*/ +static PyObject *__pyx_convert_pair_to_py_size_t____size_t(std::pair const &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_size_t(const std::vector &); /*proto*/ +static std::map __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(PyObject *); /*proto*/ +static PyObject *__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(std::map const &); /*proto*/ +static PyObject *__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(std::map ,std::map > const &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(const std::vector > &); /*proto*/ +static std::vector __pyx_convert_vector_from_py_double(PyObject *); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_npy_uint64(const std::vector &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(const std::vector > &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_int(const std::vector &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const std::vector > &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(const std::vector > &); /*proto*/ +static std::vector __pyx_convert_vector_from_py_size_t(PyObject *); /*proto*/ +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(PyObject *); /*proto*/ +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(PyObject *); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_double(const std::vector &); /*proto*/ +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const std::vector > &); /*proto*/ +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(PyObject *); /*proto*/ +#define __Pyx_MODULE_NAME "gedlibpy" +extern int __pyx_module_is_main_gedlibpy; +int __pyx_module_is_main_gedlibpy = 0; + +/* Implementation of 'gedlibpy' */ +static PyObject *__pyx_builtin_print; +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_RuntimeError; +static PyObject *__pyx_builtin_ImportError; +static PyObject *__pyx_builtin_MemoryError; +static const char __pyx_k_[] = ""; +static const char __pyx_k_g[] = "g"; +static const char __pyx_k_h[] = "h"; +static const char __pyx_k_g1[] = "g1"; +static const char __pyx_k_g2[] = "g2"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_nx[] = "nx"; +static const char __pyx_k_os[] = "os"; +static const char __pyx_k__20[] = "*"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_key[] = "key"; +static const char __pyx_k_res[] = "res"; +static const char __pyx_k_cdll[] = "cdll"; +static const char __pyx_k_file[] = "__file__"; +static const char __pyx_k_g_id[] = "g_id"; +static const char __pyx_k_h_id[] = "h_id"; +static const char __pyx_k_head[] = "head"; +static const char __pyx_k_init[] = "init"; +static const char __pyx_k_lib1[] = "lib1"; +static const char __pyx_k_lib2[] = "lib2"; +static const char __pyx_k_lib3[] = "lib3"; +static const char __pyx_k_lib4[] = "lib4"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "name"; +static const char __pyx_k_path[] = "path"; +static const char __pyx_k_self[] = "self"; +static const char __pyx_k_tail[] = "tail"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_Error[] = "Error"; +static const char __pyx_k_Graph[] = "Graph"; +static const char __pyx_k_edges[] = "edges"; +static const char __pyx_k_graph[] = "graph"; +static const char __pyx_k_items[] = "items"; +static const char __pyx_k_map_b[] = "map_b"; +static const char __pyx_k_map_u[] = "map_u"; +static const char __pyx_k_nodes[] = "nodes"; +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_value[] = "value"; +static const char __pyx_k_GEDEnv[] = "GEDEnv"; +static const char __pyx_k_classe[] = "classe"; +static const char __pyx_k_ctypes[] = "ctypes"; +static const char __pyx_k_decode[] = "decode"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_init_2[] = "__init__"; +static const char __pyx_k_method[] = "method"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_name_2[] = "__name__"; +static const char __pyx_k_option[] = "option"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_classes[] = "classes"; +static const char __pyx_k_dataset[] = "dataset"; +static const char __pyx_k_dirname[] = "dirname"; +static const char __pyx_k_message[] = "message"; +static const char __pyx_k_node_id[] = "node_id"; +static const char __pyx_k_options[] = "options"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_add_edge[] = "add_edge"; +static const char __pyx_k_add_node[] = "add_node"; +static const char __pyx_k_gedlibpy[] = "gedlibpy"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_graph_id[] = "graph_id"; +static const char __pyx_k_networkx[] = "networkx"; +static const char __pyx_k_nx_graph[] = "nx_graph"; +static const char __pyx_k_path_XML[] = "path_XML"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_realpath[] = "realpath"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_InitError[] = "InitError"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_add_graph[] = "add_graph"; +static const char __pyx_k_adj_lists[] = "adj_lists"; +static const char __pyx_k_edge_list[] = "edge_list"; +static const char __pyx_k_edge_type[] = "edge_type"; +static const char __pyx_k_edit_cost[] = "edit_cost"; +static const char __pyx_k_graph_ids[] = "graph_ids"; +static const char __pyx_k_iteritems[] = "iteritems"; +static const char __pyx_k_map_edges[] = "map_edges"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_node_type[] = "node_type"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_adj_matrix[] = "adj_matrix"; +static const char __pyx_k_edge_label[] = "edge_label"; +static const char __pyx_k_graph_name[] = "graph_name"; +static const char __pyx_k_map_edge_b[] = "map_edge_b"; +static const char __pyx_k_node_label[] = "node_label"; +static const char __pyx_k_run_method[] = "run_method"; +static const char __pyx_k_set_method[] = "set_method"; +static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_LoadLibrary[] = "LoadLibrary"; +static const char __pyx_k_MemoryError[] = "MemoryError"; +static const char __pyx_k_MethodError[] = "MethodError"; +static const char __pyx_k_clear_graph[] = "clear_graph"; +static const char __pyx_k_graph_class[] = "graph_class"; +static const char __pyx_k_init_method[] = "init_method"; +static const char __pyx_k_init_option[] = "init_option"; +static const char __pyx_k_path_folder[] = "path_folder"; +static const char __pyx_k_restart_env[] = "restart_env"; +static const char __pyx_k_RuntimeError[] = "RuntimeError"; +static const char __pyx_k_add_nx_graph[] = "add_nx_graph"; +static const char __pyx_k_edge_label_1[] = "edge_label_1"; +static const char __pyx_k_edge_label_2[] = "edge_label_2"; +static const char __pyx_k_edge_label_b[] = "edge_label_b"; +static const char __pyx_k_gedlibpy_pyx[] = "gedlibpy.pyx"; +static const char __pyx_k_get_node_map[] = "get_node_map"; +static const char __pyx_k_node_label_1[] = "node_label_1"; +static const char __pyx_k_node_label_2[] = "node_label_2"; +static const char __pyx_k_EditCostError[] = "EditCostError"; +static const char __pyx_k_Graphs_loaded[] = "Graphs loaded ! "; +static const char __pyx_k_get_edge_data[] = "get_edge_data"; +static const char __pyx_k_list_of_edges[] = "list_of_edges"; +static const char __pyx_k_list_of_nodes[] = "list_of_nodes"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; +static const char __pyx_k_set_edit_cost[] = "set_edit_cost"; +static const char __pyx_k_get_dummy_node[] = "get_dummy_node"; +static const char __pyx_k_is_initialized[] = "is_initialized"; +static const char __pyx_k_decode_your_map[] = "decode_your_map"; +static const char __pyx_k_encode_your_map[] = "encode_your_map"; +static const char __pyx_k_get_graph_edges[] = "get_graph_edges"; +static const char __pyx_k_get_upper_bound[] = "get_upper_bound"; +static const char __pyx_k_load_GXL_graphs[] = "load_GXL_graphs"; +static const char __pyx_k_print_to_stdout[] = "print_to_stdout"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; +static const char __pyx_k_InitError___init[] = "InitError.__init__"; +static const char __pyx_k_Number_of_graphs[] = "Number of graphs = "; +static const char __pyx_k_get_init_options[] = "get_init_options"; +static const char __pyx_k_ignore_duplicates[] = "ignore_duplicates"; +static const char __pyx_k_original_node_ids[] = "original_node_ids"; +static const char __pyx_k_MethodError___init[] = "MethodError.__init__"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_decode_graph_edges[] = "decode_graph_edges"; +static const char __pyx_k_edit_cost_constant[] = "edit_cost_constant"; +static const char __pyx_k_get_method_options[] = "get_method_options"; +static const char __pyx_k_get_graph_num_nodes[] = "get_graph_num_nodes"; +static const char __pyx_k_EditCostError___init[] = "EditCostError.__init__"; +static const char __pyx_k_list_of_init_options[] = "list_of_init_options"; +static const char __pyx_k_get_edit_cost_options[] = "get_edit_cost_options"; +static const char __pyx_k_get_graph_node_labels[] = "get_graph_node_labels"; +static const char __pyx_k_get_original_node_ids[] = "get_original_node_ids"; +static const char __pyx_k_lib_nomad_libnomad_so[] = "/lib/nomad/libnomad.so"; +static const char __pyx_k_list_of_method_options[] = "list_of_method_options"; +static const char __pyx_k_lib_nomad_libsgtelib_so[] = "/lib/nomad/libsgtelib.so"; +static const char __pyx_k_Computation_between_graph[] = "Computation between graph "; +static const char __pyx_k_Initialization_terminated[] = "Initialization terminated !"; +static const char __pyx_k_lib_fann_libdoublefann_so[] = "/lib/fann/libdoublefann.so"; +static const char __pyx_k_lib_libsvm_3_22_libsvm_so[] = "/lib/libsvm.3.22/libsvm.so"; +static const char __pyx_k_list_of_edit_cost_options[] = "list_of_edit_cost_options"; +static const char __pyx_k_Initialization_in_progress[] = "Initialization in progress..."; +static const char __pyx_k_Loading_graphs_in_progress[] = "Loading graphs in progress..."; +static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; +static const char __pyx_k_EAGER_WITHOUT_SHUFFLED_COPIES[] = "EAGER_WITHOUT_SHUFFLED_COPIES"; +static const char __pyx_k_Class_for_Edit_Cost_Error_Raise[] = "\n\t\tClass for Edit Cost Error. Raise an error if an edit cost function doesn't exist in the library (not in list_of_edit_cost_options).\n\n\t\t:attribute message: The message to print when an error is detected.\n\t\t:type message: string\n\t"; +static const char __pyx_k_Class_for_Init_Error_Raise_an_e[] = "\n\t\tClass for Init Error. Raise an error if an init option doesn't exist in the library (not in list_of_init_options).\n\n\t\t:attribute message: The message to print when an error is detected.\n\t\t:type message: string\n\t"; +static const char __pyx_k_Class_for_Method_Error_Raise_an[] = "\n\t\tClass for Method Error. Raise an error if a computation method doesn't exist in the library (not in list_of_method_options).\n\n\t\t:attribute message: The message to print when an error is detected.\n\t\t:type message: string\n\t"; +static const char __pyx_k_Class_for_error_s_management_Th[] = "\n\t\tClass for error's management. This one is general. \n\t"; +static const char __pyx_k_Finish_The_return_contains_edit[] = "Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment"; +static const char __pyx_k_Finish_You_can_check_the_result[] = "Finish ! You can check the result with each ID of graphs ! There are in the return"; +static const char __pyx_k_Python_GedLib_module_This_modul[] = "\n\tPython GedLib module\n\t======================\n\t\n\tThis module allow to use a C++ library for edit distance between graphs (GedLib) with Python.\n\n\t\n\tAuthors\n\t-------------------\n \n\tDavid Blumenthal\n\tNatacha Lambert\n\tLinlin Jia\n\n\tCopyright (C) 2019-2020 by all the authors\n\n\tClasses & Functions\n\t-------------------\n \n"; +static const char __pyx_k_This_edit_cost_function_doesn_t[] = "This edit cost function doesn't exist, please see list_of_edit_cost_options for selecting a edit cost function"; +static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; +static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; +static const char __pyx_k_with_all_the_others_including_h[] = " with all the others including himself."; +static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; +static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; +static const char __pyx_k_Please_don_t_restart_the_environ[] = "Please don't restart the environment or recall this function, you will lose your results !"; +static const char __pyx_k_This_init_option_doesn_t_exist_p[] = "This init option doesn't exist, please see list_of_init_options for selecting an option. You can choose any options."; +static const char __pyx_k_This_method_doesn_t_exist_please[] = "This method doesn't exist, please see list_of_method_options for selecting a method"; +static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; +static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; +static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; +static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; +static PyObject *__pyx_kp_u_; +static PyObject *__pyx_kp_s_Class_for_Edit_Cost_Error_Raise; +static PyObject *__pyx_kp_s_Class_for_Init_Error_Raise_an_e; +static PyObject *__pyx_kp_s_Class_for_Method_Error_Raise_an; +static PyObject *__pyx_kp_s_Class_for_error_s_management_Th; +static PyObject *__pyx_kp_u_Computation_between_graph; +static PyObject *__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES; +static PyObject *__pyx_n_s_EditCostError; +static PyObject *__pyx_n_s_EditCostError___init; +static PyObject *__pyx_n_s_Error; +static PyObject *__pyx_kp_u_Finish_The_return_contains_edit; +static PyObject *__pyx_kp_u_Finish_You_can_check_the_result; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; +static PyObject *__pyx_n_s_GEDEnv; +static PyObject *__pyx_n_s_Graph; +static PyObject *__pyx_kp_u_Graphs_loaded; +static PyObject *__pyx_n_s_ImportError; +static PyObject *__pyx_n_s_InitError; +static PyObject *__pyx_n_s_InitError___init; +static PyObject *__pyx_kp_u_Initialization_in_progress; +static PyObject *__pyx_kp_u_Initialization_terminated; +static PyObject *__pyx_n_s_LoadLibrary; +static PyObject *__pyx_kp_u_Loading_graphs_in_progress; +static PyObject *__pyx_n_s_MemoryError; +static PyObject *__pyx_n_s_MethodError; +static PyObject *__pyx_n_s_MethodError___init; +static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; +static PyObject *__pyx_kp_u_Number_of_graphs; +static PyObject *__pyx_kp_u_Please_don_t_restart_the_environ; +static PyObject *__pyx_n_s_RuntimeError; +static PyObject *__pyx_kp_u_This_edit_cost_function_doesn_t; +static PyObject *__pyx_kp_u_This_init_option_doesn_t_exist_p; +static PyObject *__pyx_kp_u_This_method_doesn_t_exist_please; +static PyObject *__pyx_n_s_TypeError; +static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_n_s__20; +static PyObject *__pyx_n_s_add_edge; +static PyObject *__pyx_n_s_add_graph; +static PyObject *__pyx_n_s_add_node; +static PyObject *__pyx_n_s_add_nx_graph; +static PyObject *__pyx_n_s_adj_lists; +static PyObject *__pyx_n_s_adj_matrix; +static PyObject *__pyx_n_s_cdll; +static PyObject *__pyx_n_s_classe; +static PyObject *__pyx_n_s_classes; +static PyObject *__pyx_n_s_clear_graph; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_n_s_ctypes; +static PyObject *__pyx_n_s_dataset; +static PyObject *__pyx_n_s_decode; +static PyObject *__pyx_n_s_decode_graph_edges; +static PyObject *__pyx_n_s_decode_your_map; +static PyObject *__pyx_n_s_dirname; +static PyObject *__pyx_n_s_doc; +static PyObject *__pyx_n_s_edge_label; +static PyObject *__pyx_n_s_edge_label_1; +static PyObject *__pyx_n_s_edge_label_2; +static PyObject *__pyx_n_s_edge_label_b; +static PyObject *__pyx_n_s_edge_list; +static PyObject *__pyx_n_s_edge_type; +static PyObject *__pyx_n_s_edges; +static PyObject *__pyx_n_s_edit_cost; +static PyObject *__pyx_n_s_edit_cost_constant; +static PyObject *__pyx_n_s_encode; +static PyObject *__pyx_n_s_encode_your_map; +static PyObject *__pyx_n_s_file; +static PyObject *__pyx_n_s_g; +static PyObject *__pyx_n_s_g1; +static PyObject *__pyx_n_s_g2; +static PyObject *__pyx_n_s_g_id; +static PyObject *__pyx_n_s_gedlibpy; +static PyObject *__pyx_kp_s_gedlibpy_pyx; +static PyObject *__pyx_n_s_get_dummy_node; +static PyObject *__pyx_n_s_get_edge_data; +static PyObject *__pyx_n_s_get_edit_cost_options; +static PyObject *__pyx_n_s_get_graph_edges; +static PyObject *__pyx_n_s_get_graph_node_labels; +static PyObject *__pyx_n_s_get_graph_num_nodes; +static PyObject *__pyx_n_s_get_init_options; +static PyObject *__pyx_n_s_get_method_options; +static PyObject *__pyx_n_s_get_node_map; +static PyObject *__pyx_n_s_get_original_node_ids; +static PyObject *__pyx_n_s_get_upper_bound; +static PyObject *__pyx_n_s_getstate; +static PyObject *__pyx_n_s_graph; +static PyObject *__pyx_n_s_graph_class; +static PyObject *__pyx_n_s_graph_id; +static PyObject *__pyx_n_s_graph_ids; +static PyObject *__pyx_n_s_graph_name; +static PyObject *__pyx_n_s_h; +static PyObject *__pyx_n_s_h_id; +static PyObject *__pyx_n_s_head; +static PyObject *__pyx_n_u_id; +static PyObject *__pyx_n_s_ignore_duplicates; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_n_s_init; +static PyObject *__pyx_n_s_init_2; +static PyObject *__pyx_n_s_init_method; +static PyObject *__pyx_n_s_init_option; +static PyObject *__pyx_n_s_is_initialized; +static PyObject *__pyx_n_s_items; +static PyObject *__pyx_n_s_iteritems; +static PyObject *__pyx_n_s_key; +static PyObject *__pyx_n_s_lib1; +static PyObject *__pyx_n_s_lib2; +static PyObject *__pyx_n_s_lib3; +static PyObject *__pyx_n_s_lib4; +static PyObject *__pyx_kp_u_lib_fann_libdoublefann_so; +static PyObject *__pyx_kp_u_lib_libsvm_3_22_libsvm_so; +static PyObject *__pyx_kp_u_lib_nomad_libnomad_so; +static PyObject *__pyx_kp_u_lib_nomad_libsgtelib_so; +static PyObject *__pyx_n_s_list_of_edges; +static PyObject *__pyx_n_s_list_of_edit_cost_options; +static PyObject *__pyx_n_s_list_of_init_options; +static PyObject *__pyx_n_s_list_of_method_options; +static PyObject *__pyx_n_s_list_of_nodes; +static PyObject *__pyx_n_s_load_GXL_graphs; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_map_b; +static PyObject *__pyx_n_s_map_edge_b; +static PyObject *__pyx_n_s_map_edges; +static PyObject *__pyx_n_s_map_u; +static PyObject *__pyx_n_s_message; +static PyObject *__pyx_n_s_metaclass; +static PyObject *__pyx_n_s_method; +static PyObject *__pyx_n_s_module; +static PyObject *__pyx_n_s_name; +static PyObject *__pyx_n_s_name_2; +static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; +static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; +static PyObject *__pyx_n_s_networkx; +static PyObject *__pyx_kp_s_no_default___reduce___due_to_non; +static PyObject *__pyx_n_s_node_id; +static PyObject *__pyx_n_s_node_label; +static PyObject *__pyx_n_s_node_label_1; +static PyObject *__pyx_n_s_node_label_2; +static PyObject *__pyx_n_s_node_type; +static PyObject *__pyx_n_s_nodes; +static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; +static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; +static PyObject *__pyx_n_s_nx; +static PyObject *__pyx_n_s_nx_graph; +static PyObject *__pyx_n_s_option; +static PyObject *__pyx_n_s_options; +static PyObject *__pyx_n_u_original_node_ids; +static PyObject *__pyx_n_s_os; +static PyObject *__pyx_n_s_path; +static PyObject *__pyx_n_s_path_XML; +static PyObject *__pyx_n_s_path_folder; +static PyObject *__pyx_n_s_prepare; +static PyObject *__pyx_n_s_print; +static PyObject *__pyx_n_s_print_to_stdout; +static PyObject *__pyx_n_s_qualname; +static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_realpath; +static PyObject *__pyx_n_s_reduce; +static PyObject *__pyx_n_s_reduce_cython; +static PyObject *__pyx_n_s_reduce_ex; +static PyObject *__pyx_n_s_res; +static PyObject *__pyx_n_s_restart_env; +static PyObject *__pyx_n_s_run_method; +static PyObject *__pyx_n_s_self; +static PyObject *__pyx_n_s_set_edit_cost; +static PyObject *__pyx_n_s_set_method; +static PyObject *__pyx_n_s_setstate; +static PyObject *__pyx_n_s_setstate_cython; +static PyObject *__pyx_n_s_tail; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; +static PyObject *__pyx_kp_u_utf_8; +static PyObject *__pyx_n_s_value; +static PyObject *__pyx_kp_u_with_all_the_others_including_h; +static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6get_dummy_node(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static int __pyx_pf_8gedlibpy_6GEDEnv___cinit__(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static void __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_6restart_env(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_path_folder, PyObject *__pyx_v_path_XML, PyObject *__pyx_v_node_type, PyObject *__pyx_v_edge_type); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_classe); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_node_id, PyObject *__pyx_v_node_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_tail, PyObject *__pyx_v_head, PyObject *__pyx_v_edge_label, PyObject *__pyx_v_ignore_duplicates); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_tail, PyObject *__pyx_v_head, PyObject *__pyx_v_edge_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_26clear_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_edit_cost_constant); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_44set_personal_edit_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edit_cost_constant); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_init_option, PyObject *__pyx_v_print_to_stdout); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_options); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_50init_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_54run_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h, PyObject *__pyx_v_node_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h, PyObject *__pyx_v_node_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_70get_node_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_matrix_cost); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_matrix_cost); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_classe, PyObject *__pyx_v_list_of_nodes, PyObject *__pyx_v_list_of_edges, PyObject *__pyx_v_ignore_duplicates); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_classe, PyObject *__pyx_v_ignore_duplicates); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g1, PyObject *__pyx_v_g2, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_dataset, PyObject *__pyx_v_classes, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_path_folder, PyObject *__pyx_v_path_XML, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_label_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_label_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label_1, PyObject *__pyx_v_node_label_2); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_labels); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label_1, PyObject *__pyx_v_edge_label_2); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_labels); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, CYTHON_UNUSED PyObject *__pyx_v_adj_matrix, CYTHON_UNUSED PyObject *__pyx_v_adj_lists, CYTHON_UNUSED PyObject *__pyx_v_edge_list); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_nx_graph, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_graph_name, PyObject *__pyx_v_graph_class); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_128__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_130__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_13EditCostError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_11MethodError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_9InitError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_u); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_b); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_edge_b); /* proto */ +static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ +static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info, CYTHON_UNUSED int __pyx_v_flags); /* proto */ +static void __pyx_pf_7cpython_5array_5array_2__releasebuffer__(CYTHON_UNUSED arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ +static PyObject *__pyx_tp_new_8gedlibpy_GEDEnv(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_int_0; +static PyObject *__pyx_k__2; +static PyObject *__pyx_k__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__6; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_tuple__10; +static PyObject *__pyx_tuple__11; +static PyObject *__pyx_tuple__12; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__15; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__21; +static PyObject *__pyx_tuple__23; +static PyObject *__pyx_tuple__25; +static PyObject *__pyx_tuple__28; +static PyObject *__pyx_tuple__30; +static PyObject *__pyx_tuple__32; +static PyObject *__pyx_tuple__34; +static PyObject *__pyx_tuple__36; +static PyObject *__pyx_tuple__38; +static PyObject *__pyx_codeobj__22; +static PyObject *__pyx_codeobj__24; +static PyObject *__pyx_codeobj__26; +static PyObject *__pyx_codeobj__27; +static PyObject *__pyx_codeobj__29; +static PyObject *__pyx_codeobj__31; +static PyObject *__pyx_codeobj__33; +static PyObject *__pyx_codeobj__35; +static PyObject *__pyx_codeobj__37; +static PyObject *__pyx_codeobj__39; +/* Late includes */ + +/* "gedlibpy.pyx":126 + * + * + * def get_edit_cost_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents edit cost functions and returns the result. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_1get_edit_cost_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_get_edit_cost_options[] = "\n\t\tSearchs the differents edit cost functions and returns the result.\n \n\t\t:return: The list of edit cost functions\n\t\t:rtype: list[string]\n \n\t\t.. warning:: This function is useless for an external use. Please use directly list_of_edit_cost_options. \n\t\t.. note:: Prefer the list_of_edit_cost_options attribute of this module.\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_1get_edit_cost_options = {"get_edit_cost_options", (PyCFunction)__pyx_pw_8gedlibpy_1get_edit_cost_options, METH_NOARGS, __pyx_doc_8gedlibpy_get_edit_cost_options}; +static PyObject *__pyx_pw_8gedlibpy_1get_edit_cost_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_edit_cost_options (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_get_edit_cost_options(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject *__pyx_self) { + std::string __pyx_7genexpr__pyx_v_option; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + std::vector __pyx_t_2; + std::vector ::iterator __pyx_t_3; + std::vector *__pyx_t_4; + std::string __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_edit_cost_options", 0); + + /* "gedlibpy.pyx":137 + * """ + * + * return [option.decode('utf-8') for option in getEditCostStringOptions()] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + try { + __pyx_t_2 = pyged::getEditCostStringOptions(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 137, __pyx_L1_error) + } + __pyx_t_4 = &__pyx_t_2; + __pyx_t_3 = __pyx_t_4->begin(); + for (;;) { + if (!(__pyx_t_3 != __pyx_t_4->end())) break; + __pyx_t_5 = *__pyx_t_3; + ++__pyx_t_3; + __pyx_7genexpr__pyx_v_option = __pyx_t_5; + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_7genexpr__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + } /* exit inner scope */ + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":126 + * + * + * def get_edit_cost_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents edit cost functions and returns the result. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.get_edit_cost_options", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":140 + * + * + * def get_method_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents method for edit distance computation between graphs and returns the result. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_3get_method_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_2get_method_options[] = "\n\t\tSearchs the differents method for edit distance computation between graphs and returns the result.\n \n\t\t:return: The list of method to compute the edit distance between graphs\n\t\t:rtype: list[string]\n \n\t\t.. warning:: This function is useless for an external use. Please use directly list_of_method_options.\n\t\t.. note:: Prefer the list_of_method_options attribute of this module.\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_3get_method_options = {"get_method_options", (PyCFunction)__pyx_pw_8gedlibpy_3get_method_options, METH_NOARGS, __pyx_doc_8gedlibpy_2get_method_options}; +static PyObject *__pyx_pw_8gedlibpy_3get_method_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_method_options (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_2get_method_options(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject *__pyx_self) { + std::string __pyx_8genexpr1__pyx_v_option; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + std::vector __pyx_t_2; + std::vector ::iterator __pyx_t_3; + std::vector *__pyx_t_4; + std::string __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_method_options", 0); + + /* "gedlibpy.pyx":150 + * .. note:: Prefer the list_of_method_options attribute of this module. + * """ + * return [option.decode('utf-8') for option in getMethodStringOptions()] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + try { + __pyx_t_2 = pyged::getMethodStringOptions(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 150, __pyx_L1_error) + } + __pyx_t_4 = &__pyx_t_2; + __pyx_t_3 = __pyx_t_4->begin(); + for (;;) { + if (!(__pyx_t_3 != __pyx_t_4->end())) break; + __pyx_t_5 = *__pyx_t_3; + ++__pyx_t_3; + __pyx_8genexpr1__pyx_v_option = __pyx_t_5; + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr1__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + } /* exit inner scope */ + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":140 + * + * + * def get_method_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents method for edit distance computation between graphs and returns the result. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.get_method_options", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":153 + * + * + * def get_init_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_5get_init_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_4get_init_options[] = "\n\t\tSearchs the differents initialization parameters for the environment computation for graphs and returns the result.\n \n\t\t:return: The list of options to initialize the computation environment\n\t\t:rtype: list[string]\n \n\t\t.. warning:: This function is useless for an external use. Please use directly list_of_init_options.\n\t\t.. note:: Prefer the list_of_init_options attribute of this module.\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_5get_init_options = {"get_init_options", (PyCFunction)__pyx_pw_8gedlibpy_5get_init_options, METH_NOARGS, __pyx_doc_8gedlibpy_4get_init_options}; +static PyObject *__pyx_pw_8gedlibpy_5get_init_options(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_init_options (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_4get_init_options(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__pyx_self) { + std::string __pyx_8genexpr2__pyx_v_option; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + std::vector __pyx_t_2; + std::vector ::iterator __pyx_t_3; + std::vector *__pyx_t_4; + std::string __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_init_options", 0); + + /* "gedlibpy.pyx":163 + * .. note:: Prefer the list_of_init_options attribute of this module. + * """ + * return [option.decode('utf-8') for option in getInitStringOptions()] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + try { + __pyx_t_2 = pyged::getInitStringOptions(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 163, __pyx_L1_error) + } + __pyx_t_4 = &__pyx_t_2; + __pyx_t_3 = __pyx_t_4->begin(); + for (;;) { + if (!(__pyx_t_3 != __pyx_t_4->end())) break; + __pyx_t_5 = *__pyx_t_3; + ++__pyx_t_3; + __pyx_8genexpr2__pyx_v_option = __pyx_t_5; + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr2__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + } /* exit inner scope */ + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":153 + * + * + * def get_init_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.get_init_options", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":166 + * + * + * def get_dummy_node() : # <<<<<<<<<<<<<< + * """ + * Returns the ID of a dummy node. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_7get_dummy_node(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6get_dummy_node[] = "\n\t\tReturns the ID of a dummy node.\n\n\t\t:return: The ID of the dummy node (18446744073709551614 for my computer, the hugest number possible)\n\t\t:rtype: size_t\n\t\t\n\t\t.. note:: A dummy node is used when a node isn't associated to an other node.\t \n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_7get_dummy_node = {"get_dummy_node", (PyCFunction)__pyx_pw_8gedlibpy_7get_dummy_node, METH_NOARGS, __pyx_doc_8gedlibpy_6get_dummy_node}; +static PyObject *__pyx_pw_8gedlibpy_7get_dummy_node(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_dummy_node (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6get_dummy_node(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6get_dummy_node(CYTHON_UNUSED PyObject *__pyx_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_dummy_node", 0); + + /* "gedlibpy.pyx":175 + * .. note:: A dummy node is used when a node isn't associated to an other node. + * """ + * return getDummyNode() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = pyged::getDummyNode(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 175, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":166 + * + * + * def get_dummy_node() : # <<<<<<<<<<<<<< + * """ + * Returns the ID of a dummy node. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.get_dummy_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":185 + * + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self.c_env = new PyGEDEnv() + * + */ + +/* Python wrapper */ +static int __pyx_pw_8gedlibpy_6GEDEnv_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_8gedlibpy_6GEDEnv_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} + if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv___cinit__(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_8gedlibpy_6GEDEnv___cinit__(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + pyged::PyGEDEnv *__pyx_t_1; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "gedlibpy.pyx":186 + * + * def __cinit__(self): + * self.c_env = new PyGEDEnv() # <<<<<<<<<<<<<< + * + * + */ + try { + __pyx_t_1 = new pyged::PyGEDEnv(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 186, __pyx_L1_error) + } + __pyx_v_self->c_env = __pyx_t_1; + + /* "gedlibpy.pyx":185 + * + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self.c_env = new PyGEDEnv() + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":189 + * + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * del self.c_env + * + */ + +/* Python wrapper */ +static void __pyx_pw_8gedlibpy_6GEDEnv_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_8gedlibpy_6GEDEnv_3__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "gedlibpy.pyx":190 + * + * def __dealloc__(self): + * del self.c_env # <<<<<<<<<<<<<< + * + * + */ + delete __pyx_v_self->c_env; + + /* "gedlibpy.pyx":189 + * + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * del self.c_env + * + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "gedlibpy.pyx":193 + * + * + * def is_initialized(self) : # <<<<<<<<<<<<<< + * """ + * Checks and returns if the computation environment is initialized or not. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_5is_initialized(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_4is_initialized[] = "\n\t\t\tChecks and returns if the computation environment is initialized or not.\n\t \n\t\t\t:return: True if it's initialized, False otherwise\n\t\t\t:rtype: bool\n\t\t\t\n\t\t\t.. note:: This function exists for internals verifications but you can use it for your code. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_5is_initialized(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_initialized (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + bool __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("is_initialized", 0); + + /* "gedlibpy.pyx":202 + * .. note:: This function exists for internals verifications but you can use it for your code. + * """ + * return self.c_env.isInitialized() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->isInitialized(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 202, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":193 + * + * + * def is_initialized(self) : # <<<<<<<<<<<<<< + * """ + * Checks and returns if the computation environment is initialized or not. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.is_initialized", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":205 + * + * + * def restart_env(self) : # <<<<<<<<<<<<<< + * """ + * Restarts the environment variable. All data related to it will be delete. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_7restart_env(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_6restart_env[] = "\n\t\t\tRestarts the environment variable. All data related to it will be delete. \n\t \n\t\t\t.. warning:: This function deletes all graphs, computations and more so make sure you don't need anymore your environment. \n\t\t\t.. note:: You can now delete and add somes graphs after initialization so you can avoid this function. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_7restart_env(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("restart_env (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_6restart_env(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_6restart_env(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("restart_env", 0); + + /* "gedlibpy.pyx":212 + * .. note:: You can now delete and add somes graphs after initialization so you can avoid this function. + * """ + * self.c_env.restartEnv() # <<<<<<<<<<<<<< + * + * + */ + try { + __pyx_v_self->c_env->restartEnv(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 212, __pyx_L1_error) + } + + /* "gedlibpy.pyx":205 + * + * + * def restart_env(self) : # <<<<<<<<<<<<<< + * """ + * Restarts the environment variable. All data related to it will be delete. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.restart_env", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":215 + * + * + * def load_GXL_graphs(self, path_folder, path_XML, node_type, edge_type) : # <<<<<<<<<<<<<< + * """ + * Loads some GXL graphes on the environment which is in a same folder, and present in the XMLfile. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_9load_GXL_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_8load_GXL_graphs[] = "\n\t\t\tLoads some GXL graphes on the environment which is in a same folder, and present in the XMLfile. \n\t\t\t\n\t\t\t:param path_folder: The folder's path which contains GXL graphs\n\t\t\t:param path_XML: The XML's path which indicates which graphes you want to load\n\t\t\t:param node_type: Select if nodes are labeled or unlabeled\n\t\t\t:param edge_type: Select if edges are labeled or unlabeled\n\t\t\t:type path_folder: string\n\t\t\t:type path_XML: string\n\t\t\t:type node_type: bool\n\t\t\t:type edge_type: bool\n\n\t \n\t\t\t.. note:: You can call this function multiple times if you want, but not after an init call. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_9load_GXL_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_path_folder = 0; + PyObject *__pyx_v_path_XML = 0; + PyObject *__pyx_v_node_type = 0; + PyObject *__pyx_v_edge_type = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("load_GXL_graphs (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path_folder,&__pyx_n_s_path_XML,&__pyx_n_s_node_type,&__pyx_n_s_edge_type,0}; + PyObject* values[4] = {0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_path_folder)) != 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_path_XML)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 1); __PYX_ERR(0, 215, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_type)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 2); __PYX_ERR(0, 215, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_type)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 3); __PYX_ERR(0, 215, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_GXL_graphs") < 0)) __PYX_ERR(0, 215, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + } + __pyx_v_path_folder = values[0]; + __pyx_v_path_XML = values[1]; + __pyx_v_node_type = values[2]; + __pyx_v_edge_type = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 215, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.load_GXL_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_path_folder, __pyx_v_path_XML, __pyx_v_node_type, __pyx_v_edge_type); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_path_folder, PyObject *__pyx_v_path_XML, PyObject *__pyx_v_node_type, PyObject *__pyx_v_edge_type) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::string __pyx_t_4; + std::string __pyx_t_5; + bool __pyx_t_6; + bool __pyx_t_7; + __Pyx_RefNannySetupContext("load_GXL_graphs", 0); + + /* "gedlibpy.pyx":231 + * .. note:: You can call this function multiple times if you want, but not after an init call. + * """ + * self.c_env.loadGXLGraph(path_folder.encode('utf-8'), path_XML.encode('utf-8'), node_type, edge_type) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_folder, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_XML, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_node_type); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_edge_type); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + try { + __pyx_v_self->c_env->loadGXLGraph(__pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 231, __pyx_L1_error) + } + + /* "gedlibpy.pyx":215 + * + * + * def load_GXL_graphs(self, path_folder, path_XML, node_type, edge_type) : # <<<<<<<<<<<<<< + * """ + * Loads some GXL graphes on the environment which is in a same folder, and present in the XMLfile. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.load_GXL_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":234 + * + * + * def graph_ids(self) : # <<<<<<<<<<<<<< + * """ + * Searchs the first and last IDs of the loaded graphs in the environment. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_11graph_ids(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_10graph_ids[] = "\n\t\t\tSearchs the first and last IDs of the loaded graphs in the environment. \n\t \n\t\t\t:return: The pair of the first and the last graphs Ids\n\t\t\t:rtype: tuple(size_t, size_t)\n\t\t\t\n\t\t\t.. note:: Prefer this function if you have huges structures with lots of graphs. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_11graph_ids(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("graph_ids (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::pair __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("graph_ids", 0); + + /* "gedlibpy.pyx":243 + * .. note:: Prefer this function if you have huges structures with lots of graphs. + * """ + * return self.c_env.getGraphIds() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getGraphIds(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 243, __pyx_L1_error) + } + __pyx_t_2 = __pyx_convert_pair_to_py_size_t____size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":234 + * + * + * def graph_ids(self) : # <<<<<<<<<<<<<< + * """ + * Searchs the first and last IDs of the loaded graphs in the environment. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.graph_ids", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":246 + * + * + * def get_all_graph_ids(self) : # <<<<<<<<<<<<<< + * """ + * Searchs all the IDs of the loaded graphs in the environment. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_13get_all_graph_ids(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_12get_all_graph_ids[] = "\n\t\t\tSearchs all the IDs of the loaded graphs in the environment. \n\t \n\t\t\t:return: The list of all graphs's Ids \n\t\t\t:rtype: list[size_t]\n\t\t\t\n\t\t\t.. note:: The last ID is equal to (number of graphs - 1). The order correspond to the loading order. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_13get_all_graph_ids(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_all_graph_ids (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::vector __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_all_graph_ids", 0); + + /* "gedlibpy.pyx":255 + * .. note:: The last ID is equal to (number of graphs - 1). The order correspond to the loading order. + * """ + * return self.c_env.getAllGraphIds() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getAllGraphIds(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 255, __pyx_L1_error) + } + __pyx_t_2 = __pyx_convert_vector_to_py_size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":246 + * + * + * def get_all_graph_ids(self) : # <<<<<<<<<<<<<< + * """ + * Searchs all the IDs of the loaded graphs in the environment. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_all_graph_ids", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":258 + * + * + * def get_graph_class(self, id) : # <<<<<<<<<<<<<< + * """ + * Returns the class of a graph with its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_15get_graph_class(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_14get_graph_class[] = "\n\t\t\tReturns the class of a graph with its ID.\n\t\n\t\t\t:param id: The ID of the wanted graph\n\t\t\t:type id: size_t\n\t\t\t:return: The class of the graph which correpond to the ID\n\t\t\t:rtype: string\n\t\t\t\n\t\t\t.. seealso:: get_graph_class()\n\t\t\t.. note:: An empty string can be a class. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_15get_graph_class(PyObject *__pyx_v_self, PyObject *__pyx_v_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_class (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + std::string __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_class", 0); + + /* "gedlibpy.pyx":270 + * .. note:: An empty string can be a class. + * """ + * return self.c_env.getGraphClass(id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphClass(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 270, __pyx_L1_error) + } + __pyx_t_3 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":258 + * + * + * def get_graph_class(self, id) : # <<<<<<<<<<<<<< + * """ + * Returns the class of a graph with its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_class", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":273 + * + * + * def get_graph_name(self, id) : # <<<<<<<<<<<<<< + * """ + * Returns the name of a graph with its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_17get_graph_name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_16get_graph_name[] = "\n\t\t\tReturns the name of a graph with its ID. \n\t\n\t\t\t:param id: The ID of the wanted graph\n\t\t\t:type id: size_t\n\t\t\t:return: The name of the graph which correpond to the ID\n\t\t\t:rtype: string\n\t\t\t\n\t\t\t.. seealso:: get_graph_class()\n\t\t\t.. note:: An empty string can be a name. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_17get_graph_name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_name (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + std::string __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_name", 0); + + /* "gedlibpy.pyx":285 + * .. note:: An empty string can be a name. + * """ + * return self.c_env.getGraphName(id).decode('utf-8') # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphName(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 285, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_decode_cpp_string(__pyx_t_2, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":273 + * + * + * def get_graph_name(self, id) : # <<<<<<<<<<<<<< + * """ + * Returns the name of a graph with its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_name", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":288 + * + * + * def add_graph(self, name="", classe="") : # <<<<<<<<<<<<<< + * """ + * Adds a empty graph on the environment, with its name and its class. Nodes and edges will be add in a second time. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_19add_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_18add_graph[] = "\n\t\t\tAdds a empty graph on the environment, with its name and its class. Nodes and edges will be add in a second time. \n\t\n\t\t\t:param name: The name of the new graph, an empty string by default\n\t\t\t:param classe: The class of the new graph, an empty string by default\n\t\t\t:type name: string\n\t\t\t:type classe: string\n\t\t\t:return: The ID of the newly graphe\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso::add_node(), add_edge() , add_symmetrical_edge()\n\t\t\t.. note:: You can call this function without parameters. You can also use this function after initialization, call init() after you're finished your modifications. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_19add_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_name = 0; + PyObject *__pyx_v_classe = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_graph (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_classe,0}; + PyObject* values[2] = {0,0}; + values[0] = ((PyObject *)__pyx_kp_u_); + values[1] = ((PyObject *)__pyx_kp_u_); + 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 (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name); + if (value) { values[0] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_classe); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_graph") < 0)) __PYX_ERR(0, 288, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_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; + } + } + __pyx_v_name = values[0]; + __pyx_v_classe = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_graph", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 288, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_18add_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_name, __pyx_v_classe); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_classe) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::string __pyx_t_4; + std::string __pyx_t_5; + size_t __pyx_t_6; + __Pyx_RefNannySetupContext("add_graph", 0); + + /* "gedlibpy.pyx":302 + * .. note:: You can call this function without parameters. You can also use this function after initialization, call init() after you're finished your modifications. + * """ + * return self.c_env.addGraph(name.encode('utf-8'), classe.encode('utf-8')) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_classe, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_6 = __pyx_v_self->c_env->addGraph(__pyx_t_4, __pyx_t_5); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 302, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":288 + * + * + * def add_graph(self, name="", classe="") : # <<<<<<<<<<<<<< + * """ + * Adds a empty graph on the environment, with its name and its class. Nodes and edges will be add in a second time. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":305 + * + * + * def add_node(self, graph_id, node_id, node_label): # <<<<<<<<<<<<<< + * """ + * Adds a node on a graph selected by its ID. A ID and a label for the node is required. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_21add_node(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_20add_node[] = "\n\t\t\tAdds a node on a graph selected by its ID. A ID and a label for the node is required. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:param node_id: The ID of the new node\n\t\t\t:param node_label: The label of the new node\n\t\t\t:type graph_id: size_t\n\t\t\t:type node_id: string\n\t\t\t:type node_label: dict{string : string}\n\t\t\t\n\t\t\t.. seealso:: add_graph(), add_edge(), add_symmetrical_edge()\n\t\t\t.. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_21add_node(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_graph_id = 0; + PyObject *__pyx_v_node_id = 0; + PyObject *__pyx_v_node_label = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_node (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_graph_id,&__pyx_n_s_node_id,&__pyx_n_s_node_label,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_graph_id)) != 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_node_id)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 1); __PYX_ERR(0, 305, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_label)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 2); __PYX_ERR(0, 305, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_node") < 0)) __PYX_ERR(0, 305, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_graph_id = values[0]; + __pyx_v_node_id = values[1]; + __pyx_v_node_label = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 305, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_20add_node(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_graph_id, __pyx_v_node_id, __pyx_v_node_label); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_node_id, PyObject *__pyx_v_node_label) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + std::string __pyx_t_5; + std::map __pyx_t_6; + __Pyx_RefNannySetupContext("add_node", 0); + + /* "gedlibpy.pyx":319 + * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. + * """ + * self.c_env.addNode(graph_id, node_id.encode('utf-8'), encode_your_map(node_label)) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_id, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_node_label); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + try { + __pyx_v_self->c_env->addNode(__pyx_t_1, __pyx_t_5, __pyx_t_6); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 319, __pyx_L1_error) + } + + /* "gedlibpy.pyx":305 + * + * + * def add_node(self, graph_id, node_id, node_label): # <<<<<<<<<<<<<< + * """ + * Adds a node on a graph selected by its ID. A ID and a label for the node is required. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":322 + * + * + * def add_edge(self, graph_id, tail, head, edge_label, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Adds an edge on a graph selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_23add_edge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_22add_edge[] = "\n\t\t\tAdds an edge on a graph selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:param tail: The ID of the tail node for the new edge\n\t\t\t:param head: The ID of the head node for the new edge\n\t\t\t:param edge_label: The label of the new edge\n\t\t\t:param ignore_duplicates: If True, duplicate edges are ignored, otherwise it's raise an error if an existing edge is added. True by default\n\t\t\t:type graph_id: size_t\n\t\t\t:type tail: string\n\t\t\t:type head: string\n\t\t\t:type edge_label: dict{string : string}\n\t\t\t:type ignore_duplicates: bool\n\t\t\t\n\t\t\t.. seealso:: add_graph(), add_node(), add_symmetrical_edge()\n\t\t\t.. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_23add_edge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_graph_id = 0; + PyObject *__pyx_v_tail = 0; + PyObject *__pyx_v_head = 0; + PyObject *__pyx_v_edge_label = 0; + PyObject *__pyx_v_ignore_duplicates = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_edge (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_graph_id,&__pyx_n_s_tail,&__pyx_n_s_head,&__pyx_n_s_edge_label,&__pyx_n_s_ignore_duplicates,0}; + PyObject* values[5] = {0,0,0,0,0}; + values[4] = ((PyObject *)Py_True); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_graph_id)) != 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_tail)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 1); __PYX_ERR(0, 322, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_head)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 2); __PYX_ERR(0, 322, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_label)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 3); __PYX_ERR(0, 322, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ignore_duplicates); + if (value) { values[4] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_edge") < 0)) __PYX_ERR(0, 322, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_graph_id = values[0]; + __pyx_v_tail = values[1]; + __pyx_v_head = values[2]; + __pyx_v_edge_label = values[3]; + __pyx_v_ignore_duplicates = values[4]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 322, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_22add_edge(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_graph_id, __pyx_v_tail, __pyx_v_head, __pyx_v_edge_label, __pyx_v_ignore_duplicates); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_tail, PyObject *__pyx_v_head, PyObject *__pyx_v_edge_label, PyObject *__pyx_v_ignore_duplicates) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + std::string __pyx_t_5; + std::string __pyx_t_6; + std::map __pyx_t_7; + bool __pyx_t_8; + __Pyx_RefNannySetupContext("add_edge", 0); + + /* "gedlibpy.pyx":340 + * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. + * """ + * self.c_env.addEdge(graph_id, tail.encode('utf-8'), head.encode('utf-8'), encode_your_map(edge_label), ignore_duplicates) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_edge_label); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_duplicates); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + try { + __pyx_v_self->c_env->addEdge(__pyx_t_1, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 340, __pyx_L1_error) + } + + /* "gedlibpy.pyx":322 + * + * + * def add_edge(self, graph_id, tail, head, edge_label, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Adds an edge on a graph selected by its ID. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":343 + * + * + * def add_symmetrical_edge(self, graph_id, tail, head, edge_label) : # <<<<<<<<<<<<<< + * """ + * Adds a symmetrical edge on a graph selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_25add_symmetrical_edge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_24add_symmetrical_edge[] = "\n\t\t\tAdds a symmetrical edge on a graph selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:param tail: The ID of the tail node for the new edge\n\t\t\t:param head: The ID of the head node for the new edge\n\t\t\t:param edge_label: The label of the new edge\n\t\t\t:type graph_id: size_t\n\t\t\t:type tail: string\n\t\t\t:type head: string\n\t\t\t:type edge_label: dict{string : string}\n\t\t\t\n\t\t\t.. seealso:: add_graph(), add_node(), add_edge()\n\t\t\t.. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_25add_symmetrical_edge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_graph_id = 0; + PyObject *__pyx_v_tail = 0; + PyObject *__pyx_v_head = 0; + PyObject *__pyx_v_edge_label = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_symmetrical_edge (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_graph_id,&__pyx_n_s_tail,&__pyx_n_s_head,&__pyx_n_s_edge_label,0}; + PyObject* values[4] = {0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_graph_id)) != 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_tail)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 1); __PYX_ERR(0, 343, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_head)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 2); __PYX_ERR(0, 343, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_label)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 3); __PYX_ERR(0, 343, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_symmetrical_edge") < 0)) __PYX_ERR(0, 343, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + } + __pyx_v_graph_id = values[0]; + __pyx_v_tail = values[1]; + __pyx_v_head = values[2]; + __pyx_v_edge_label = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 343, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_symmetrical_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_graph_id, __pyx_v_tail, __pyx_v_head, __pyx_v_edge_label); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_tail, PyObject *__pyx_v_head, PyObject *__pyx_v_edge_label) { + PyObject *__pyx_v_tailB = NULL; + PyObject *__pyx_v_headB = NULL; + PyObject *__pyx_v_edgeLabelB = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + std::string __pyx_t_5; + std::string __pyx_t_6; + std::map __pyx_t_7; + __Pyx_RefNannySetupContext("add_symmetrical_edge", 0); + + /* "gedlibpy.pyx":359 + * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. + * """ + * tailB = tail.encode('utf-8') # <<<<<<<<<<<<<< + * headB = head.encode('utf-8') + * edgeLabelB = encode_your_map(edge_label) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_tailB = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":360 + * """ + * tailB = tail.encode('utf-8') + * headB = head.encode('utf-8') # <<<<<<<<<<<<<< + * edgeLabelB = encode_your_map(edge_label) + * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_headB = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":361 + * tailB = tail.encode('utf-8') + * headB = head.encode('utf-8') + * edgeLabelB = encode_your_map(edge_label) # <<<<<<<<<<<<<< + * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) + * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_edgeLabelB = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":362 + * headB = head.encode('utf-8') + * edgeLabelB = encode_your_map(edge_label) + * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) # <<<<<<<<<<<<<< + * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) + * + */ + __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + try { + __pyx_v_self->c_env->addEdge(__pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7, 1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 362, __pyx_L1_error) + } + + /* "gedlibpy.pyx":363 + * edgeLabelB = encode_your_map(edge_label) + * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) + * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + try { + __pyx_v_self->c_env->addEdge(__pyx_t_4, __pyx_t_6, __pyx_t_5, __pyx_t_7, 1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 363, __pyx_L1_error) + } + + /* "gedlibpy.pyx":343 + * + * + * def add_symmetrical_edge(self, graph_id, tail, head, edge_label) : # <<<<<<<<<<<<<< + * """ + * Adds a symmetrical edge on a graph selected by its ID. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_symmetrical_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tailB); + __Pyx_XDECREF(__pyx_v_headB); + __Pyx_XDECREF(__pyx_v_edgeLabelB); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":366 + * + * + * def clear_graph(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Deletes a graph, selected by its ID, to the environment. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_27clear_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_26clear_graph[] = "\n\t\t\tDeletes a graph, selected by its ID, to the environment.\n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t\n\t\t\t.. note:: Call init() after you're finished your modifications. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_27clear_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("clear_graph (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_26clear_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_26clear_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + __Pyx_RefNannySetupContext("clear_graph", 0); + + /* "gedlibpy.pyx":375 + * .. note:: Call init() after you're finished your modifications. + * """ + * self.c_env.clearGraph(graph_id) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 375, __pyx_L1_error) + try { + __pyx_v_self->c_env->clearGraph(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 375, __pyx_L1_error) + } + + /* "gedlibpy.pyx":366 + * + * + * def clear_graph(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Deletes a graph, selected by its ID, to the environment. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.clear_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":378 + * + * + * def get_graph_internal_id(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the internal Id of a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_29get_graph_internal_id(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_28get_graph_internal_id[] = "\n\t\t\tSearchs and returns the internal Id of a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The internal ID of the selected graph\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso:: get_graph_num_nodes(), get_graph_num_edges(), get_original_node_ids(), get_graph_node_labels(), get_graph_edges(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_29get_graph_internal_id(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_internal_id (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_internal_id", 0); + + /* "gedlibpy.pyx":390 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return self.c_env.getGraphInternalId(graph_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 390, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphInternalId(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 390, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 390, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":378 + * + * + * def get_graph_internal_id(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the internal Id of a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_internal_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":393 + * + * + * def get_graph_num_nodes(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the number of nodes on a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_31get_graph_num_nodes(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_30get_graph_num_nodes[] = "\n\t\t\tSearchs and returns the number of nodes on a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The number of nodes on the selected graph\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso:: get_graph_internal_id(), get_graph_num_edges(), get_original_node_ids(), get_graph_node_labels(), get_graph_edges(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_31get_graph_num_nodes(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_num_nodes (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_num_nodes", 0); + + /* "gedlibpy.pyx":405 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return self.c_env.getGraphNumNodes(graph_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 405, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphNumNodes(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 405, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":393 + * + * + * def get_graph_num_nodes(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the number of nodes on a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_num_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":408 + * + * + * def get_graph_num_edges(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the number of edges on a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_33get_graph_num_edges(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_32get_graph_num_edges[] = "\n\t\t\tSearchs and returns the number of edges on a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The number of edges on the selected graph\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso:: get_graph_internal_id(), get_graph_num_nodes(), get_original_node_ids(), get_graph_node_labels(), get_graph_edges(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_33get_graph_num_edges(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_num_edges (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_num_edges", 0); + + /* "gedlibpy.pyx":420 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return self.c_env.getGraphNumEdges(graph_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 420, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphNumEdges(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 420, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":408 + * + * + * def get_graph_num_edges(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the number of edges on a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_num_edges", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":423 + * + * + * def get_original_node_ids(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all th Ids of nodes on a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_35get_original_node_ids(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_34get_original_node_ids[] = "\n\t\t\tSearchs and returns all th Ids of nodes on a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The list of IDs's nodes on the selected graph\n\t\t\t:rtype: list[string]\n\t\t\t\n\t\t\t.. seealso::get_graph_internal_id(), get_graph_num_nodes(), get_graph_num_edges(), get_graph_node_labels(), get_graph_edges(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_35get_original_node_ids(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_original_node_ids (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + std::string __pyx_8genexpr3__pyx_v_gid; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + std::vector __pyx_t_3; + std::vector ::iterator __pyx_t_4; + std::vector *__pyx_t_5; + std::string __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + __Pyx_RefNannySetupContext("get_original_node_ids", 0); + + /* "gedlibpy.pyx":435 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return [gid.decode('utf-8') for gid in self.c_env.getGraphOriginalNodeIds(graph_id)] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getGraphOriginalNodeIds(__pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 435, __pyx_L1_error) + } + __pyx_t_5 = &__pyx_t_3; + __pyx_t_4 = __pyx_t_5->begin(); + for (;;) { + if (!(__pyx_t_4 != __pyx_t_5->end())) break; + __pyx_t_6 = *__pyx_t_4; + ++__pyx_t_4; + __pyx_8genexpr3__pyx_v_gid = __pyx_t_6; + __pyx_t_7 = __Pyx_decode_cpp_string(__pyx_8genexpr3__pyx_v_gid, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 435, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 435, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } /* exit inner scope */ + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":423 + * + * + * def get_original_node_ids(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all th Ids of nodes on a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_original_node_ids", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":438 + * + * + * def get_graph_node_labels(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all the labels of nodes on a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_37get_graph_node_labels(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_36get_graph_node_labels[] = "\n\t\t\tSearchs and returns all the labels of nodes on a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The list of nodes' labels on the selected graph\n\t\t\t:rtype: list[dict{string : string}]\n\t\t\t\n\t\t\t.. seealso:: get_graph_internal_id(), get_graph_num_nodes(), get_graph_num_edges(), get_original_node_ids(), get_graph_edges(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_37get_graph_node_labels(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_node_labels (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + std::map __pyx_8genexpr4__pyx_v_node_label; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + std::vector > __pyx_t_3; + std::vector > ::iterator __pyx_t_4; + std::vector > *__pyx_t_5; + std::map __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + __Pyx_RefNannySetupContext("get_graph_node_labels", 0); + + /* "gedlibpy.pyx":450 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return [decode_your_map(node_label) for node_label in self.c_env.getGraphNodeLabels(graph_id)] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 450, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getGraphNodeLabels(__pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 450, __pyx_L1_error) + } + __pyx_t_5 = &__pyx_t_3; + __pyx_t_4 = __pyx_t_5->begin(); + for (;;) { + if (!(__pyx_t_4 != __pyx_t_5->end())) break; + __pyx_t_6 = *__pyx_t_4; + ++__pyx_t_4; + __pyx_8genexpr4__pyx_v_node_label = __pyx_t_6; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_8genexpr4__pyx_v_node_label); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } /* exit inner scope */ + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":438 + * + * + * def get_graph_node_labels(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all the labels of nodes on a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_node_labels", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":453 + * + * + * def get_graph_edges(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all the edges on a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_39get_graph_edges(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_38get_graph_edges[] = "\n\t\t\tSearchs and returns all the edges on a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The list of edges on the selected graph\n\t\t\t:rtype: dict{tuple(size_t, size_t) : dict{string : string}}\n\t\t\t\n\t\t\t.. seealso::get_graph_internal_id(), get_graph_num_nodes(), get_graph_num_edges(), get_original_node_ids(), get_graph_node_labels(), get_graph_adjacence_matrix()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_39get_graph_edges(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_edges (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + std::map ,std::map > __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_graph_edges", 0); + + /* "gedlibpy.pyx":465 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return decode_graph_edges(self.c_env.getGraphEdges(graph_id)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_graph_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getGraphEdges(__pyx_t_3); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 465, __pyx_L1_error) + } + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":453 + * + * + * def get_graph_edges(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns all the edges on a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_edges", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":468 + * + * + * def get_graph_adjacence_matrix(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the adjacence list of a graph, selected by its ID. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_41get_graph_adjacence_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix[] = "\n\t\t\tSearchs and returns the adjacence list of a graph, selected by its ID. \n\t\n\t\t\t:param graph_id: The ID of the wanted graph\n\t\t\t:type graph_id: size_t\n\t\t\t:return: The adjacence list of the selected graph\n\t\t\t:rtype: list[list[size_t]]\n\t\t\t\n\t\t\t.. seealso:: get_graph_internal_id(), get_graph_num_nodes(), get_graph_num_edges(), get_original_node_ids(), get_graph_node_labels(), get_graph_edges()\n\t\t\t.. note:: These functions allow to collect all the graph's informations.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_41get_graph_adjacence_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_graph_adjacence_matrix (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_graph_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + std::vector > __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("get_graph_adjacence_matrix", 0); + + /* "gedlibpy.pyx":480 + * .. note:: These functions allow to collect all the graph's informations. + * """ + * return self.c_env.getGraphAdjacenceMatrix(graph_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->getGraphAdjacenceMatrix(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 480, __pyx_L1_error) + } + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 480, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":468 + * + * + * def get_graph_adjacence_matrix(self, graph_id) : # <<<<<<<<<<<<<< + * """ + * Searchs and returns the adjacence list of a graph, selected by its ID. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_graph_adjacence_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":483 + * + * + * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an edit cost function to the environment, if it exists. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_43set_edit_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_42set_edit_cost[] = "\n\t\t\tSets an edit cost function to the environment, if it exists. \n\t\n\t\t\t:param edit_cost: The name of the edit cost function\n\t\t\t:type edit_cost: string\n\t\t\t:param edi_cost_constant: The parameters you will add to the editCost, empty by default\n\t\t\t:type edit_cost_constant: list\n\t\t\t\n\t\t\t.. seealso:: list_of_edit_cost_options\n\t\t\t.. note:: Try to make sure the edit cost function exists with list_of_edit_cost_options, raise an error otherwise. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_43set_edit_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_edit_cost = 0; + PyObject *__pyx_v_edit_cost_constant = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_edit_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edit_cost,&__pyx_n_s_edit_cost_constant,0}; + PyObject* values[2] = {0,0}; + values[1] = __pyx_k__2; + 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_edit_cost)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost_constant); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_edit_cost") < 0)) __PYX_ERR(0, 483, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_edit_cost = values[0]; + __pyx_v_edit_cost_constant = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("set_edit_cost", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 483, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_edit_cost, __pyx_v_edit_cost_constant); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_edit_cost_constant) { + PyObject *__pyx_v_edit_cost_b = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + std::string __pyx_t_6; + std::vector __pyx_t_7; + __Pyx_RefNannySetupContext("set_edit_cost", 0); + + /* "gedlibpy.pyx":495 + * .. note:: Try to make sure the edit cost function exists with list_of_edit_cost_options, raise an error otherwise. + * """ + * if edit_cost in list_of_edit_cost_options: # <<<<<<<<<<<<<< + * edit_cost_b = edit_cost.encode('utf-8') + * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_edit_cost_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_edit_cost, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 495, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (__pyx_t_2 != 0); + if (likely(__pyx_t_3)) { + + /* "gedlibpy.pyx":496 + * """ + * if edit_cost in list_of_edit_cost_options: + * edit_cost_b = edit_cost.encode('utf-8') # <<<<<<<<<<<<<< + * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_edit_cost, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_edit_cost_b = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":497 + * if edit_cost in list_of_edit_cost_options: + * edit_cost_b = edit_cost.encode('utf-8') + * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) # <<<<<<<<<<<<<< + * else: + * raise EditCostError("This edit cost function doesn't exist, please see list_of_edit_cost_options for selecting a edit cost function") + */ + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_edit_cost_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 497, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 497, __pyx_L1_error) + try { + __pyx_v_self->c_env->setEditCost(__pyx_t_6, __pyx_t_7); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 497, __pyx_L1_error) + } + + /* "gedlibpy.pyx":495 + * .. note:: Try to make sure the edit cost function exists with list_of_edit_cost_options, raise an error otherwise. + * """ + * if edit_cost in list_of_edit_cost_options: # <<<<<<<<<<<<<< + * edit_cost_b = edit_cost.encode('utf-8') + * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) + */ + goto __pyx_L3; + } + + /* "gedlibpy.pyx":499 + * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) + * else: + * raise EditCostError("This edit cost function doesn't exist, please see list_of_edit_cost_options for selecting a edit cost function") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EditCostError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_edit_cost_function_doesn_t) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_edit_cost_function_doesn_t); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 499, __pyx_L1_error) + } + __pyx_L3:; + + /* "gedlibpy.pyx":483 + * + * + * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an edit cost function to the environment, if it exists. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_edit_cost_b); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":502 + * + * + * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an personal edit cost function to the environment. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_45set_personal_edit_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_44set_personal_edit_cost[] = "\n\t\t\tSets an personal edit cost function to the environment.\n\t\n\t\t\t:param edit_cost_constant: The parameters you will add to the editCost, empty by default\n\t\t\t:type edit_cost_constant: list\n\t\n\t\t\t.. seealso:: list_of_edit_cost_options, set_edit_cost()\n\t\t\t.. note::You have to modify the C++ function to use it. Please see the documentation to add your Edit Cost function. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_45set_personal_edit_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_edit_cost_constant = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_personal_edit_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edit_cost_constant,0}; + PyObject* values[1] = {0}; + values[0] = __pyx_k__3; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost_constant); + if (value) { values[0] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_personal_edit_cost") < 0)) __PYX_ERR(0, 502, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_edit_cost_constant = values[0]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("set_personal_edit_cost", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 502, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_personal_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_44set_personal_edit_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_edit_cost_constant); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_44set_personal_edit_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edit_cost_constant) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::vector __pyx_t_1; + __Pyx_RefNannySetupContext("set_personal_edit_cost", 0); + + /* "gedlibpy.pyx":512 + * .. note::You have to modify the C++ function to use it. Please see the documentation to add your Edit Cost function. + * """ + * self.c_env.setPersonalEditCost(edit_cost_constant) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L1_error) + try { + __pyx_v_self->c_env->setPersonalEditCost(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 512, __pyx_L1_error) + } + + /* "gedlibpy.pyx":502 + * + * + * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an personal edit cost function to the environment. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_personal_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":515 + * + * + * def init(self, init_option='EAGER_WITHOUT_SHUFFLED_COPIES', print_to_stdout=False) : # <<<<<<<<<<<<<< + * """ + * Initializes the environment with the chosen edit cost function and graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_47init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_46init[] = "\n\t\t\tInitializes the environment with the chosen edit cost function and graphs.\n\t\n\t\t\t:param init_option: The name of the init option, \"EAGER_WITHOUT_SHUFFLED_COPIES\" by default\n\t\t\t:type init_option: string\n\t\t\t\n\t\t\t.. seealso:: list_of_init_options\n\t\t\t.. warning:: No modification were allowed after initialization. Try to make sure your choices is correct. You can though clear or add a graph, but recall init() after that. \n\t\t\t.. note:: Try to make sure the option exists with list_of_init_options or choose no options, raise an error otherwise.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_47init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_init_option = 0; + PyObject *__pyx_v_print_to_stdout = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("init (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_init_option,&__pyx_n_s_print_to_stdout,0}; + PyObject* values[2] = {0,0}; + values[0] = ((PyObject *)__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES); + values[1] = ((PyObject *)Py_False); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 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 (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_option); + if (value) { values[0] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_print_to_stdout); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 515, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_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; + } + } + __pyx_v_init_option = values[0]; + __pyx_v_print_to_stdout = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("init", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 515, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.init", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_46init(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_init_option, __pyx_v_print_to_stdout); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_init_option, PyObject *__pyx_v_print_to_stdout) { + PyObject *__pyx_v_init_option_b = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + std::string __pyx_t_6; + bool __pyx_t_7; + __Pyx_RefNannySetupContext("init", 0); + + /* "gedlibpy.pyx":526 + * .. note:: Try to make sure the option exists with list_of_init_options or choose no options, raise an error otherwise. + * """ + * if init_option in list_of_init_options: # <<<<<<<<<<<<<< + * init_option_b = init_option.encode('utf-8') + * self.c_env.initEnv(init_option_b, print_to_stdout) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_init_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_init_option, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (__pyx_t_2 != 0); + if (likely(__pyx_t_3)) { + + /* "gedlibpy.pyx":527 + * """ + * if init_option in list_of_init_options: + * init_option_b = init_option.encode('utf-8') # <<<<<<<<<<<<<< + * self.c_env.initEnv(init_option_b, print_to_stdout) + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_init_option, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_init_option_b = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":528 + * if init_option in list_of_init_options: + * init_option_b = init_option.encode('utf-8') + * self.c_env.initEnv(init_option_b, print_to_stdout) # <<<<<<<<<<<<<< + * else: + * raise InitError("This init option doesn't exist, please see list_of_init_options for selecting an option. You can choose any options.") + */ + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_init_option_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_print_to_stdout); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error) + try { + __pyx_v_self->c_env->initEnv(__pyx_t_6, __pyx_t_7); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 528, __pyx_L1_error) + } + + /* "gedlibpy.pyx":526 + * .. note:: Try to make sure the option exists with list_of_init_options or choose no options, raise an error otherwise. + * """ + * if init_option in list_of_init_options: # <<<<<<<<<<<<<< + * init_option_b = init_option.encode('utf-8') + * self.c_env.initEnv(init_option_b, print_to_stdout) + */ + goto __pyx_L3; + } + + /* "gedlibpy.pyx":530 + * self.c_env.initEnv(init_option_b, print_to_stdout) + * else: + * raise InitError("This init option doesn't exist, please see list_of_init_options for selecting an option. You can choose any options.") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InitError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_init_option_doesn_t_exist_p) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_init_option_doesn_t_exist_p); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 530, __pyx_L1_error) + } + __pyx_L3:; + + /* "gedlibpy.pyx":515 + * + * + * def init(self, init_option='EAGER_WITHOUT_SHUFFLED_COPIES', print_to_stdout=False) : # <<<<<<<<<<<<<< + * """ + * Initializes the environment with the chosen edit cost function and graphs. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("gedlibpy.GEDEnv.init", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_init_option_b); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":533 + * + * + * def set_method(self, method, options="") : # <<<<<<<<<<<<<< + * """ + * Sets a computation method to the environment, if its exists. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_49set_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_48set_method[] = "\n\t\t\tSets a computation method to the environment, if its exists. \n\t\n\t\t\t:param method: The name of the computation method\n\t\t\t:param options: The options of the method (like bash options), an empty string by default\n\t\t\t:type method: string\n\t\t\t:type options: string\n\t\t\t\n\t\t\t.. seealso:: init_method(), list_of_method_options\n\t\t\t.. note:: Try to make sure the edit cost function exists with list_of_method_options, raise an error otherwise. Call init_method() after your set. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_49set_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_method = 0; + PyObject *__pyx_v_options = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_method (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_options,0}; + PyObject* values[2] = {0,0}; + values[1] = ((PyObject *)__pyx_kp_u_); + 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_method)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_method") < 0)) __PYX_ERR(0, 533, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_method = values[0]; + __pyx_v_options = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("set_method", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 533, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_method", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_48set_method(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_method, __pyx_v_options); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_options) { + PyObject *__pyx_v_method_b = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + std::string __pyx_t_6; + std::string __pyx_t_7; + __Pyx_RefNannySetupContext("set_method", 0); + + /* "gedlibpy.pyx":545 + * .. note:: Try to make sure the edit cost function exists with list_of_method_options, raise an error otherwise. Call init_method() after your set. + * """ + * if method in list_of_method_options: # <<<<<<<<<<<<<< + * method_b = method.encode('utf-8') + * self.c_env.setMethod(method_b, options.encode('utf-8')) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_method_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_method, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 545, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (__pyx_t_2 != 0); + if (likely(__pyx_t_3)) { + + /* "gedlibpy.pyx":546 + * """ + * if method in list_of_method_options: + * method_b = method.encode('utf-8') # <<<<<<<<<<<<<< + * self.c_env.setMethod(method_b, options.encode('utf-8')) + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_method, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 546, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_method_b = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":547 + * if method in list_of_method_options: + * method_b = method.encode('utf-8') + * self.c_env.setMethod(method_b, options.encode('utf-8')) # <<<<<<<<<<<<<< + * else: + * raise MethodError("This method doesn't exist, please see list_of_method_options for selecting a method") + */ + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_method_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_options, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_v_self->c_env->setMethod(__pyx_t_6, __pyx_t_7); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 547, __pyx_L1_error) + } + + /* "gedlibpy.pyx":545 + * .. note:: Try to make sure the edit cost function exists with list_of_method_options, raise an error otherwise. Call init_method() after your set. + * """ + * if method in list_of_method_options: # <<<<<<<<<<<<<< + * method_b = method.encode('utf-8') + * self.c_env.setMethod(method_b, options.encode('utf-8')) + */ + goto __pyx_L3; + } + + /* "gedlibpy.pyx":549 + * self.c_env.setMethod(method_b, options.encode('utf-8')) + * else: + * raise MethodError("This method doesn't exist, please see list_of_method_options for selecting a method") # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MethodError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_method_doesn_t_exist_please) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_method_doesn_t_exist_please); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 549, __pyx_L1_error) + } + __pyx_L3:; + + /* "gedlibpy.pyx":533 + * + * + * def set_method(self, method, options="") : # <<<<<<<<<<<<<< + * """ + * Sets a computation method to the environment, if its exists. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("gedlibpy.GEDEnv.set_method", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_method_b); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":552 + * + * + * def init_method(self) : # <<<<<<<<<<<<<< + * """ + * Inits the environment with the set method. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_51init_method(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_50init_method[] = "\n\t\t\tInits the environment with the set method.\n\t\n\t\t\t.. seealso:: set_method(), list_of_method_options\n\t\t\t.. note:: Call this function after set the method. You can't launch computation or change the method after that. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_51init_method(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("init_method (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_50init_method(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_50init_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("init_method", 0); + + /* "gedlibpy.pyx":559 + * .. note:: Call this function after set the method. You can't launch computation or change the method after that. + * """ + * self.c_env.initMethod() # <<<<<<<<<<<<<< + * + * + */ + try { + __pyx_v_self->c_env->initMethod(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 559, __pyx_L1_error) + } + + /* "gedlibpy.pyx":552 + * + * + * def init_method(self) : # <<<<<<<<<<<<<< + * """ + * Inits the environment with the set method. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.init_method", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":562 + * + * + * def get_init_time(self) : # <<<<<<<<<<<<<< + * """ + * Returns the initialization time. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_53get_init_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_52get_init_time[] = "\n\t\t\tReturns the initialization time.\n\t\n\t\t\t:return: The initialization time\n\t\t\t:rtype: double\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_53get_init_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_init_time (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + double __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_init_time", 0); + + /* "gedlibpy.pyx":569 + * :rtype: double + * """ + * return self.c_env.getInitime() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getInitime(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 569, __pyx_L1_error) + } + __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":562 + * + * + * def get_init_time(self) : # <<<<<<<<<<<<<< + * """ + * Returns the initialization time. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_init_time", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":572 + * + * + * def run_method(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Computes the edit distance between two graphs g and h, with the edit cost function and method computation selected. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_55run_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_54run_method[] = "\n\t\t\tComputes the edit distance between two graphs g and h, with the edit cost function and method computation selected. \n\t\n\t\t\t:param g: The Id of the first graph to compare\n\t\t\t:param h: The Id of the second graph to compare\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t\n\t\t\t.. seealso:: get_upper_bound(), get_lower_bound(), get_forward_map(), get_backward_map(), get_runtime(), quasimetric_cost()\n\t\t\t.. note:: This function only compute the distance between two graphs, without returning a result. Use the differents function to see the result between the two graphs. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_55run_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("run_method (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, 1); __PYX_ERR(0, 572, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "run_method") < 0)) __PYX_ERR(0, 572, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 572, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.run_method", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_54run_method(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_54run_method(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + __Pyx_RefNannySetupContext("run_method", 0); + + /* "gedlibpy.pyx":584 + * .. note:: This function only compute the distance between two graphs, without returning a result. Use the differents function to see the result between the two graphs. + * """ + * self.c_env.runMethod(g, h) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error) + try { + __pyx_v_self->c_env->runMethod(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 584, __pyx_L1_error) + } + + /* "gedlibpy.pyx":572 + * + * + * def run_method(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Computes the edit distance between two graphs g and h, with the edit cost function and method computation selected. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.run_method", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":587 + * + * + * def get_upper_bound(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the upper bound of the edit distance cost between two graphs g and h. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_57get_upper_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_56get_upper_bound[] = "\n\t\t\tReturns the upper bound of the edit distance cost between two graphs g and h. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The upper bound of the edit distance cost\n\t\t\t:rtype: double\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_lower_bound(), get_forward_map(), get_backward_map(), get_runtime(), quasimetric_cost()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: The upper bound is equivalent to the result of the pessimist edit distance cost. Methods are heuristics so the library can't compute the real perfect result because it's NP-Hard problem.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_57get_upper_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_upper_bound (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, 1); __PYX_ERR(0, 587, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_upper_bound") < 0)) __PYX_ERR(0, 587, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 587, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_upper_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_upper_bound", 0); + + /* "gedlibpy.pyx":602 + * .. note:: The upper bound is equivalent to the result of the pessimist edit distance cost. Methods are heuristics so the library can't compute the real perfect result because it's NP-Hard problem. + * """ + * return self.c_env.getUpperBound(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 602, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 602, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getUpperBound(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 602, __pyx_L1_error) + } + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":587 + * + * + * def get_upper_bound(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the upper bound of the edit distance cost between two graphs g and h. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_upper_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":605 + * + * + * def get_lower_bound(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the lower bound of the edit distance cost between two graphs g and h. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_59get_lower_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_58get_lower_bound[] = "\n\t\t\t Returns the lower bound of the edit distance cost between two graphs g and h. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The lower bound of the edit distance cost\n\t\t\t:rtype: double\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_forward_map(), get_backward_map(), get_runtime(), quasimetric_cost()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function can be ignored, because lower bound doesn't have a crucial utility.\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_59get_lower_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_lower_bound (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, 1); __PYX_ERR(0, 605, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_lower_bound") < 0)) __PYX_ERR(0, 605, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 605, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_lower_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_lower_bound", 0); + + /* "gedlibpy.pyx":620 + * .. note:: This function can be ignored, because lower bound doesn't have a crucial utility. + * """ + * return self.c_env.getLowerBound(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 620, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 620, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getLowerBound(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 620, __pyx_L1_error) + } + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 620, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":605 + * + * + * def get_lower_bound(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the lower bound of the edit distance cost between two graphs g and h. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_lower_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":623 + * + * + * def get_forward_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the forward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_61get_forward_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_60get_forward_map[] = "\n\t\t\tReturns the forward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The forward map to the adjacence matrix between nodes of the two graphs\n\t\t\t:rtype: list[npy_uint32]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_lower_bound(), get_backward_map(), get_runtime(), quasimetric_cost(), get_node_map(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_61get_forward_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_forward_map (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, 1); __PYX_ERR(0, 623, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_forward_map") < 0)) __PYX_ERR(0, 623, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 623, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_forward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + std::vector __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_forward_map", 0); + + /* "gedlibpy.pyx":638 + * .. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! + * """ + * return self.c_env.getForwardMap(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 638, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 638, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getForwardMap(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 638, __pyx_L1_error) + } + __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":623 + * + * + * def get_forward_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the forward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_forward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":641 + * + * + * def get_backward_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the backward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_63get_backward_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_62get_backward_map[] = "\n\t\t\tReturns the backward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The backward map to the adjacence matrix between nodes of the two graphs\n\t\t\t:rtype: list[npy_uint32]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_lower_bound(), get_forward_map(), get_runtime(), quasimetric_cost(), get_node_map(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_63get_backward_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_backward_map (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, 1); __PYX_ERR(0, 641, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_backward_map") < 0)) __PYX_ERR(0, 641, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 641, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_backward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + std::vector __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_backward_map", 0); + + /* "gedlibpy.pyx":656 + * .. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! + * """ + * return self.c_env.getBackwardMap(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getBackwardMap(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 656, __pyx_L1_error) + } + __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 656, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":641 + * + * + * def get_backward_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the backward map (or the half of the adjacence matrix) between nodes of the two indicated graphs. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_backward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":659 + * + * + * def get_node_image(self, g, h, node_id) : # <<<<<<<<<<<<<< + * """ + * Returns the node's image in the adjacence matrix, if it exists. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_65get_node_image(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_64get_node_image[] = "\n\t\t\tReturns the node's image in the adjacence matrix, if it exists. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:param node_id: The ID of the node which you want to see the image\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:type node_id: size_t\n\t\t\t:return: The ID of the image node\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_pre_image(), get_node_map(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: Use BackwardMap's Node to find its images ! You can also use get_forward_map() and get_backward_map().\t \n\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_65get_node_image(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_v_node_id = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_image (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,&__pyx_n_s_node_id,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 1); __PYX_ERR(0, 659, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_id)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 2); __PYX_ERR(0, 659, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_image") < 0)) __PYX_ERR(0, 659, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_g = values[0]; + __pyx_v_h = values[1]; + __pyx_v_node_id = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 659, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h, __pyx_v_node_id); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h, PyObject *__pyx_v_node_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("get_node_image", 0); + + /* "gedlibpy.pyx":677 + * + * """ + * return self.c_env.getNodeImage(g, h, node_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getNodeImage(__pyx_t_1, __pyx_t_2, __pyx_t_3); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 677, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":659 + * + * + * def get_node_image(self, g, h, node_id) : # <<<<<<<<<<<<<< + * """ + * Returns the node's image in the adjacence matrix, if it exists. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":680 + * + * + * def get_node_pre_image(self, g, h, node_id) : # <<<<<<<<<<<<<< + * """ + * Returns the node's preimage in the adjacence matrix, if it exists. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_67get_node_pre_image(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_66get_node_pre_image[] = "\n\t\t\tReturns the node's preimage in the adjacence matrix, if it exists. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:param node_id: The ID of the node which you want to see the preimage\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:type node_id: size_t\n\t\t\t:return: The ID of the preimage node\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_map(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: Use ForwardMap's Node to find its images ! You can also use get_forward_map() and get_backward_map().\t \n\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_67get_node_pre_image(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_v_node_id = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_pre_image (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,&__pyx_n_s_node_id,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 1); __PYX_ERR(0, 680, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_id)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 2); __PYX_ERR(0, 680, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_pre_image") < 0)) __PYX_ERR(0, 680, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_g = values[0]; + __pyx_v_h = values[1]; + __pyx_v_node_id = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 680, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_pre_image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h, __pyx_v_node_id); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h, PyObject *__pyx_v_node_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("get_node_pre_image", 0); + + /* "gedlibpy.pyx":698 + * + * """ + * return self.c_env.getNodePreImage(g, h, node_id) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getNodePreImage(__pyx_t_1, __pyx_t_2, __pyx_t_3); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 698, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":680 + * + * + * def get_node_pre_image(self, g, h, node_id) : # <<<<<<<<<<<<<< + * """ + * Returns the node's preimage in the adjacence matrix, if it exists. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_pre_image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":701 + * + * + * def get_induced_cost(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the induced cost between the two indicated graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_69get_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_68get_induced_cost[] = "\n\t\t\tReturns the induced cost between the two indicated graphs.\t\n\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The induced cost between the two indicated graphs\n\t\t\t:rtype: double\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_map(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: Use ForwardMap's Node to find its images ! You can also use get_forward_map() and get_backward_map().\t \n\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_69get_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_induced_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, 1); __PYX_ERR(0, 701, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_induced_cost") < 0)) __PYX_ERR(0, 701, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 701, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_induced_cost", 0); + + /* "gedlibpy.pyx":717 + * + * """ + * return self.c_env.getInducedCost(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 717, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 717, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getInducedCost(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 717, __pyx_L1_error) + } + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 717, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":701 + * + * + * def get_induced_cost(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the induced cost between the two indicated graphs. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":720 + * + * + * def get_node_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the Node Map, like C++ NodeMap. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_70get_node_map[] = "\n\t\t\tReturns the Node Map, like C++ NodeMap. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The Node Map between the two selected graph. \n\t\t\t:rtype: list[tuple(size_t, size_t)]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_pre_image(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function creates datas so use it if necessary, however you can understand how assignement works with this example.\t \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_map (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, 1); __PYX_ERR(0, 720, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_map") < 0)) __PYX_ERR(0, 720, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 720, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_70get_node_map(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_70get_node_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + std::vector > __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_node_map", 0); + + /* "gedlibpy.pyx":735 + * .. note:: This function creates datas so use it if necessary, however you can understand how assignement works with this example. + * """ + * return self.c_env.getNodeMap(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getNodeMap(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 735, __pyx_L1_error) + } + __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 735, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":720 + * + * + * def get_node_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the Node Map, like C++ NodeMap. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":738 + * + * + * def get_assignment_matrix(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the Assignment Matrix between two selected graphs g and h. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_73get_assignment_matrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_72get_assignment_matrix[] = "\n\t\t\tReturns the Assignment Matrix between two selected graphs g and h. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The Assignment Matrix between the two selected graph. \n\t\t\t:rtype: list[list[int]]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_pre_image(), get_node_map()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function creates datas so use it if necessary.\t \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_73get_assignment_matrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_assignment_matrix (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, 1); __PYX_ERR(0, 738, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_assignment_matrix") < 0)) __PYX_ERR(0, 738, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 738, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_assignment_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + std::vector > __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_assignment_matrix", 0); + + /* "gedlibpy.pyx":753 + * .. note:: This function creates datas so use it if necessary. + * """ + * return self.c_env.getAssignmentMatrix(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 753, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 753, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getAssignmentMatrix(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 753, __pyx_L1_error) + } + __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":738 + * + * + * def get_assignment_matrix(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the Assignment Matrix between two selected graphs g and h. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_assignment_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":756 + * + * + * def get_all_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns a vector which contains the forward and the backward maps between nodes of the two indicated graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_75get_all_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_74get_all_map[] = "\n\t\t\tReturns a vector which contains the forward and the backward maps between nodes of the two indicated graphs. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The forward and backward maps to the adjacence matrix between nodes of the two graphs\n\t\t\t:rtype: list[list[npy_uint32]]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_lower_bound(), get_forward_map(), get_backward_map(), get_runtime(), quasimetric_cost()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function duplicates data so please don't use it. I also don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_75get_all_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_all_map (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, 1); __PYX_ERR(0, 756, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_all_map") < 0)) __PYX_ERR(0, 756, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 756, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_all_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + std::vector > __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_all_map", 0); + + /* "gedlibpy.pyx":771 + * .. note:: This function duplicates data so please don't use it. I also don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! + * """ + * return self.c_env.getAllMap(g, h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getAllMap(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 771, __pyx_L1_error) + } + __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":756 + * + * + * def get_all_map(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns a vector which contains the forward and the backward maps between nodes of the two indicated graphs. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_all_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":774 + * + * + * def get_runtime(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the runtime to compute the edit distance cost between two graphs g and h + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_77get_runtime(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_76get_runtime[] = "\n\t\t\tReturns the runtime to compute the edit distance cost between two graphs g and h \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The runtime of the computation of edit distance cost between the two selected graphs\n\t\t\t:rtype: double\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_lower_bound(), get_forward_map(), get_backward_map(), quasimetric_cost()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: Python is a bit longer than C++ due to the functions's encapsulate.\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_77get_runtime(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_h = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_runtime (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_h,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_g)) != 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_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, 1); __PYX_ERR(0, 774, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_runtime") < 0)) __PYX_ERR(0, 774, __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_g = values[0]; + __pyx_v_h = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 774, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_runtime", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_h); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("get_runtime", 0); + + /* "gedlibpy.pyx":789 + * .. note:: Python is a bit longer than C++ due to the functions's encapsulate. + * """ + * return self.c_env.getRuntime(g,h) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->getRuntime(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 789, __pyx_L1_error) + } + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":774 + * + * + * def get_runtime(self, g, h) : # <<<<<<<<<<<<<< + * """ + * Returns the runtime to compute the edit distance cost between two graphs g and h + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_runtime", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":792 + * + * + * def quasimetric_cost(self) : # <<<<<<<<<<<<<< + * """ + * Checks and returns if the edit costs are quasimetric. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_79quasimetric_cost(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_78quasimetric_cost[] = "\n\t\t\tChecks and returns if the edit costs are quasimetric. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: True if it's verified, False otherwise\n\t\t\t:rtype: bool\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_upper_bound(), get_lower_bound(), get_forward_map(), get_backward_map(), get_runtime()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_79quasimetric_cost(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("quasimetric_cost (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + bool __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("quasimetric_cost", 0); + + /* "gedlibpy.pyx":806 + * .. warning:: run_method() between the same two graph must be called before this function. + * """ + * return self.c_env.quasimetricCosts() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->quasimetricCosts(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 806, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":792 + * + * + * def quasimetric_cost(self) : # <<<<<<<<<<<<<< + * """ + * Checks and returns if the edit costs are quasimetric. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.quasimetric_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":809 + * + * + * def hungarian_LSAP(self, matrix_cost) : # <<<<<<<<<<<<<< + * """ + * Applies the hungarian algorithm (LSAP) on a matrix Cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_81hungarian_LSAP(PyObject *__pyx_v_self, PyObject *__pyx_v_matrix_cost); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_80hungarian_LSAP[] = "\n\t\t\tApplies the hungarian algorithm (LSAP) on a matrix Cost. \n\t\n\t\t\t:param matrix_cost: The matrix Cost \n\t\t\t:type matrix_cost: vector[vector[size_t]]\n\t\t\t:return: The values of rho, varrho, u and v, in this order\n\t\t\t:rtype: vector[vector[size_t]]\n\t\t\t\n\t\t\t.. seealso:: hungarian_LSAPE() \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_81hungarian_LSAP(PyObject *__pyx_v_self, PyObject *__pyx_v_matrix_cost) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("hungarian_LSAP (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_matrix_cost)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_matrix_cost) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::vector > __pyx_t_1; + std::vector > __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("hungarian_LSAP", 0); + + /* "gedlibpy.pyx":820 + * .. seealso:: hungarian_LSAPE() + * """ + * return self.c_env.hungarianLSAP(matrix_cost) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 820, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->hungarianLSAP(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 820, __pyx_L1_error) + } + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 820, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":809 + * + * + * def hungarian_LSAP(self, matrix_cost) : # <<<<<<<<<<<<<< + * """ + * Applies the hungarian algorithm (LSAP) on a matrix Cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.hungarian_LSAP", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":823 + * + * + * def hungarian_LSAPE(self, matrix_cost) : # <<<<<<<<<<<<<< + * """ + * Applies the hungarian algorithm (LSAPE) on a matrix Cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_83hungarian_LSAPE(PyObject *__pyx_v_self, PyObject *__pyx_v_matrix_cost); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_82hungarian_LSAPE[] = "\n\t\t\tApplies the hungarian algorithm (LSAPE) on a matrix Cost. \n\t\n\t\t\t:param matrix_cost: The matrix Cost \n\t\t\t:type matrix_cost: vector[vector[double]]\n\t\t\t:return: The values of rho, varrho, u and v, in this order\n\t\t\t:rtype: vector[vector[double]]\n\t\t\t\n\t\t\t.. seealso:: hungarian_LSAP() \n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_83hungarian_LSAPE(PyObject *__pyx_v_self, PyObject *__pyx_v_matrix_cost) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("hungarian_LSAPE (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_matrix_cost)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_matrix_cost) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::vector > __pyx_t_1; + std::vector > __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("hungarian_LSAPE", 0); + + /* "gedlibpy.pyx":834 + * .. seealso:: hungarian_LSAP() + * """ + * return self.c_env.hungarianLSAPE(matrix_cost) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 834, __pyx_L1_error) + try { + __pyx_t_2 = __pyx_v_self->c_env->hungarianLSAPE(__pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 834, __pyx_L1_error) + } + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":823 + * + * + * def hungarian_LSAPE(self, matrix_cost) : # <<<<<<<<<<<<<< + * """ + * Applies the hungarian algorithm (LSAPE) on a matrix Cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.hungarian_LSAPE", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":837 + * + * + * def add_random_graph(self, name, classe, list_of_nodes, list_of_edges, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Add a Graph (not GXL) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_84add_random_graph[] = "\n\t\t\tAdd a Graph (not GXL) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. \n\t\n\t\t\t:param name: The name of the graph to add, can be an empty string\n\t\t\t:param classe: The classe of the graph to add, can be an empty string\n\t\t\t:param list_of_nodes: The list of nodes to add\n\t\t\t:param list_of_edges: The list of edges to add\n\t\t\t:param ignore_duplicates: If True, duplicate edges are ignored, otherwise it's raise an error if an existing edge is added. True by default\n\t\t\t:type name: string\n\t\t\t:type classe: string\n\t\t\t:type list_of_nodes: list[tuple(size_t, dict{string : string})]\n\t\t\t:type list_of_edges: list[tuple(tuple(size_t,size_t), dict{string : string})]\n\t\t\t:type ignore_duplicates: bool\n\t\t\t:return: The ID of the newly added graphe\n\t\t\t:rtype: size_t\n\t\n\t\t\t.. note:: The graph must respect the GXL structure. Please see how a GXL graph is construct. \n\t\t\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_name = 0; + PyObject *__pyx_v_classe = 0; + PyObject *__pyx_v_list_of_nodes = 0; + PyObject *__pyx_v_list_of_edges = 0; + PyObject *__pyx_v_ignore_duplicates = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_random_graph (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_classe,&__pyx_n_s_list_of_nodes,&__pyx_n_s_list_of_edges,&__pyx_n_s_ignore_duplicates,0}; + PyObject* values[5] = {0,0,0,0,0}; + values[4] = ((PyObject *)Py_True); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_name)) != 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_classe)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 1); __PYX_ERR(0, 837, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_list_of_nodes)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 2); __PYX_ERR(0, 837, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_list_of_edges)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 3); __PYX_ERR(0, 837, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ignore_duplicates); + if (value) { values[4] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_random_graph") < 0)) __PYX_ERR(0, 837, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_name = values[0]; + __pyx_v_classe = values[1]; + __pyx_v_list_of_nodes = values[2]; + __pyx_v_list_of_edges = values[3]; + __pyx_v_ignore_duplicates = values[4]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 837, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_random_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_name, __pyx_v_classe, __pyx_v_list_of_nodes, __pyx_v_list_of_edges, __pyx_v_ignore_duplicates); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_classe, PyObject *__pyx_v_list_of_nodes, PyObject *__pyx_v_list_of_edges, PyObject *__pyx_v_ignore_duplicates) { + PyObject *__pyx_v_id = NULL; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_edge = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + __Pyx_RefNannySetupContext("add_random_graph", 0); + + /* "gedlibpy.pyx":857 + * + * """ + * id = self.add_graph(name, classe) # <<<<<<<<<<<<<< + * for node in list_of_nodes: + * self.add_node(id, node[0], node[1]) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_name, __pyx_v_classe}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_name, __pyx_v_classe}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_name); + __Pyx_GIVEREF(__pyx_v_name); + PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_name); + __Pyx_INCREF(__pyx_v_classe); + __Pyx_GIVEREF(__pyx_v_classe); + PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_classe); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":858 + * """ + * id = self.add_graph(name, classe) + * for node in list_of_nodes: # <<<<<<<<<<<<<< + * self.add_node(id, node[0], node[1]) + * for edge in list_of_edges: + */ + if (likely(PyList_CheckExact(__pyx_v_list_of_nodes)) || PyTuple_CheckExact(__pyx_v_list_of_nodes)) { + __pyx_t_1 = __pyx_v_list_of_nodes; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __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, 858, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 858, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 858, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 858, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":859 + * id = self.add_graph(name, classe) + * for node in list_of_nodes: + * self.add_node(id, node[0], node[1]) # <<<<<<<<<<<<<< + * for edge in list_of_edges: + * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_node, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_node, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_id, __pyx_t_3, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_id, __pyx_t_3, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_id); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_t_8); + __pyx_t_3 = 0; + __pyx_t_8 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":858 + * """ + * id = self.add_graph(name, classe) + * for node in list_of_nodes: # <<<<<<<<<<<<<< + * self.add_node(id, node[0], node[1]) + * for edge in list_of_edges: + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":860 + * for node in list_of_nodes: + * self.add_node(id, node[0], node[1]) + * for edge in list_of_edges: # <<<<<<<<<<<<<< + * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) + * return id + */ + if (likely(PyList_CheckExact(__pyx_v_list_of_edges)) || PyTuple_CheckExact(__pyx_v_list_of_edges)) { + __pyx_t_1 = __pyx_v_list_of_edges; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __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, 860, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 860, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 860, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 860, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":861 + * self.add_node(id, node[0], node[1]) + * for edge in list_of_edges: + * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) # <<<<<<<<<<<<<< + * return id + * + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_edge, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_4 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[6] = {__pyx_t_9, __pyx_v_id, __pyx_t_10, __pyx_t_8, __pyx_t_3, __pyx_v_ignore_duplicates}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[6] = {__pyx_t_9, __pyx_v_id, __pyx_t_10, __pyx_t_8, __pyx_t_3, __pyx_v_ignore_duplicates}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_v_id); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_4, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_4, __pyx_t_3); + __Pyx_INCREF(__pyx_v_ignore_duplicates); + __Pyx_GIVEREF(__pyx_v_ignore_duplicates); + PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_4, __pyx_v_ignore_duplicates); + __pyx_t_10 = 0; + __pyx_t_8 = 0; + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":860 + * for node in list_of_nodes: + * self.add_node(id, node[0], node[1]) + * for edge in list_of_edges: # <<<<<<<<<<<<<< + * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) + * return id + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":862 + * for edge in list_of_edges: + * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) + * return id # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_id); + __pyx_r = __pyx_v_id; + goto __pyx_L0; + + /* "gedlibpy.pyx":837 + * + * + * def add_random_graph(self, name, classe, list_of_nodes, list_of_edges, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Add a Graph (not GXL) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_random_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_id); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_edge); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":865 + * + * + * def add_nx_graph(self, g, classe, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Add a Graph (made by networkx) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_86add_nx_graph[] = "\n\t\t\tAdd a Graph (made by networkx) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. \n\t\n\t\t\t:param g: The graph to add (networkx graph)\n\t\t\t:param ignore_duplicates: If True, duplicate edges are ignored, otherwise it's raise an error if an existing edge is added. True by default\n\t\t\t:type g: networkx.graph\n\t\t\t:type ignore_duplicates: bool\n\t\t\t:return: The ID of the newly added graphe\n\t\t\t:rtype: size_t\n\t\n\t\t\t.. note:: The NX graph must respect the GXL structure. Please see how a GXL graph is construct. \n\t\t\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g = 0; + PyObject *__pyx_v_classe = 0; + PyObject *__pyx_v_ignore_duplicates = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_nx_graph (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g,&__pyx_n_s_classe,&__pyx_n_s_ignore_duplicates,0}; + PyObject* values[3] = {0,0,0}; + values[2] = ((PyObject *)Py_True); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_g)) != 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_classe)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, 1); __PYX_ERR(0, 865, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ignore_duplicates); + if (value) { values[2] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_nx_graph") < 0)) __PYX_ERR(0, 865, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_g = values[0]; + __pyx_v_classe = values[1]; + __pyx_v_ignore_duplicates = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 865, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g, __pyx_v_classe, __pyx_v_ignore_duplicates); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_classe, PyObject *__pyx_v_ignore_duplicates) { + PyObject *__pyx_v_id = NULL; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_edge = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + PyObject *(*__pyx_t_8)(PyObject *); + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + __Pyx_RefNannySetupContext("add_nx_graph", 0); + + /* "gedlibpy.pyx":879 + * + * """ + * id = self.add_graph(g.name, classe) # <<<<<<<<<<<<<< + * for node in g.nodes: + * self.add_node(id, str(node), g.nodes[node]) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_classe}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_classe}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_4) { + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3); + __Pyx_INCREF(__pyx_v_classe); + __Pyx_GIVEREF(__pyx_v_classe); + PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_classe); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_id = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":880 + * """ + * id = self.add_graph(g.name, classe) + * for node in g.nodes: # <<<<<<<<<<<<<< + * self.add_node(id, str(node), g.nodes[node]) + * for edge in g.edges: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; + __pyx_t_8 = NULL; + } else { + __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 880, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_8)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_8(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 880, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":881 + * id = self.add_graph(g.name, classe) + * for node in g.nodes: + * self.add_node(id, str(node), g.nodes[node]) # <<<<<<<<<<<<<< + * for edge in g.edges: + * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_node); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_id, __pyx_t_3, __pyx_t_9}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_id, __pyx_t_3, __pyx_t_9}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (__pyx_t_4) { + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL; + } + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_v_id); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_5, __pyx_t_9); + __pyx_t_3 = 0; + __pyx_t_9 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":880 + * """ + * id = self.add_graph(g.name, classe) + * for node in g.nodes: # <<<<<<<<<<<<<< + * self.add_node(id, str(node), g.nodes[node]) + * for edge in g.edges: + */ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":882 + * for node in g.nodes: + * self.add_node(id, str(node), g.nodes[node]) + * for edge in g.edges: # <<<<<<<<<<<<<< + * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) + * return id + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { + __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; + __pyx_t_8 = NULL; + } else { + __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + for (;;) { + if (likely(!__pyx_t_8)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 882, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 882, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_8(__pyx_t_1); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 882, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":883 + * self.add_node(id, str(node), g.nodes[node]) + * for edge in g.edges: + * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) # <<<<<<<<<<<<<< + * return id + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_t_12}; + __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_t_12}; + __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_14 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + if (__pyx_t_13) { + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL; + } + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_5, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_5, __pyx_t_12); + __pyx_t_11 = 0; + __pyx_t_12 = 0; + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_id, __pyx_t_9, __pyx_t_3, __pyx_t_10, __pyx_v_ignore_duplicates}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_id, __pyx_t_9, __pyx_t_3, __pyx_t_10, __pyx_v_ignore_duplicates}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } else + #endif + { + __pyx_t_14 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + if (__pyx_t_4) { + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL; + } + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_5, __pyx_v_id); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_5, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_5, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_5, __pyx_t_10); + __Pyx_INCREF(__pyx_v_ignore_duplicates); + __Pyx_GIVEREF(__pyx_v_ignore_duplicates); + PyTuple_SET_ITEM(__pyx_t_14, 4+__pyx_t_5, __pyx_v_ignore_duplicates); + __pyx_t_9 = 0; + __pyx_t_3 = 0; + __pyx_t_10 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":882 + * for node in g.nodes: + * self.add_node(id, str(node), g.nodes[node]) + * for edge in g.edges: # <<<<<<<<<<<<<< + * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) + * return id + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":884 + * for edge in g.edges: + * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) + * return id # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_id); + __pyx_r = __pyx_v_id; + goto __pyx_L0; + + /* "gedlibpy.pyx":865 + * + * + * def add_nx_graph(self, g, classe, ignore_duplicates=True) : # <<<<<<<<<<<<<< + * """ + * Add a Graph (made by networkx) on the environment. Be careful to respect the same format as GXL graphs for labelling nodes and edges. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("gedlibpy.GEDEnv.add_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_id); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_edge); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":887 + * + * + * def compute_ged_on_two_graphs(self, g1, g2, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * Computes the edit distance between two NX graphs. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs[] = "\n\t\t\tComputes the edit distance between two NX graphs. \n\t\t\t\n\t\t\t:param g1: The first graph to add and compute\n\t\t\t:param g2: The second graph to add and compute\n\t\t\t:param edit_cost: The name of the edit cost function\n\t\t\t:param method: The name of the computation method\n\t\t\t:param options: The options of the method (like bash options), an empty string by default\n\t\t\t:param init_option: The name of the init option, \"EAGER_WITHOUT_SHUFFLED_COPIES\" by default\n\t\t\t:type g1: networksx.graph\n\t\t\t:type g2: networksx.graph\n\t\t\t:type edit_cost: string\n\t\t\t:type method: string\n\t\t\t:type options: string\n\t\t\t:type init_option: string\n\t\t\t:return: The edit distance between the two graphs and the nodeMap between them. \n\t\t\t:rtype: double, list[tuple(size_t, size_t)]\n\t\n\t\t\t.. seealso:: list_of_edit_cost_options, list_of_method_options, list_of_init_options \n\t\t\t.. note:: Make sure each parameter exists with your architecture and these lists : list_of_edit_cost_options, list_of_method_options, list_of_init_options. The structure of graphs must be similar as GXL. \n\t\t\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g1 = 0; + PyObject *__pyx_v_g2 = 0; + PyObject *__pyx_v_edit_cost = 0; + PyObject *__pyx_v_method = 0; + PyObject *__pyx_v_options = 0; + PyObject *__pyx_v_init_option = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_ged_on_two_graphs (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g1,&__pyx_n_s_g2,&__pyx_n_s_edit_cost,&__pyx_n_s_method,&__pyx_n_s_options,&__pyx_n_s_init_option,0}; + PyObject* values[6] = {0,0,0,0,0,0}; + values[5] = ((PyObject *)__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_g1)) != 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_g2)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 1); __PYX_ERR(0, 887, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 2); __PYX_ERR(0, 887, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 3); __PYX_ERR(0, 887, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 4); __PYX_ERR(0, 887, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 5: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_option); + if (value) { values[5] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_ged_on_two_graphs") < 0)) __PYX_ERR(0, 887, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_g1 = values[0]; + __pyx_v_g2 = values[1]; + __pyx_v_edit_cost = values[2]; + __pyx_v_method = values[3]; + __pyx_v_options = values[4]; + __pyx_v_init_option = values[5]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 887, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_ged_on_two_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g1, __pyx_v_g2, __pyx_v_edit_cost, __pyx_v_method, __pyx_v_options, __pyx_v_init_option); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g1, PyObject *__pyx_v_g2, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option) { + PyObject *__pyx_v_g = NULL; + PyObject *__pyx_v_h = NULL; + PyObject *__pyx_v_resDistance = NULL; + PyObject *__pyx_v_resMapping = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("compute_ged_on_two_graphs", 0); + + /* "gedlibpy.pyx":910 + * + * """ + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 910, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_4) { + + /* "gedlibpy.pyx":911 + * """ + * if self.is_initialized() : + * self.restart_env() # <<<<<<<<<<<<<< + * + * g = self.add_nx_graph(g1, "") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 911, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":910 + * + * """ + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + } + + /* "gedlibpy.pyx":913 + * self.restart_env() + * + * g = self.add_nx_graph(g1, "") # <<<<<<<<<<<<<< + * h = self.add_nx_graph(g2, "") + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g1, __pyx_kp_u_}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g1, __pyx_kp_u_}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_g1); + __Pyx_GIVEREF(__pyx_v_g1); + PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_g1); + __Pyx_INCREF(__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_kp_u_); + PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_kp_u_); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_g = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":914 + * + * g = self.add_nx_graph(g1, "") + * h = self.add_nx_graph(g2, "") # <<<<<<<<<<<<<< + * + * self.set_edit_cost(edit_cost) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g2, __pyx_kp_u_}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g2, __pyx_kp_u_}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_INCREF(__pyx_v_g2); + __Pyx_GIVEREF(__pyx_v_g2); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_g2); + __Pyx_INCREF(__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_kp_u_); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_kp_u_); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_h = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":916 + * h = self.add_nx_graph(g2, "") + * + * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< + * self.init(init_option) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 916, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edit_cost); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 916, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":917 + * + * self.set_edit_cost(edit_cost) + * self.init(init_option) # <<<<<<<<<<<<<< + * + * self.set_method(method, options) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_init_option); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":919 + * self.init(init_option) + * + * self.set_method(method, options) # <<<<<<<<<<<<<< + * self.init_method() + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_method); + __Pyx_GIVEREF(__pyx_v_method); + PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_method); + __Pyx_INCREF(__pyx_v_options); + __Pyx_GIVEREF(__pyx_v_options); + PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_options); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":920 + * + * self.set_method(method, options) + * self.init_method() # <<<<<<<<<<<<<< + * + * resDistance = 0 + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 920, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 920, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":922 + * self.init_method() + * + * resDistance = 0 # <<<<<<<<<<<<<< + * resMapping = [] + * self.run_method(g, h) + */ + __Pyx_INCREF(__pyx_int_0); + __pyx_v_resDistance = __pyx_int_0; + + /* "gedlibpy.pyx":923 + * + * resDistance = 0 + * resMapping = [] # <<<<<<<<<<<<<< + * self.run_method(g, h) + * resDistance = self.get_upper_bound(g, h) + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 923, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_resMapping = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":924 + * resDistance = 0 + * resMapping = [] + * self.run_method(g, h) # <<<<<<<<<<<<<< + * resDistance = self.get_upper_bound(g, h) + * resMapping = self.get_node_map(g, h) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 924, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":925 + * resMapping = [] + * self.run_method(g, h) + * resDistance = self.get_upper_bound(g, h) # <<<<<<<<<<<<<< + * resMapping = self.get_node_map(g, h) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 925, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 925, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_resDistance, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":926 + * self.run_method(g, h) + * resDistance = self.get_upper_bound(g, h) + * resMapping = self.get_node_map(g, h) # <<<<<<<<<<<<<< + * + * return resDistance, resMapping + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_resMapping, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":928 + * resMapping = self.get_node_map(g, h) + * + * return resDistance, resMapping # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 928, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_resDistance); + __Pyx_GIVEREF(__pyx_v_resDistance); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_resDistance); + __Pyx_INCREF(__pyx_v_resMapping); + __Pyx_GIVEREF(__pyx_v_resMapping); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_resMapping); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":887 + * + * + * def compute_ged_on_two_graphs(self, g1, g2, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * Computes the edit distance between two NX graphs. + */ + + /* 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_6); + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_ged_on_two_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_g); + __Pyx_XDECREF(__pyx_v_h); + __Pyx_XDECREF(__pyx_v_resDistance); + __Pyx_XDECREF(__pyx_v_resMapping); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":931 + * + * + * def compute_edit_distance_on_nx_graphs(self, dataset, classes, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs[] = "\n\t\n\t\t\tComputes all the edit distance between each NX graphs on the dataset. \n\t\t\t\n\t\t\t:param dataset: The list of graphs to add and compute\n\t\t\t:param classes: The classe of all the graph, can be an empty string\n\t\t\t:param edit_cost: The name of the edit cost function\n\t\t\t:param method: The name of the computation method\n\t\t\t:param options: The options of the method (like bash options), an empty string by default\n\t\t\t:param init_option: The name of the init option, \"EAGER_WITHOUT_SHUFFLED_COPIES\" by default\n\t\t\t:type dataset: list[networksx.graph]\n\t\t\t:type classes: string\n\t\t\t:type edit_cost: string\n\t\t\t:type method: string\n\t\t\t:type options: string\n\t\t\t:type init_option: string\n\t\t\t:return: Two matrix, the first with edit distances between graphs and the second the nodeMap between graphs. The result between g and h is one the [g][h] coordinates.\n\t\t\t:rtype: list[list[double]], list[list[list[tuple(size_t, size_t)]]]\n\t\n\t\t\t.. seealso:: list_of_edit_cost_options, list_of_method_options, list_of_init_options\n\t\t\t.. note:: Make sure each parameter exists with your architecture and these lists : list_of_edit_cost_options, list_of_method_options, list_of_init_options. The structure of graphs must be similar as GXL. \n\t\t\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_dataset = 0; + PyObject *__pyx_v_classes = 0; + PyObject *__pyx_v_edit_cost = 0; + PyObject *__pyx_v_method = 0; + PyObject *__pyx_v_options = 0; + PyObject *__pyx_v_init_option = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_edit_distance_on_nx_graphs (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dataset,&__pyx_n_s_classes,&__pyx_n_s_edit_cost,&__pyx_n_s_method,&__pyx_n_s_options,&__pyx_n_s_init_option,0}; + PyObject* values[6] = {0,0,0,0,0,0}; + values[5] = ((PyObject *)__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_dataset)) != 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_classes)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 1); __PYX_ERR(0, 931, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 2); __PYX_ERR(0, 931, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 3); __PYX_ERR(0, 931, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 4); __PYX_ERR(0, 931, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 5: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_option); + if (value) { values[5] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_nx_graphs") < 0)) __PYX_ERR(0, 931, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_dataset = values[0]; + __pyx_v_classes = values[1]; + __pyx_v_edit_cost = values[2]; + __pyx_v_method = values[3]; + __pyx_v_options = values[4]; + __pyx_v_init_option = values[5]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 931, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_nx_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_dataset, __pyx_v_classes, __pyx_v_edit_cost, __pyx_v_method, __pyx_v_options, __pyx_v_init_option); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_dataset, PyObject *__pyx_v_classes, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option) { + PyObject *__pyx_v_graph = NULL; + PyObject *__pyx_v_listID = NULL; + PyObject *__pyx_v_resDistance = NULL; + PyObject *__pyx_v_resMapping = NULL; + PyObject *__pyx_v_g = NULL; + PyObject *__pyx_v_h = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + Py_ssize_t __pyx_t_10; + PyObject *(*__pyx_t_11)(PyObject *); + PyObject *__pyx_t_12 = NULL; + __Pyx_RefNannySetupContext("compute_edit_distance_on_nx_graphs", 0); + + /* "gedlibpy.pyx":955 + * + * """ + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 955, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_4) { + + /* "gedlibpy.pyx":956 + * """ + * if self.is_initialized() : + * self.restart_env() # <<<<<<<<<<<<<< + * + * print("Loading graphs in progress...") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 956, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 956, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":955 + * + * """ + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + } + + /* "gedlibpy.pyx":958 + * self.restart_env() + * + * print("Loading graphs in progress...") # <<<<<<<<<<<<<< + * for graph in dataset : + * self.add_nx_graph(graph, classes) + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":959 + * + * print("Loading graphs in progress...") + * for graph in dataset : # <<<<<<<<<<<<<< + * self.add_nx_graph(graph, classes) + * listID = self.graph_ids() + */ + if (likely(PyList_CheckExact(__pyx_v_dataset)) || PyTuple_CheckExact(__pyx_v_dataset)) { + __pyx_t_1 = __pyx_v_dataset; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 959, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 959, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 959, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_6(__pyx_t_1); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 959, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_graph, __pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":960 + * print("Loading graphs in progress...") + * for graph in dataset : + * self.add_nx_graph(graph, classes) # <<<<<<<<<<<<<< + * listID = self.graph_ids() + * print("Graphs loaded ! ") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_graph, __pyx_v_classes}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_graph, __pyx_v_classes}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 960, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_graph); + __Pyx_GIVEREF(__pyx_v_graph); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_graph); + __Pyx_INCREF(__pyx_v_classes); + __Pyx_GIVEREF(__pyx_v_classes); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_classes); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":959 + * + * print("Loading graphs in progress...") + * for graph in dataset : # <<<<<<<<<<<<<< + * self.add_nx_graph(graph, classes) + * listID = self.graph_ids() + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":961 + * for graph in dataset : + * self.add_nx_graph(graph, classes) + * listID = self.graph_ids() # <<<<<<<<<<<<<< + * print("Graphs loaded ! ") + * print("Number of graphs = " + str(listID[1])) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_listID = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":962 + * self.add_nx_graph(graph, classes) + * listID = self.graph_ids() + * print("Graphs loaded ! ") # <<<<<<<<<<<<<< + * print("Number of graphs = " + str(listID[1])) + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":963 + * listID = self.graph_ids() + * print("Graphs loaded ! ") + * print("Number of graphs = " + str(listID[1])) # <<<<<<<<<<<<<< + * + * self.set_edit_cost(edit_cost) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":965 + * print("Number of graphs = " + str(listID[1])) + * + * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< + * print("Initialization in progress...") + * self.init(init_option) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_edit_cost); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 965, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":966 + * + * self.set_edit_cost(edit_cost) + * print("Initialization in progress...") # <<<<<<<<<<<<<< + * self.init(init_option) + * print("Initialization terminated !") + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 966, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":967 + * self.set_edit_cost(edit_cost) + * print("Initialization in progress...") + * self.init(init_option) # <<<<<<<<<<<<<< + * print("Initialization terminated !") + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 967, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_init_option); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":968 + * print("Initialization in progress...") + * self.init(init_option) + * print("Initialization terminated !") # <<<<<<<<<<<<<< + * + * self.set_method(method, options) + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":970 + * print("Initialization terminated !") + * + * self.set_method(method, options) # <<<<<<<<<<<<<< + * self.init_method() + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 970, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 970, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_method); + __Pyx_GIVEREF(__pyx_v_method); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_method); + __Pyx_INCREF(__pyx_v_options); + __Pyx_GIVEREF(__pyx_v_options); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_options); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":971 + * + * self.set_method(method, options) + * self.init_method() # <<<<<<<<<<<<<< + * + * resDistance = [[]] + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 971, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":973 + * self.init_method() + * + * resDistance = [[]] # <<<<<<<<<<<<<< + * resMapping = [[]] + * for g in range(listID[0], listID[1]) : + */ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_v_resDistance = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":974 + * + * resDistance = [[]] + * resMapping = [[]] # <<<<<<<<<<<<<< + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_v_resMapping = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":975 + * resDistance = [[]] + * resMapping = [[]] + * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_9 = __pyx_t_1; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_6 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 975, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_9))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_6(__pyx_t_9); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 975, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":976 + * resMapping = [[]] + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") # <<<<<<<<<<<<<< + * for h in range(listID[0], listID[1]) : + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":977 + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g, h) + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_10 = 0; + __pyx_t_11 = NULL; + } else { + __pyx_t_10 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 977, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_11)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 977, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 977, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_11(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 977, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_h, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":979 + * for h in range(listID[0], listID[1]) : + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g, h) # <<<<<<<<<<<<<< + * resDistance[g][h] = self.get_upper_bound(g, h) + * resMapping[g][h] = self.get_node_map(g, h) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":980 + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g, h) + * resDistance[g][h] = self.get_upper_bound(g, h) # <<<<<<<<<<<<<< + * resMapping[g][h] = self.get_node_map(g, h) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_12 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_12) { + __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resDistance, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 980, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":981 + * self.run_method(g, h) + * resDistance[g][h] = self.get_upper_bound(g, h) + * resMapping[g][h] = self.get_node_map(g, h) # <<<<<<<<<<<<<< + * + * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resMapping, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":977 + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g, h) + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":975 + * resDistance = [[]] + * resMapping = [[]] + * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : + */ + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "gedlibpy.pyx":983 + * resMapping[g][h] = self.get_node_map(g, h) + * + * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") # <<<<<<<<<<<<<< + * return resDistance, resMapping + * + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 983, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "gedlibpy.pyx":984 + * + * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") + * return resDistance, resMapping # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 984, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_INCREF(__pyx_v_resDistance); + __Pyx_GIVEREF(__pyx_v_resDistance); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_resDistance); + __Pyx_INCREF(__pyx_v_resMapping); + __Pyx_GIVEREF(__pyx_v_resMapping); + PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_resMapping); + __pyx_r = __pyx_t_9; + __pyx_t_9 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":931 + * + * + * def compute_edit_distance_on_nx_graphs(self, dataset, classes, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_nx_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_graph); + __Pyx_XDECREF(__pyx_v_listID); + __Pyx_XDECREF(__pyx_v_resDistance); + __Pyx_XDECREF(__pyx_v_resMapping); + __Pyx_XDECREF(__pyx_v_g); + __Pyx_XDECREF(__pyx_v_h); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":987 + * + * + * def compute_edit_distance_on_GXl_graphs(self, path_folder, path_XML, edit_cost, method, options="", init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * Computes all the edit distance between each GXL graphs on the folder and the XMl file. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graphs[] = "\n\t\t\tComputes all the edit distance between each GXL graphs on the folder and the XMl file. \n\t\t\t\n\t\t\t:param path_folder: The folder's path which contains GXL graphs\n\t\t\t:param path_XML: The XML's path which indicates which graphes you want to load\n\t\t\t:param edit_cost: The name of the edit cost function\n\t\t\t:param method: The name of the computation method\n\t\t\t:param options: The options of the method (like bash options), an empty string by default\n\t\t\t:param init_option: The name of the init option, \"EAGER_WITHOUT_SHUFFLED_COPIES\" by default\n\t\t\t:type path_folder: string\n\t\t\t:type path_XML: string\n\t\t\t:type edit_cost: string\n\t\t\t:type method: string\n\t\t\t:type options: string\n\t\t\t:type init_option: string\n\t\t\t:return: The list of the first and last-1 ID of graphs\n\t\t\t:rtype: tuple(size_t, size_t)\n\t\n\t\t\t.. seealso:: list_of_edit_cost_options, list_of_method_options, list_of_init_options\n\t\t\t.. note:: Make sure each parameter exists with your architecture and these lists : list_of_edit_cost_options, list_of_method_options, list_of_init_options. \n\t\t\t\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graphs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_path_folder = 0; + PyObject *__pyx_v_path_XML = 0; + PyObject *__pyx_v_edit_cost = 0; + PyObject *__pyx_v_method = 0; + PyObject *__pyx_v_options = 0; + PyObject *__pyx_v_init_option = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_edit_distance_on_GXl_graphs (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path_folder,&__pyx_n_s_path_XML,&__pyx_n_s_edit_cost,&__pyx_n_s_method,&__pyx_n_s_options,&__pyx_n_s_init_option,0}; + PyObject* values[6] = {0,0,0,0,0,0}; + values[4] = ((PyObject *)__pyx_kp_u_); + values[5] = ((PyObject *)__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_path_folder)) != 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_path_XML)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 1); __PYX_ERR(0, 987, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 2); __PYX_ERR(0, 987, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 3); __PYX_ERR(0, 987, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options); + if (value) { values[4] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 5: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_option); + if (value) { values[5] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_GXl_graphs") < 0)) __PYX_ERR(0, 987, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_path_folder = values[0]; + __pyx_v_path_XML = values[1]; + __pyx_v_edit_cost = values[2]; + __pyx_v_method = values[3]; + __pyx_v_options = values[4]; + __pyx_v_init_option = values[5]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 987, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_GXl_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graphs(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_path_folder, __pyx_v_path_XML, __pyx_v_edit_cost, __pyx_v_method, __pyx_v_options, __pyx_v_init_option); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graphs(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_path_folder, PyObject *__pyx_v_path_XML, PyObject *__pyx_v_edit_cost, PyObject *__pyx_v_method, PyObject *__pyx_v_options, PyObject *__pyx_v_init_option) { + PyObject *__pyx_v_listID = NULL; + PyObject *__pyx_v_g = NULL; + PyObject *__pyx_v_h = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + PyObject *(*__pyx_t_8)(PyObject *); + Py_ssize_t __pyx_t_9; + PyObject *(*__pyx_t_10)(PyObject *); + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + __Pyx_RefNannySetupContext("compute_edit_distance_on_GXl_graphs", 0); + + /* "gedlibpy.pyx":1011 + * """ + * + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1011, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_4) { + + /* "gedlibpy.pyx":1012 + * + * if self.is_initialized() : + * self.restart_env() # <<<<<<<<<<<<<< + * + * print("Loading graphs in progress...") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1012, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1011 + * """ + * + * if self.is_initialized() : # <<<<<<<<<<<<<< + * self.restart_env() + * + */ + } + + /* "gedlibpy.pyx":1014 + * self.restart_env() + * + * print("Loading graphs in progress...") # <<<<<<<<<<<<<< + * self.load_GXL_graphs(path_folder, path_XML) + * listID = self.graph_ids() + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1015 + * + * print("Loading graphs in progress...") + * self.load_GXL_graphs(path_folder, path_XML) # <<<<<<<<<<<<<< + * listID = self.graph_ids() + * print("Graphs loaded ! ") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_load_GXL_graphs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1015, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_path_folder, __pyx_v_path_XML}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_path_folder, __pyx_v_path_XML}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1015, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_path_folder); + __Pyx_GIVEREF(__pyx_v_path_folder); + PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_path_folder); + __Pyx_INCREF(__pyx_v_path_XML); + __Pyx_GIVEREF(__pyx_v_path_XML); + PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_path_XML); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1016 + * print("Loading graphs in progress...") + * self.load_GXL_graphs(path_folder, path_XML) + * listID = self.graph_ids() # <<<<<<<<<<<<<< + * print("Graphs loaded ! ") + * print("Number of graphs = " + str(listID[1])) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1016, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1016, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_listID = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1017 + * self.load_GXL_graphs(path_folder, path_XML) + * listID = self.graph_ids() + * print("Graphs loaded ! ") # <<<<<<<<<<<<<< + * print("Number of graphs = " + str(listID[1])) + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1018 + * listID = self.graph_ids() + * print("Graphs loaded ! ") + * print("Number of graphs = " + str(listID[1])) # <<<<<<<<<<<<<< + * + * self.set_edit_cost(edit_cost) + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1020 + * print("Number of graphs = " + str(listID[1])) + * + * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< + * print("Initialization in progress...") + * self.init(init_option) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_edit_cost); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1021 + * + * self.set_edit_cost(edit_cost) + * print("Initialization in progress...") # <<<<<<<<<<<<<< + * self.init(init_option) + * print("Initialization terminated !") + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1022 + * self.set_edit_cost(edit_cost) + * print("Initialization in progress...") + * self.init(init_option) # <<<<<<<<<<<<<< + * print("Initialization terminated !") + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1022, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_init_option); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1022, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1023 + * print("Initialization in progress...") + * self.init(init_option) + * print("Initialization terminated !") # <<<<<<<<<<<<<< + * + * self.set_method(method, options) + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1023, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1025 + * print("Initialization terminated !") + * + * self.set_method(method, options) # <<<<<<<<<<<<<< + * self.init_method() + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_method, __pyx_v_options}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_method, __pyx_v_options}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1025, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_INCREF(__pyx_v_method); + __Pyx_GIVEREF(__pyx_v_method); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_method); + __Pyx_INCREF(__pyx_v_options); + __Pyx_GIVEREF(__pyx_v_options); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_options); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1026 + * + * self.set_method(method, options) + * self.init_method() # <<<<<<<<<<<<<< + * + * #res = [] + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1029 + * + * #res = [] + * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; + __pyx_t_8 = NULL; + } else { + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1029, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_8)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1029, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1029, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_8(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 1029, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1030 + * #res = [] + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") # <<<<<<<<<<<<<< + * for h in range(listID[0], listID[1]) : + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1031 + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g,h) + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0; + __pyx_t_10 = NULL; + } else { + __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1031, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_10)) { + if (likely(PyList_CheckExact(__pyx_t_6))) { + if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1031, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1031, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_10(__pyx_t_6); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 1031, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_h, __pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1033 + * for h in range(listID[0], listID[1]) : + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g,h) # <<<<<<<<<<<<<< + * #res.append((get_upper_bound(g,h), get_node_map(g,h), get_runtime(g,h))) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1033, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_11 = NULL; + __pyx_t_5 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_g, __pyx_v_h}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_12 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1033, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_INCREF(__pyx_v_g); + __Pyx_GIVEREF(__pyx_v_g); + PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_5, __pyx_v_g); + __Pyx_INCREF(__pyx_v_h); + __Pyx_GIVEREF(__pyx_v_h); + PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_5, __pyx_v_h); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1031 + * for g in range(listID[0], listID[1]) : + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * #print("Computation between graph " + str(g) + " and graph " + str(h)) + * self.run_method(g,h) + */ + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "gedlibpy.pyx":1029 + * + * #res = [] + * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< + * print("Computation between graph " + str(g) + " with all the others including himself.") + * for h in range(listID[0], listID[1]) : + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1038 + * #return res + * + * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") # <<<<<<<<<<<<<< + * print ("Please don't restart the environment or recall this function, you will lose your results !") + * return listID + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1038, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1039 + * + * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") + * print ("Please don't restart the environment or recall this function, you will lose your results !") # <<<<<<<<<<<<<< + * return listID + * + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1040 + * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") + * print ("Please don't restart the environment or recall this function, you will lose your results !") + * return listID # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_listID); + __pyx_r = __pyx_v_listID; + goto __pyx_L0; + + /* "gedlibpy.pyx":987 + * + * + * def compute_edit_distance_on_GXl_graphs(self, path_folder, path_XML, edit_cost, method, options="", init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< + * """ + * Computes all the edit distance between each GXL graphs on the folder and the XMl file. + */ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_GXl_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_listID); + __Pyx_XDECREF(__pyx_v_g); + __Pyx_XDECREF(__pyx_v_h); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1043 + * + * + * def get_num_node_labels(self): # <<<<<<<<<<<<<< + * """ + * Returns the number of node labels. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_95get_num_node_labels(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_94get_num_node_labels[] = "\n\t\t\tReturns the number of node labels.\n\t\t\t\n\t\t\t:return: Number of pairwise different node labels contained in the environment.\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. note:: If 1 is returned, the nodes are unlabeled.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_95get_num_node_labels(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_num_node_labels (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_num_node_labels", 0); + + /* "gedlibpy.pyx":1052 + * .. note:: If 1 is returned, the nodes are unlabeled. + * """ + * return self.c_env.getNumNodeLabels() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getNumNodeLabels(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1052, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1052, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1043 + * + * + * def get_num_node_labels(self): # <<<<<<<<<<<<<< + * """ + * Returns the number of node labels. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_num_node_labels", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1055 + * + * + * def get_node_label(self, label_id): # <<<<<<<<<<<<<< + * """ + * Returns node label. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_97get_node_label(PyObject *__pyx_v_self, PyObject *__pyx_v_label_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_96get_node_label[] = "\n\t\t\tReturns node label.\n\t\t\t\n\t\t\t:param label_id: ID of node label that should be returned. Must be between 1 and get_num_node_labels().\n\t\t\t:type label_id: size_t\n\t\t\t:return: Node label for selected label ID.\n\t\t\t:rtype: dict{string : string}\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_97get_node_label(PyObject *__pyx_v_self, PyObject *__pyx_v_label_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_label (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_label_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_label_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + std::map __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_node_label", 0); + + /* "gedlibpy.pyx":1064 + * :rtype: dict{string : string} + * """ + * return decode_your_map(self.c_env.getNodeLabel(label_id)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1064, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1064, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getNodeLabel(__pyx_t_3); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1064, __pyx_L1_error) + } + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1064, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1055 + * + * + * def get_node_label(self, label_id): # <<<<<<<<<<<<<< + * """ + * Returns node label. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_label", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1067 + * + * + * def get_num_edge_labels(self): # <<<<<<<<<<<<<< + * """ + * Returns the number of edge labels. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_99get_num_edge_labels(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_98get_num_edge_labels[] = "\n\t\t\tReturns the number of edge labels.\n\t\t\t\n\t\t\t:return: Number of pairwise different edge labels contained in the environment.\n\t\t\t:rtype: size_t\n\t\t\t\n\t\t\t.. note:: If 1 is returned, the edges are unlabeled.\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_99get_num_edge_labels(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_num_edge_labels (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_num_edge_labels", 0); + + /* "gedlibpy.pyx":1076 + * .. note:: If 1 is returned, the edges are unlabeled. + * """ + * return self.c_env.getNumEdgeLabels() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getNumEdgeLabels(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1076, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1067 + * + * + * def get_num_edge_labels(self): # <<<<<<<<<<<<<< + * """ + * Returns the number of edge labels. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_num_edge_labels", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1079 + * + * + * def get_edge_label(self, label_id): # <<<<<<<<<<<<<< + * """ + * Returns edge label. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_101get_edge_label(PyObject *__pyx_v_self, PyObject *__pyx_v_label_id); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_100get_edge_label[] = "\n\t\t\tReturns edge label.\n\t\t\t\n\t\t\t:param label_id: ID of edge label that should be returned. Must be between 1 and get_num_edge_labels().\n\t\t\t:type label_id: size_t\n\t\t\t:return: Edge label for selected label ID.\n\t\t\t:rtype: dict{string : string}\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_101get_edge_label(PyObject *__pyx_v_self, PyObject *__pyx_v_label_id) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_edge_label (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_label_id)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_label_id) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + std::map __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("get_edge_label", 0); + + /* "gedlibpy.pyx":1088 + * :rtype: dict{string : string} + * """ + * return decode_your_map(self.c_env.getEdgeLabel(label_id)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getEdgeLabel(__pyx_t_3); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1088, __pyx_L1_error) + } + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1079 + * + * + * def get_edge_label(self, label_id): # <<<<<<<<<<<<<< + * """ + * Returns edge label. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_label", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1102 + * # return self.c_env.getNumNodes(graph_id) + * + * def get_avg_num_nodes(self): # <<<<<<<<<<<<<< + * """ + * Returns average number of nodes. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_103get_avg_num_nodes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_102get_avg_num_nodes[] = "\n\t\t\tReturns average number of nodes.\n\t\t\t \n\t\t\t:return: Average number of nodes of the graphs contained in the environment.\n\t\t\t:rtype: double\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_103get_avg_num_nodes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_avg_num_nodes (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + double __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_avg_num_nodes", 0); + + /* "gedlibpy.pyx":1109 + * :rtype: double + * """ + * return self.c_env.getAvgNumNodes() # <<<<<<<<<<<<<< + * + * def get_node_rel_cost(self, node_label_1, node_label_2): + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getAvgNumNodes(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1109, __pyx_L1_error) + } + __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1102 + * # return self.c_env.getNumNodes(graph_id) + * + * def get_avg_num_nodes(self): # <<<<<<<<<<<<<< + * """ + * Returns average number of nodes. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_avg_num_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1111 + * return self.c_env.getAvgNumNodes() + * + * def get_node_rel_cost(self, node_label_1, node_label_2): # <<<<<<<<<<<<<< + * """ + * Returns node relabeling cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_105get_node_rel_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_104get_node_rel_cost[] = "\n\t\t\tReturns node relabeling cost.\n\t\t\t\n\t\t\t:param node_label_1: First node label.\n\t\t\t:param node_label_2: Second node label.\n\t\t\t:type node_label_1: dict{string : string}\n\t\t\t:type node_label_2: dict{string : string}\n\t\t\t:return: Node relabeling cost for the given node labels.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_105get_node_rel_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_node_label_1 = 0; + PyObject *__pyx_v_node_label_2 = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_rel_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_node_label_1,&__pyx_n_s_node_label_2,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_node_label_1)) != 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_node_label_2)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1111, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_rel_cost") < 0)) __PYX_ERR(0, 1111, __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_node_label_1 = values[0]; + __pyx_v_node_label_2 = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1111, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_node_label_1, __pyx_v_node_label_2); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label_1, PyObject *__pyx_v_node_label_2) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + std::map __pyx_t_5; + double __pyx_t_6; + __Pyx_RefNannySetupContext("get_node_rel_cost", 0); + + /* "gedlibpy.pyx":1122 + * :rtype: double + * """ + * return self.c_env.getNodeRelCost(encode_your_map(node_label_1), encode_your_map(node_label_2)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label_1); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label_2) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_6 = __pyx_v_self->c_env->getNodeRelCost(__pyx_t_4, __pyx_t_5); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1122, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1111 + * return self.c_env.getAvgNumNodes() + * + * def get_node_rel_cost(self, node_label_1, node_label_2): # <<<<<<<<<<<<<< + * """ + * Returns node relabeling cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1125 + * + * + * def get_node_del_cost(self, node_label): # <<<<<<<<<<<<<< + * """ + * Returns node deletion cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_107get_node_del_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_node_label); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_106get_node_del_cost[] = "\n\t\t\tReturns node deletion cost.\n\t\t\t\n\t\t\t:param node_label: Node label.\n\t\t\t:type node_label: dict{string : string}\n\t\t\t:return: Cost of deleting node with given label.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_107get_node_del_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_node_label) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_del_cost (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_node_label)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + double __pyx_t_5; + __Pyx_RefNannySetupContext("get_node_del_cost", 0); + + /* "gedlibpy.pyx":1134 + * :rtype: double + * """ + * return self.c_env.getNodeDelCost(encode_your_map(node_label)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_5 = __pyx_v_self->c_env->getNodeDelCost(__pyx_t_4); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1134, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1125 + * + * + * def get_node_del_cost(self, node_label): # <<<<<<<<<<<<<< + * """ + * Returns node deletion cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_del_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1137 + * + * + * def get_node_ins_cost(self, node_label): # <<<<<<<<<<<<<< + * """ + * Returns node insertion cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_109get_node_ins_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_node_label); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_108get_node_ins_cost[] = "\n\t\t\tReturns node insertion cost.\n\t\t\t\n\t\t\t:param node_label: Node label.\n\t\t\t:type node_label: dict{string : string}\n\t\t\t:return: Cost of inserting node with given label.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_109get_node_ins_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_node_label) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_node_ins_cost (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_node_label)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_label) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + double __pyx_t_5; + __Pyx_RefNannySetupContext("get_node_ins_cost", 0); + + /* "gedlibpy.pyx":1146 + * :rtype: double + * """ + * return self.c_env.getNodeInsCost(encode_your_map(node_label)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_5 = __pyx_v_self->c_env->getNodeInsCost(__pyx_t_4); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1146, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1137 + * + * + * def get_node_ins_cost(self, node_label): # <<<<<<<<<<<<<< + * """ + * Returns node insertion cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_ins_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1149 + * + * + * def get_median_node_label(self, node_labels): # <<<<<<<<<<<<<< + * """ + * Computes median node label. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_111get_median_node_label(PyObject *__pyx_v_self, PyObject *__pyx_v_node_labels); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_110get_median_node_label[] = "\n\t\t\tComputes median node label.\n\t\t\t\n\t\t\t:param node_labels: The node labels whose median should be computed.\n\t\t\t:type node_labels: list[dict{string : string}]\n\t\t\t:return: Median of the given node labels.\n\t\t\t:rtype: dict{string : string}\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_111get_median_node_label(PyObject *__pyx_v_self, PyObject *__pyx_v_node_labels) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_median_node_label (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_node_labels)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_labels) { + PyObject *__pyx_v_node_labels_b = NULL; + PyObject *__pyx_8genexpr5__pyx_v_node_label = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + PyObject *(*__pyx_t_4)(PyObject *); + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + std::vector > __pyx_t_8; + std::map __pyx_t_9; + __Pyx_RefNannySetupContext("get_median_node_label", 0); + + /* "gedlibpy.pyx":1158 + * :rtype: dict{string : string} + * """ + * node_labels_b = [encode_your_map(node_label) for node_label in node_labels] # <<<<<<<<<<<<<< + * return decode_your_map(self.c_env.getMedianNodeLabel(node_labels_b)) + * + */ + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + if (likely(PyList_CheckExact(__pyx_v_node_labels)) || PyTuple_CheckExact(__pyx_v_node_labels)) { + __pyx_t_2 = __pyx_v_node_labels; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_4 = NULL; + } else { + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_node_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1158, __pyx_L5_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1158, __pyx_L5_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1158, __pyx_L5_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_4(__pyx_t_2); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 1158, __pyx_L5_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_node_label, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_8genexpr5__pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_8genexpr5__pyx_v_node_label); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); __pyx_8genexpr5__pyx_v_node_label = 0; + goto __pyx_L8_exit_scope; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); __pyx_8genexpr5__pyx_v_node_label = 0; + goto __pyx_L1_error; + __pyx_L8_exit_scope:; + } /* exit inner scope */ + __pyx_v_node_labels_b = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1159 + * """ + * node_labels_b = [encode_your_map(node_label) for node_label in node_labels] + * return decode_your_map(self.c_env.getMedianNodeLabel(node_labels_b)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_v_node_labels_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1159, __pyx_L1_error) + try { + __pyx_t_9 = __pyx_v_self->c_env->getMedianNodeLabel(__pyx_t_8); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1159, __pyx_L1_error) + } + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1149 + * + * + * def get_median_node_label(self, node_labels): # <<<<<<<<<<<<<< + * """ + * Computes median node label. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_median_node_label", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_node_labels_b); + __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1162 + * + * + * def get_edge_rel_cost(self, edge_label_1, edge_label_2): # <<<<<<<<<<<<<< + * """ + * Returns edge relabeling cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_113get_edge_rel_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_112get_edge_rel_cost[] = "\n\t\t\tReturns edge relabeling cost.\n\t\t\t\n\t\t\t:param edge_label_1: First edge label.\n\t\t\t:param edge_label_2: Second edge label.\n\t\t\t:type edge_label_1: dict{string : string}\n\t\t\t:type edge_label_2: dict{string : string}\n\t\t\t:return: Edge relabeling cost for the given edge labels.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_113get_edge_rel_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_edge_label_1 = 0; + PyObject *__pyx_v_edge_label_2 = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_edge_rel_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edge_label_1,&__pyx_n_s_edge_label_2,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_edge_label_1)) != 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_edge_label_2)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1162, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_edge_rel_cost") < 0)) __PYX_ERR(0, 1162, __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_edge_label_1 = values[0]; + __pyx_v_edge_label_2 = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1162, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_edge_label_1, __pyx_v_edge_label_2); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label_1, PyObject *__pyx_v_edge_label_2) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + std::map __pyx_t_5; + double __pyx_t_6; + __Pyx_RefNannySetupContext("get_edge_rel_cost", 0); + + /* "gedlibpy.pyx":1173 + * :rtype: double + * """ + * return self.c_env.getEdgeRelCost(encode_your_map(edge_label_1), encode_your_map(edge_label_2)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label_1); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label_2) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_6 = __pyx_v_self->c_env->getEdgeRelCost(__pyx_t_4, __pyx_t_5); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1173, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1162 + * + * + * def get_edge_rel_cost(self, edge_label_1, edge_label_2): # <<<<<<<<<<<<<< + * """ + * Returns edge relabeling cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1176 + * + * + * def get_edge_del_cost(self, edge_label): # <<<<<<<<<<<<<< + * """ + * Returns edge deletion cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_115get_edge_del_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_label); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_114get_edge_del_cost[] = "\n\t\t\tReturns edge deletion cost.\n\t\t\t\n\t\t\t:param edge_label: Edge label.\n\t\t\t:type edge_label: dict{string : string}\n\t\t\t:return: Cost of deleting edge with given label.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_115get_edge_del_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_label) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_edge_del_cost (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_edge_label)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + double __pyx_t_5; + __Pyx_RefNannySetupContext("get_edge_del_cost", 0); + + /* "gedlibpy.pyx":1185 + * :rtype: double + * """ + * return self.c_env.getEdgeDelCost(encode_your_map(edge_label)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1185, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_5 = __pyx_v_self->c_env->getEdgeDelCost(__pyx_t_4); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1185, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1176 + * + * + * def get_edge_del_cost(self, edge_label): # <<<<<<<<<<<<<< + * """ + * Returns edge deletion cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_del_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1188 + * + * + * def get_edge_ins_cost(self, edge_label): # <<<<<<<<<<<<<< + * """ + * Returns edge insertion cost. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_117get_edge_ins_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_label); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_116get_edge_ins_cost[] = "\n\t\t\tReturns edge insertion cost.\n\t\t\t\n\t\t\t:param edge_label: Edge label.\n\t\t\t:type edge_label: dict{string : string}\n\t\t\t:return: Cost of inserting edge with given label.\n\t\t\t:rtype: double\n\t \t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_117get_edge_ins_cost(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_label) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_edge_ins_cost (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_edge_label)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_label) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::map __pyx_t_4; + double __pyx_t_5; + __Pyx_RefNannySetupContext("get_edge_ins_cost", 0); + + /* "gedlibpy.pyx":1197 + * :rtype: double + * """ + * return self.c_env.getEdgeInsCost(encode_your_map(edge_label)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + try { + __pyx_t_5 = __pyx_v_self->c_env->getEdgeInsCost(__pyx_t_4); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1197, __pyx_L1_error) + } + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1188 + * + * + * def get_edge_ins_cost(self, edge_label): # <<<<<<<<<<<<<< + * """ + * Returns edge insertion cost. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_ins_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1200 + * + * + * def get_median_edge_label(self, edge_labels): # <<<<<<<<<<<<<< + * """ + * Computes median edge label. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_119get_median_edge_label(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_labels); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_118get_median_edge_label[] = "\n\t\t\tComputes median edge label.\n\t\t\t\n\t\t\t:param edge_labels: The edge labels whose median should be computed.\n\t\t\t:type edge_labels: list[dict{string : string}]\n\t\t\t:return: Median of the given edge labels.\n\t\t\t:rtype: dict{string : string}\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_119get_median_edge_label(PyObject *__pyx_v_self, PyObject *__pyx_v_edge_labels) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_median_edge_label (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v_edge_labels)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_labels) { + CYTHON_UNUSED PyObject *__pyx_v_edge_labels_b = NULL; + PyObject *__pyx_8genexpr6__pyx_v_edge_label = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + PyObject *(*__pyx_t_4)(PyObject *); + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + std::vector > __pyx_t_8; + std::map __pyx_t_9; + __Pyx_RefNannySetupContext("get_median_edge_label", 0); + + /* "gedlibpy.pyx":1209 + * :rtype: dict{string : string} + * """ + * edge_labels_b = [encode_your_map(edge_label) for edge_label in edge_labels] # <<<<<<<<<<<<<< + * return decode_your_map(self.c_env.getMedianEdgeLabel(edge_label_b)) + * + */ + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_1); + if (likely(PyList_CheckExact(__pyx_v_edge_labels)) || PyTuple_CheckExact(__pyx_v_edge_labels)) { + __pyx_t_2 = __pyx_v_edge_labels; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_4 = NULL; + } else { + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_edge_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1209, __pyx_L5_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1209, __pyx_L5_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1209, __pyx_L5_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_4(__pyx_t_2); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 1209, __pyx_L5_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_edge_label, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_8genexpr6__pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_8genexpr6__pyx_v_edge_label); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); __pyx_8genexpr6__pyx_v_edge_label = 0; + goto __pyx_L8_exit_scope; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); __pyx_8genexpr6__pyx_v_edge_label = 0; + goto __pyx_L1_error; + __pyx_L8_exit_scope:; + } /* exit inner scope */ + __pyx_v_edge_labels_b = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1210 + * """ + * edge_labels_b = [encode_your_map(edge_label) for edge_label in edge_labels] + * return decode_your_map(self.c_env.getMedianEdgeLabel(edge_label_b)) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_edge_label_b); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + try { + __pyx_t_9 = __pyx_v_self->c_env->getMedianEdgeLabel(__pyx_t_8); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1210, __pyx_L1_error) + } + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1200 + * + * + * def get_median_edge_label(self, edge_labels): # <<<<<<<<<<<<<< + * """ + * Computes median edge label. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_median_edge_label", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_edge_labels_b); + __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1213 + * + * + * def get_nx_graph(self, graph_id, adj_matrix=True, adj_lists=False, edge_list=False): # @todo # <<<<<<<<<<<<<< + * """ + * Get graph with id `graph_id` in the form of the NetworkX Graph. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_121get_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_120get_nx_graph[] = "\n\t\tGet graph with id `graph_id` in the form of the NetworkX Graph.\n\n\t\tParameters\n\t\t----------\n\t\tgraph_id : int\n\t\t\tID of the selected graph.\n\t\t\t\n\t\tadj_matrix : bool\n\t\t\tSet to `True` to construct an adjacency matrix `adj_matrix` and a hash-map `edge_labels`, which has a key for each pair `(i,j)` such that `adj_matrix[i][j]` equals 1. No effect for now.\n\t\t\t\n\t\tadj_lists : bool\n\t\t\tNo effect for now.\n\t\t\t\n\t\tedge_list : bool\n\t\t\tNo effect for now.\n\n\t\tReturns\n\t\t-------\n\t\tNetworkX Graph object\n\t\t\tThe obtained graph.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_121get_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_graph_id = 0; + CYTHON_UNUSED PyObject *__pyx_v_adj_matrix = 0; + CYTHON_UNUSED PyObject *__pyx_v_adj_lists = 0; + CYTHON_UNUSED PyObject *__pyx_v_edge_list = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_nx_graph (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_graph_id,&__pyx_n_s_adj_matrix,&__pyx_n_s_adj_lists,&__pyx_n_s_edge_list,0}; + PyObject* values[4] = {0,0,0,0}; + values[1] = ((PyObject *)Py_True); + values[2] = ((PyObject *)Py_False); + values[3] = ((PyObject *)Py_False); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_graph_id)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_adj_matrix); + if (value) { values[1] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_adj_lists); + if (value) { values[2] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 3: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_list); + if (value) { values[3] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_nx_graph") < 0)) __PYX_ERR(0, 1213, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_graph_id = values[0]; + __pyx_v_adj_matrix = values[1]; + __pyx_v_adj_lists = values[2]; + __pyx_v_edge_list = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_nx_graph", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1213, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_graph_id, __pyx_v_adj_matrix, __pyx_v_adj_lists, __pyx_v_edge_list); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, CYTHON_UNUSED PyObject *__pyx_v_adj_matrix, CYTHON_UNUSED PyObject *__pyx_v_adj_lists, CYTHON_UNUSED PyObject *__pyx_v_edge_list) { + PyObject *__pyx_v_graph = NULL; + PyObject *__pyx_v_nb_nodes = NULL; + PyObject *__pyx_v_original_node_ids = NULL; + PyObject *__pyx_v_node_labels = NULL; + PyObject *__pyx_v_node_id = NULL; + PyObject *__pyx_v_edges = NULL; + PyObject *__pyx_v_head = NULL; + PyObject *__pyx_v_tail = NULL; + PyObject *__pyx_v_labels = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *(*__pyx_t_12)(PyObject *); + __Pyx_RefNannySetupContext("get_nx_graph", 0); + + /* "gedlibpy.pyx":1236 + * The obtained graph. + * """ + * graph = nx.Graph() # <<<<<<<<<<<<<< + * graph.graph['id'] = graph_id + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_graph = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1237 + * """ + * graph = nx.Graph() + * graph.graph['id'] = graph_id # <<<<<<<<<<<<<< + * + * nb_nodes = self.get_graph_num_nodes(graph_id) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_id, __pyx_v_graph_id) < 0)) __PYX_ERR(0, 1237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1239 + * graph.graph['id'] = graph_id + * + * nb_nodes = self.get_graph_num_nodes(graph_id) # <<<<<<<<<<<<<< + * original_node_ids = self.get_original_node_ids(graph_id) + * node_labels = self.get_graph_node_labels(graph_id) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_num_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_nb_nodes = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1240 + * + * nb_nodes = self.get_graph_num_nodes(graph_id) + * original_node_ids = self.get_original_node_ids(graph_id) # <<<<<<<<<<<<<< + * node_labels = self.get_graph_node_labels(graph_id) + * # print(original_node_ids) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_original_node_ids); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_original_node_ids = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1241 + * nb_nodes = self.get_graph_num_nodes(graph_id) + * original_node_ids = self.get_original_node_ids(graph_id) + * node_labels = self.get_graph_node_labels(graph_id) # <<<<<<<<<<<<<< + * # print(original_node_ids) + * # print(node_labels) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_node_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_node_labels = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1244 + * # print(original_node_ids) + * # print(node_labels) + * graph.graph['original_node_ids'] = original_node_ids # <<<<<<<<<<<<<< + * + * for node_id in range(0, nb_nodes): + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_original_node_ids, __pyx_v_original_node_ids) < 0)) __PYX_ERR(0, 1244, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1246 + * graph.graph['original_node_ids'] = original_node_ids + * + * for node_id in range(0, nb_nodes): # <<<<<<<<<<<<<< + * graph.add_node(node_id, **node_labels[node_id]) + * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] + */ + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __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_v_nb_nodes); + __Pyx_GIVEREF(__pyx_v_nb_nodes); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_nb_nodes); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __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_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1246, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_4 >= 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_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1246, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_4 >= 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_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1246, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_5(__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, 1246, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node_id, __pyx_t_3); + __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1247 + * + * for node_id in range(0, nb_nodes): + * graph.add_node(node_id, **node_labels[node_id]) # <<<<<<<<<<<<<< + * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_node_id); + __Pyx_GIVEREF(__pyx_v_node_id); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_node_id); + __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_node_labels, __pyx_v_node_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_t_7 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); + __PYX_ERR(0, 1247, __pyx_L1_error) + } + if (likely(PyDict_CheckExact(__pyx_t_7))) { + __pyx_t_6 = PyDict_Copy(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else { + __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "gedlibpy.pyx":1246 + * graph.graph['original_node_ids'] = original_node_ids + * + * for node_id in range(0, nb_nodes): # <<<<<<<<<<<<<< + * graph.add_node(node_id, **node_labels[node_id]) + * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1250 + * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] + * + * edges = self.get_graph_edges(graph_id) # <<<<<<<<<<<<<< + * for (head, tail), labels in edges.items(): + * graph.add_edge(head, tail, **labels) + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_edges); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_graph_id); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_edges = __pyx_t_1; + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1251 + * + * edges = self.get_graph_edges(graph_id) + * for (head, tail), labels in edges.items(): # <<<<<<<<<<<<<< + * graph.add_edge(head, tail, **labels) + * # print(edges) + */ + __pyx_t_4 = 0; + if (unlikely(__pyx_v_edges == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); + __PYX_ERR(0, 1251, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_edges, 0, __pyx_n_s_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_7; + __pyx_t_7 = 0; + while (1) { + __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_4, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_9); + if (unlikely(__pyx_t_10 == 0)) break; + if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GOTREF(__pyx_t_6); + if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { + PyObject* sequence = __pyx_t_7; + 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, 1251, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_3 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; + index = 0; __pyx_t_2 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_3 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_t_12 = NULL; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L8_unpacking_done; + __pyx_L7_unpacking_failed:; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_12 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_L8_unpacking_done:; + } + __Pyx_XDECREF_SET(__pyx_v_head, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_tail, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_labels, __pyx_t_6); + __pyx_t_6 = 0; + + /* "gedlibpy.pyx":1252 + * edges = self.get_graph_edges(graph_id) + * for (head, tail), labels in edges.items(): + * graph.add_edge(head, tail, **labels) # <<<<<<<<<<<<<< + * # print(edges) + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_INCREF(__pyx_v_head); + __Pyx_GIVEREF(__pyx_v_head); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_head); + __Pyx_INCREF(__pyx_v_tail); + __Pyx_GIVEREF(__pyx_v_tail); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_tail); + if (unlikely(__pyx_v_labels == Py_None)) { + PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); + __PYX_ERR(0, 1252, __pyx_L1_error) + } + if (likely(PyDict_CheckExact(__pyx_v_labels))) { + __pyx_t_3 = PyDict_Copy(__pyx_v_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } else { + __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_labels, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1255 + * # print(edges) + * + * return graph # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_graph); + __pyx_r = __pyx_v_graph; + goto __pyx_L0; + + /* "gedlibpy.pyx":1213 + * + * + * def get_nx_graph(self, graph_id, adj_matrix=True, adj_lists=False, edge_list=False): # @todo # <<<<<<<<<<<<<< + * """ + * Get graph with id `graph_id` in the form of the NetworkX Graph. + */ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_graph); + __Pyx_XDECREF(__pyx_v_nb_nodes); + __Pyx_XDECREF(__pyx_v_original_node_ids); + __Pyx_XDECREF(__pyx_v_node_labels); + __Pyx_XDECREF(__pyx_v_node_id); + __Pyx_XDECREF(__pyx_v_edges); + __Pyx_XDECREF(__pyx_v_head); + __Pyx_XDECREF(__pyx_v_tail); + __Pyx_XDECREF(__pyx_v_labels); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1258 + * + * + * def get_init_type(self): # <<<<<<<<<<<<<< + * """ + * Returns the initialization type of the last initialization in string. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_123get_init_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_122get_init_type[] = "\n\t\tReturns the initialization type of the last initialization in string.\n\n\t\tReturns\n\t\t-------\n\t\tstring\n\t\t\tInitialization type in string.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_123get_init_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_init_type (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::string __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("get_init_type", 0); + + /* "gedlibpy.pyx":1267 + * Initialization type in string. + * """ + * return self.c_env.getInitType().decode('utf-8') # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + try { + __pyx_t_1 = __pyx_v_self->c_env->getInitType(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1267, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_decode_cpp_string(__pyx_t_1, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "gedlibpy.pyx":1258 + * + * + * def get_init_type(self): # <<<<<<<<<<<<<< + * """ + * Returns the initialization type of the last initialization in string. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("gedlibpy.GEDEnv.get_init_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1289 + * + * + * def load_nx_graph(self, nx_graph, graph_id, graph_name='', graph_class=''): # <<<<<<<<<<<<<< + * """ + * Loads NetworkX Graph into the GED environment. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_124load_nx_graph[] = "\n\t\tLoads NetworkX Graph into the GED environment.\n\n\t\tParameters\n\t\t----------\n\t\tnx_graph : NetworkX Graph object\n\t\t\tThe graph that should be loaded.\n\t\t\t\n\t\tgraph_id : int or None\n\t\t\tThe ID of a graph contained the environment (overwrite existing graph) or add new graph if `None`.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tgraph_name : string, optional\n\t\t\tThe name of newly added graph. The default is ''. Has no effect unless `graph_id` equals `None`.\n\t\t\t\n\t\tgraph_class : string, optional\n\t\t\tThe class of newly added graph. The default is ''. Has no effect unless `graph_id` equals `None`.\n\n\t\tReturns\n\t\t-------\n\t\tint\n\t\t\tThe ID of the newly loaded graph.\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_nx_graph = 0; + PyObject *__pyx_v_graph_id = 0; + PyObject *__pyx_v_graph_name = 0; + PyObject *__pyx_v_graph_class = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("load_nx_graph (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nx_graph,&__pyx_n_s_graph_id,&__pyx_n_s_graph_name,&__pyx_n_s_graph_class,0}; + PyObject* values[4] = {0,0,0,0}; + values[2] = ((PyObject *)__pyx_kp_u_); + values[3] = ((PyObject *)__pyx_kp_u_); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + 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_nx_graph)) != 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_graph_id)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, 1); __PYX_ERR(0, 1289, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_graph_name); + if (value) { values[2] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 3: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_graph_class); + if (value) { values[3] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_nx_graph") < 0)) __PYX_ERR(0, 1289, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_nx_graph = values[0]; + __pyx_v_graph_id = values[1]; + __pyx_v_graph_name = values[2]; + __pyx_v_graph_class = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1289, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.load_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_nx_graph, __pyx_v_graph_id, __pyx_v_graph_name, __pyx_v_graph_class); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_nx_graph, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_graph_name, PyObject *__pyx_v_graph_class) { + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_edge = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + 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; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + __Pyx_RefNannySetupContext("load_nx_graph", 0); + __Pyx_INCREF(__pyx_v_graph_id); + + /* "gedlibpy.pyx":1312 + * The ID of the newly loaded graph. + * """ + * if graph_id is None: # <<<<<<<<<<<<<< + * graph_id = self.add_graph(graph_name, graph_class) + * else: + */ + __pyx_t_1 = (__pyx_v_graph_id == Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "gedlibpy.pyx":1313 + * """ + * if graph_id is None: + * graph_id = self.add_graph(graph_name, graph_class) # <<<<<<<<<<<<<< + * else: + * self.clear_graph(graph_id) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_graph_name, __pyx_v_graph_class}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_graph_name, __pyx_v_graph_class}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_INCREF(__pyx_v_graph_name); + __Pyx_GIVEREF(__pyx_v_graph_name); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_graph_name); + __Pyx_INCREF(__pyx_v_graph_class); + __Pyx_GIVEREF(__pyx_v_graph_class); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_graph_class); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_graph_id, __pyx_t_3); + __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1312 + * The ID of the newly loaded graph. + * """ + * if graph_id is None: # <<<<<<<<<<<<<< + * graph_id = self.add_graph(graph_name, graph_class) + * else: + */ + goto __pyx_L3; + } + + /* "gedlibpy.pyx":1315 + * graph_id = self.add_graph(graph_name, graph_class) + * else: + * self.clear_graph(graph_id) # <<<<<<<<<<<<<< + * for node in nx_graph.nodes: + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1315, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_graph_id); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1315, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L3:; + + /* "gedlibpy.pyx":1316 + * else: + * self.clear_graph(graph_id) + * for node in nx_graph.nodes: # <<<<<<<<<<<<<< + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + * for edge in nx_graph.edges: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1316, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + 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, 1316, __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, 1316, __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, 1316, __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, 1316, __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, 1316, __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, 1316, __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, 1316, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_3); + __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1317 + * self.clear_graph(graph_id) + * for node in nx_graph.nodes: + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) # <<<<<<<<<<<<<< + * for edge in nx_graph.edges: + * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_node); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_5, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_5, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_12 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_INCREF(__pyx_v_graph_id); + __Pyx_GIVEREF(__pyx_v_graph_id); + PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_v_graph_id); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, __pyx_t_11); + __pyx_t_5 = 0; + __pyx_t_11 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1316 + * else: + * self.clear_graph(graph_id) + * for node in nx_graph.nodes: # <<<<<<<<<<<<<< + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + * for edge in nx_graph.edges: + */ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1318 + * for node in nx_graph.nodes: + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + * for edge in nx_graph.edges: # <<<<<<<<<<<<<< + * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) + * return graph_id + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { + __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1318, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1318, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1318, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_9(__pyx_t_3); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 1318, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_4); + __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1319 + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + * for edge in nx_graph.edges: + * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) # <<<<<<<<<<<<<< + * return graph_id + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_15 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_15)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_15); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; + __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; + __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } else + #endif + { + __pyx_t_16 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + if (__pyx_t_15) { + __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL; + } + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_6, __pyx_t_13); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_6, __pyx_t_14); + __pyx_t_13 = 0; + __pyx_t_14 = 0; + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_16, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_11, __pyx_t_5, __pyx_t_12}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_11, __pyx_t_5, __pyx_t_12}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_16 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_16); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_INCREF(__pyx_v_graph_id); + __Pyx_GIVEREF(__pyx_v_graph_id); + PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_6, __pyx_v_graph_id); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_6, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_6, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_6, __pyx_t_12); + __pyx_t_11 = 0; + __pyx_t_5 = 0; + __pyx_t_12 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1318 + * for node in nx_graph.nodes: + * self.add_node(graph_id, str(node), nx_graph.nodes[node]) + * for edge in nx_graph.edges: # <<<<<<<<<<<<<< + * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) + * return graph_id + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "gedlibpy.pyx":1320 + * for edge in nx_graph.edges: + * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) + * return graph_id # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_graph_id); + __pyx_r = __pyx_v_graph_id; + goto __pyx_L0; + + /* "gedlibpy.pyx":1289 + * + * + * def load_nx_graph(self, nx_graph, graph_id, graph_name='', graph_class=''): # <<<<<<<<<<<<<< + * """ + * Loads NetworkX Graph into the GED environment. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_AddTraceback("gedlibpy.GEDEnv.load_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_edge); + __Pyx_XDECREF(__pyx_v_graph_id); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1323 + * + * + * def compute_induced_cost(self, g_id, h_id): # <<<<<<<<<<<<<< + * """ + * Computes the edit cost between two graphs induced by a node map. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_6GEDEnv_126compute_induced_cost[] = "\n\t\tComputes the edit cost between two graphs induced by a node map.\n\n\t\tParameters\n\t\t----------\n\t\tg_id : int\n\t\t\tID of input graph.\n\t\th_id : int\n\t\t\tID of input graph.\n\n\t\tReturns\n\t\t-------\n\t\tNone.\n\t\t\n\t\tNotes\n\t\t-----\n\t\tThe induced edit cost of the node map between `g_id` and `h_id` is implictly computed and stored in `GEDEnv::node_maps_`.\n\n\t\t"; +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_g_id = 0; + PyObject *__pyx_v_h_id = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_induced_cost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g_id,&__pyx_n_s_h_id,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_g_id)) != 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_h_id)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 2, 2, 1); __PYX_ERR(0, 1323, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_induced_cost") < 0)) __PYX_ERR(0, 1323, __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_g_id = values[0]; + __pyx_v_h_id = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1323, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g_id, __pyx_v_h_id); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id) { + CYTHON_UNUSED double __pyx_v_cost; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + size_t __pyx_t_2; + __Pyx_RefNannySetupContext("compute_induced_cost", 0); + + /* "gedlibpy.pyx":1344 + * """ + * + * cost = 0.0 # <<<<<<<<<<<<<< + * self.c_env.computeInducedCost(g_id, h_id) + * + */ + __pyx_v_cost = 0.0; + + /* "gedlibpy.pyx":1345 + * + * cost = 0.0 + * self.c_env.computeInducedCost(g_id, h_id) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1345, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1345, __pyx_L1_error) + try { + __pyx_v_self->c_env->computeInducedCost(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1345, __pyx_L1_error) + } + + /* "gedlibpy.pyx":1323 + * + * + * def compute_induced_cost(self, g_id, h_id): # <<<<<<<<<<<<<< + * """ + * Computes the edit cost between two graphs induced by a node map. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_129__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_129__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_128__reduce_cython__(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_128__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("gedlibpy.GEDEnv.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_131__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_131__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_130__setstate_cython__(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_130__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("gedlibpy.GEDEnv.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1375 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_13EditCostError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_13EditCostError___init__[] = "\n\t\t\tInits the error with its message. \n\n\t\t\t:param message: The message to print when the error is detected\n\t\t\t:type message: string\n\t\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_13EditCostError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_13EditCostError_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_13EditCostError___init__}; +static PyObject *__pyx_pw_8gedlibpy_13EditCostError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_message = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_message,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_self)) != 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_message)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1375, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1375, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_message = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1375, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.EditCostError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_13EditCostError___init__(__pyx_self, __pyx_v_self, __pyx_v_message); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_13EditCostError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 0); + + /* "gedlibpy.pyx":1382 + * :type message: string + * """ + * self.message = message # <<<<<<<<<<<<<< + * + * + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1382, __pyx_L1_error) + + /* "gedlibpy.pyx":1375 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.EditCostError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1392 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_11MethodError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_11MethodError___init__[] = "\n\t\t\tInits the error with its message. \n\n\t\t\t:param message: The message to print when the error is detected\n\t\t\t:type message: string\n\t\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_11MethodError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_11MethodError_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_11MethodError___init__}; +static PyObject *__pyx_pw_8gedlibpy_11MethodError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_message = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_message,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_self)) != 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_message)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1392, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1392, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_message = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1392, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.MethodError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_11MethodError___init__(__pyx_self, __pyx_v_self, __pyx_v_message); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_11MethodError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 0); + + /* "gedlibpy.pyx":1399 + * :type message: string + * """ + * self.message = message # <<<<<<<<<<<<<< + * + * + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1399, __pyx_L1_error) + + /* "gedlibpy.pyx":1392 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.MethodError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1409 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_9InitError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_8gedlibpy_9InitError___init__[] = "\n\t\t\tInits the error with its message. \n\n\t\t\t:param message: The message to print when the error is detected\n\t\t\t:type message: string\n\t\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_9InitError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_9InitError_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_9InitError___init__}; +static PyObject *__pyx_pw_8gedlibpy_9InitError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_message = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_message,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_self)) != 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_message)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1409, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1409, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_message = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1409, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gedlibpy.InitError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_8gedlibpy_9InitError___init__(__pyx_self, __pyx_v_self, __pyx_v_message); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_9InitError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 0); + + /* "gedlibpy.pyx":1416 + * :type message: string + * """ + * self.message = message # <<<<<<<<<<<<<< + * + * + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1416, __pyx_L1_error) + + /* "gedlibpy.pyx":1409 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("gedlibpy.InitError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1423 + * ######################################### + * + * def encode_your_map(map_u): # <<<<<<<<<<<<<< + * """ + * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_9encode_your_map(PyObject *__pyx_self, PyObject *__pyx_v_map_u); /*proto*/ +static char __pyx_doc_8gedlibpy_8encode_your_map[] = "\n\t\tEncodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions.\n\n\t\t:param map_b: The map to encode\n\t\t:type map_b: dict{string : string}\n\t\t:return: The encoded map\n\t\t:rtype: dict{'b'string : 'b'string}\n\n\t\t.. note:: This function is used for type connection. \n\t\t\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_9encode_your_map = {"encode_your_map", (PyCFunction)__pyx_pw_8gedlibpy_9encode_your_map, METH_O, __pyx_doc_8gedlibpy_8encode_your_map}; +static PyObject *__pyx_pw_8gedlibpy_9encode_your_map(PyObject *__pyx_self, PyObject *__pyx_v_map_u) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("encode_your_map (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_8encode_your_map(__pyx_self, ((PyObject *)__pyx_v_map_u)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_u) { + PyObject *__pyx_v_res = NULL; + PyObject *__pyx_v_key = NULL; + PyObject *__pyx_v_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + __Pyx_RefNannySetupContext("encode_your_map", 0); + + /* "gedlibpy.pyx":1435 + * + * """ + * res = {} # <<<<<<<<<<<<<< + * for key, value in map_u.items(): + * res[key.encode('utf-8')] = value.encode('utf-8') + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1435, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_res = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1436 + * """ + * res = {} + * for key, value in map_u.items(): # <<<<<<<<<<<<<< + * res[key.encode('utf-8')] = value.encode('utf-8') + * return res + */ + __pyx_t_2 = 0; + if (unlikely(__pyx_v_map_u == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); + __PYX_ERR(0, 1436, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_u, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1436, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + while (1) { + __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); + if (unlikely(__pyx_t_7 == 0)) break; + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1436, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); + __pyx_t_6 = 0; + + /* "gedlibpy.pyx":1437 + * res = {} + * for key, value in map_u.items(): + * res[key.encode('utf-8')] = value.encode('utf-8') # <<<<<<<<<<<<<< + * return res + * + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1437, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1437, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1437, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1438 + * for key, value in map_u.items(): + * res[key.encode('utf-8')] = value.encode('utf-8') + * return res # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_res); + __pyx_r = __pyx_v_res; + goto __pyx_L0; + + /* "gedlibpy.pyx":1423 + * ######################################### + * + * def encode_your_map(map_u): # <<<<<<<<<<<<<< + * """ + * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("gedlibpy.encode_your_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_res); + __Pyx_XDECREF(__pyx_v_key); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1441 + * + * + * def decode_your_map(map_b): # <<<<<<<<<<<<<< + * """ + * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_11decode_your_map(PyObject *__pyx_self, PyObject *__pyx_v_map_b); /*proto*/ +static char __pyx_doc_8gedlibpy_10decode_your_map[] = "\n\t\tDecodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. \n\n\t\t:param map_b: The map to decode\n\t\t:type map_b: dict{'b'string : 'b'string}\n\t\t:return: The decoded map\n\t\t:rtype: dict{string : string}\n\n\t\t.. note:: This function is used for type connection. \n\t\t\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_11decode_your_map = {"decode_your_map", (PyCFunction)__pyx_pw_8gedlibpy_11decode_your_map, METH_O, __pyx_doc_8gedlibpy_10decode_your_map}; +static PyObject *__pyx_pw_8gedlibpy_11decode_your_map(PyObject *__pyx_self, PyObject *__pyx_v_map_b) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decode_your_map (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_10decode_your_map(__pyx_self, ((PyObject *)__pyx_v_map_b)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_b) { + PyObject *__pyx_v_res = NULL; + PyObject *__pyx_v_key = NULL; + PyObject *__pyx_v_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + __Pyx_RefNannySetupContext("decode_your_map", 0); + + /* "gedlibpy.pyx":1453 + * + * """ + * res = {} # <<<<<<<<<<<<<< + * for key, value in map_b.items(): + * res[key.decode('utf-8')] = value.decode('utf-8') + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_res = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1454 + * """ + * res = {} + * for key, value in map_b.items(): # <<<<<<<<<<<<<< + * res[key.decode('utf-8')] = value.decode('utf-8') + * return res + */ + __pyx_t_2 = 0; + if (unlikely(__pyx_v_map_b == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); + __PYX_ERR(0, 1454, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + while (1) { + __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); + if (unlikely(__pyx_t_7 == 0)) break; + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); + __pyx_t_6 = 0; + + /* "gedlibpy.pyx":1455 + * res = {} + * for key, value in map_b.items(): + * res[key.decode('utf-8')] = value.decode('utf-8') # <<<<<<<<<<<<<< + * return res + * + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_u_utf_8); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1455, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1456 + * for key, value in map_b.items(): + * res[key.decode('utf-8')] = value.decode('utf-8') + * return res # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_res); + __pyx_r = __pyx_v_res; + goto __pyx_L0; + + /* "gedlibpy.pyx":1441 + * + * + * def decode_your_map(map_b): # <<<<<<<<<<<<<< + * """ + * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("gedlibpy.decode_your_map", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_res); + __Pyx_XDECREF(__pyx_v_key); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gedlibpy.pyx":1459 + * + * + * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< + * """ + * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_8gedlibpy_13decode_graph_edges(PyObject *__pyx_self, PyObject *__pyx_v_map_edge_b); /*proto*/ +static char __pyx_doc_8gedlibpy_12decode_graph_edges[] = "\n\tDecode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. \n\n\tParameters\n\t----------\n\tmap_edge_b : dict{tuple(size_t, size_t) : dict{'b'string : 'b'string}}\n\t\tThe map to decode.\n\n\tReturns\n\t-------\n\tdict{tuple(size_t, size_t) : dict{string : string}}\n\t\tThe decoded map.\n\t\n\tNotes\n\t-----\n\tThis is a helper function for function `GEDEnv.get_graph_edges()`.\n\t"; +static PyMethodDef __pyx_mdef_8gedlibpy_13decode_graph_edges = {"decode_graph_edges", (PyCFunction)__pyx_pw_8gedlibpy_13decode_graph_edges, METH_O, __pyx_doc_8gedlibpy_12decode_graph_edges}; +static PyObject *__pyx_pw_8gedlibpy_13decode_graph_edges(PyObject *__pyx_self, PyObject *__pyx_v_map_edge_b) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decode_graph_edges (wrapper)", 0); + __pyx_r = __pyx_pf_8gedlibpy_12decode_graph_edges(__pyx_self, ((PyObject *)__pyx_v_map_edge_b)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_map_edge_b) { + PyObject *__pyx_v_map_edges = NULL; + PyObject *__pyx_v_key = NULL; + PyObject *__pyx_v_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("decode_graph_edges", 0); + + /* "gedlibpy.pyx":1477 + * This is a helper function for function `GEDEnv.get_graph_edges()`. + * """ + * map_edges = {} # <<<<<<<<<<<<<< + * for key, value in map_edge_b.items(): + * map_edges[key] = decode_your_map(value) + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_map_edges = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1478 + * """ + * map_edges = {} + * for key, value in map_edge_b.items(): # <<<<<<<<<<<<<< + * map_edges[key] = decode_your_map(value) + * return map_edges + */ + __pyx_t_2 = 0; + if (unlikely(__pyx_v_map_edge_b == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); + __PYX_ERR(0, 1478, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_edge_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1478, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + while (1) { + __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); + if (unlikely(__pyx_t_7 == 0)) break; + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1478, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); + __pyx_t_6 = 0; + + /* "gedlibpy.pyx":1479 + * map_edges = {} + * for key, value in map_edge_b.items(): + * map_edges[key] = decode_your_map(value) # <<<<<<<<<<<<<< + * return map_edges + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1479, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_value); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1479, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(PyDict_SetItem(__pyx_v_map_edges, __pyx_v_key, __pyx_t_6) < 0)) __PYX_ERR(0, 1479, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":1480 + * for key, value in map_edge_b.items(): + * map_edges[key] = decode_your_map(value) + * return map_edges # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_map_edges); + __pyx_r = __pyx_v_map_edges; + goto __pyx_L0; + + /* "gedlibpy.pyx":1459 + * + * + * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< + * """ + * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("gedlibpy.decode_graph_edges", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_map_edges); + __Pyx_XDECREF(__pyx_v_key); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fulfill the PEP. + */ + +/* Python wrapper */ +static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_v_i; + int __pyx_v_ndim; + int __pyx_v_endian_detector; + int __pyx_v_little_endian; + int __pyx_v_t; + char *__pyx_v_f; + PyArray_Descr *__pyx_v_descr = 0; + int __pyx_v_offset; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyArray_Descr *__pyx_t_7; + PyObject *__pyx_t_8 = NULL; + char *__pyx_t_9; + if (__pyx_v_info == NULL) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; + } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 + * + * cdef int i, ndim + * cdef int endian_detector = 1 # <<<<<<<<<<<<<< + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * + */ + __pyx_v_endian_detector = 1; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 + * cdef int i, ndim + * cdef int endian_detector = 1 + * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< + * + * ndim = PyArray_NDIM(self) + */ + __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * + * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + */ + __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + * ndim = PyArray_NDIM(self) + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< + * raise ValueError(u"ndarray is not C contiguous") + * + */ + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + * ndim = PyArray_NDIM(self) + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + if (unlikely(__pyx_t_1)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 272, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + * ndim = PyArray_NDIM(self) + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L7_bool_binop_done; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< + * raise ValueError(u"ndarray is not Fortran contiguous") + * + */ + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L7_bool_binop_done:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + if (unlikely(__pyx_t_1)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< + * + * info.buf = PyArray_DATA(self) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 276, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 + * raise ValueError(u"ndarray is not Fortran contiguous") + * + * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< + * info.ndim = ndim + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 + * + * info.buf = PyArray_DATA(self) + * info.ndim = ndim # <<<<<<<<<<<<<< + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * # Allocate new buffer for strides and shape info. + */ + __pyx_v_info->ndim = __pyx_v_ndim; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + * info.buf = PyArray_DATA(self) + * info.ndim = ndim + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + */ + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< + * info.shape = info.strides + ndim + * for i in range(ndim): + */ + __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 + * # This is allocated as one block, strides first. + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) + * info.shape = info.strides + ndim # <<<<<<<<<<<<<< + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] + */ + __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) + * info.shape = info.strides + ndim + * for i in range(ndim): # <<<<<<<<<<<<<< + * info.strides[i] = PyArray_STRIDES(self)[i] + * info.shape[i] = PyArray_DIMS(self)[i] + */ + __pyx_t_4 = __pyx_v_ndim; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286 + * info.shape = info.strides + ndim + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< + * info.shape[i] = PyArray_DIMS(self)[i] + * else: + */ + (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287 + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] + * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< + * else: + * info.strides = PyArray_STRIDES(self) + */ + (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + * info.buf = PyArray_DATA(self) + * info.ndim = ndim + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + */ + goto __pyx_L9; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289 + * info.shape[i] = PyArray_DIMS(self)[i] + * else: + * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL + */ + /*else*/ { + __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 + * else: + * info.strides = PyArray_STRIDES(self) + * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) + */ + __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); + } + __pyx_L9:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + * info.strides = PyArray_STRIDES(self) + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL # <<<<<<<<<<<<<< + * info.itemsize = PyArray_ITEMSIZE(self) + * info.readonly = not PyArray_ISWRITEABLE(self) + */ + __pyx_v_info->suboffsets = NULL; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< + * info.readonly = not PyArray_ISWRITEABLE(self) + * + */ + __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) + * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< + * + * cdef int t + */ + __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296 + * + * cdef int t + * cdef char* f = NULL # <<<<<<<<<<<<<< + * cdef dtype descr = PyArray_DESCR(self) + * cdef int offset + */ + __pyx_v_f = NULL; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297 + * cdef int t + * cdef char* f = NULL + * cdef dtype descr = PyArray_DESCR(self) # <<<<<<<<<<<<<< + * cdef int offset + * + */ + __pyx_t_7 = PyArray_DESCR(__pyx_v_self); + __pyx_t_3 = ((PyObject *)__pyx_t_7); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300 + * cdef int offset + * + * info.obj = self # <<<<<<<<<<<<<< + * + * if not PyDataType_HASFIELDS(descr): + */ + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + * info.obj = self + * + * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + */ + __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":303 + * + * if not PyDataType_HASFIELDS(descr): + * t = descr.type_num # <<<<<<<<<<<<<< + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + */ + __pyx_t_4 = __pyx_v_descr->type_num; + __pyx_v_t = __pyx_t_4; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + * if not PyDataType_HASFIELDS(descr): + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); + if (!__pyx_t_2) { + goto __pyx_L15_next_or; + } else { + } + __pyx_t_2 = (__pyx_v_little_endian != 0); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L14_bool_binop_done; + } + __pyx_L15_next_or:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305 + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" + */ + __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L14_bool_binop_done; + } + __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L14_bool_binop_done:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + * if not PyDataType_HASFIELDS(descr): + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + if (unlikely(__pyx_t_1)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 306, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + * if not PyDataType_HASFIELDS(descr): + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307 + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" + */ + switch (__pyx_v_t) { + case NPY_BYTE: + __pyx_v_f = ((char *)"b"); + break; + case NPY_UBYTE: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308 + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" + */ + __pyx_v_f = ((char *)"B"); + break; + case NPY_SHORT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309 + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" + */ + __pyx_v_f = ((char *)"h"); + break; + case NPY_USHORT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310 + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" + */ + __pyx_v_f = ((char *)"H"); + break; + case NPY_INT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311 + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" + */ + __pyx_v_f = ((char *)"i"); + break; + case NPY_UINT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":312 + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" + */ + __pyx_v_f = ((char *)"I"); + break; + case NPY_LONG: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":313 + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" + */ + __pyx_v_f = ((char *)"l"); + break; + case NPY_ULONG: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":314 + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" + */ + __pyx_v_f = ((char *)"L"); + break; + case NPY_LONGLONG: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":315 + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" + */ + __pyx_v_f = ((char *)"q"); + break; + case NPY_ULONGLONG: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":316 + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" + */ + __pyx_v_f = ((char *)"Q"); + break; + case NPY_FLOAT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":317 + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" + */ + __pyx_v_f = ((char *)"f"); + break; + case NPY_DOUBLE: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":318 + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" + */ + __pyx_v_f = ((char *)"d"); + break; + case NPY_LONGDOUBLE: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":319 + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" + */ + __pyx_v_f = ((char *)"g"); + break; + case NPY_CFLOAT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":320 + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + */ + __pyx_v_f = ((char *)"Zf"); + break; + case NPY_CDOUBLE: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":321 + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" + */ + __pyx_v_f = ((char *)"Zd"); + break; + case NPY_CLONGDOUBLE: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":322 + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< + * elif t == NPY_OBJECT: f = "O" + * else: + */ + __pyx_v_f = ((char *)"Zg"); + break; + case NPY_OBJECT: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":323 + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + */ + __pyx_v_f = ((char *)"O"); + break; + default: + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":325 + * elif t == NPY_OBJECT: f = "O" + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< + * info.format = f + * return + */ + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 325, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 325, __pyx_L1_error) + break; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":326 + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * info.format = f # <<<<<<<<<<<<<< + * return + * else: + */ + __pyx_v_info->format = __pyx_v_f; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":327 + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * info.format = f + * return # <<<<<<<<<<<<<< + * else: + * info.format = PyObject_Malloc(_buffer_format_string_len) + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + * info.obj = self + * + * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":329 + * return + * else: + * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 + */ + /*else*/ { + __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":330 + * else: + * info.format = PyObject_Malloc(_buffer_format_string_len) + * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< + * offset = 0 + * f = _util_dtypestring(descr, info.format + 1, + */ + (__pyx_v_info->format[0]) = '^'; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":331 + * info.format = PyObject_Malloc(_buffer_format_string_len) + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 # <<<<<<<<<<<<<< + * f = _util_dtypestring(descr, info.format + 1, + * info.format + _buffer_format_string_len, + */ + __pyx_v_offset = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":332 + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 + * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< + * info.format + _buffer_format_string_len, + * &offset) + */ + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error) + __pyx_v_f = __pyx_t_9; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":335 + * info.format + _buffer_format_string_len, + * &offset) + * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + */ + (__pyx_v_f[0]) = '\x00'; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fulfill the PEP. + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_info->obj != NULL) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_descr); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * PyObject_Free(info.format) + */ + +/* Python wrapper */ +static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/ +static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); + __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("__releasebuffer__", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< + * PyObject_Free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":339 + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): + * PyObject_Free(info.format) # <<<<<<<<<<<<<< + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * PyObject_Free(info.strides) + */ + PyObject_Free(__pyx_v_info->format); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< + * PyObject_Free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + * if PyArray_HASFIELDS(self): + * PyObject_Free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * PyObject_Free(info.strides) + * # info.shape was stored after info.strides in the same block + */ + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":341 + * PyObject_Free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * PyObject_Free(info.strides) # <<<<<<<<<<<<<< + * # info.shape was stored after info.strides in the same block + * + */ + PyObject_Free(__pyx_v_info->strides); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + * if PyArray_HASFIELDS(self): + * PyObject_Free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * PyObject_Free(info.strides) + * # info.shape was stored after info.strides in the same block + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * PyObject_Free(info.format) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + * + * cdef inline object PyArray_MultiIterNew1(a): + * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew2(a, b): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 822, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825 + * + * cdef inline object PyArray_MultiIterNew2(a, b): + * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 825, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 828, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 831, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape # <<<<<<<<<<<<<< + * else: + * return () + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); + __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 + * return d.subarray.shape + * else: + * return () # <<<<<<<<<<<<<< + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_empty_tuple); + __pyx_r = __pyx_empty_tuple; + goto __pyx_L0; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + * return () + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< + * # Recursive utility function used in __getbuffer__ to get format + * # string. The new location in the format string is returned. + */ + +static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) { + PyArray_Descr *__pyx_v_child = 0; + int __pyx_v_endian_detector; + int __pyx_v_little_endian; + PyObject *__pyx_v_fields = 0; + PyObject *__pyx_v_childname = NULL; + PyObject *__pyx_v_new_offset = NULL; + PyObject *__pyx_v_t = NULL; + char *__pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + long __pyx_t_8; + char *__pyx_t_9; + __Pyx_RefNannySetupContext("_util_dtypestring", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847 + * + * cdef dtype child + * cdef int endian_detector = 1 # <<<<<<<<<<<<<< + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * cdef tuple fields + */ + __pyx_v_endian_detector = 1; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":848 + * cdef dtype child + * cdef int endian_detector = 1 + * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< + * cdef tuple fields + * + */ + __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + * cdef tuple fields + * + * for childname in descr.names: # <<<<<<<<<<<<<< + * fields = descr.fields[childname] + * child, new_offset = fields + */ + if (unlikely(__pyx_v_descr->names == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 851, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + for (;;) { + if (__pyx_t_2 >= 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_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); + __pyx_t_3 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852 + * + * for childname in descr.names: + * fields = descr.fields[childname] # <<<<<<<<<<<<<< + * child, new_offset = fields + * + */ + if (unlikely(__pyx_v_descr->fields == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 852, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 852, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853 + * for childname in descr.names: + * fields = descr.fields[childname] + * child, new_offset = fields # <<<<<<<<<<<<<< + * + * if (end - f) - (new_offset - offset[0]) < 15: + */ + if (likely(__pyx_v_fields != Py_None)) { + PyObject* sequence = __pyx_v_fields; + 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(2, 853, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 853, __pyx_L1_error) + } + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 853, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); + __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); + __pyx_t_4 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + * child, new_offset = fields + * + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + */ + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 855, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); + if (unlikely(__pyx_t_6)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + * + * if (end - f) - (new_offset - offset[0]) < 15: + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< + * + * if ((child.byteorder == c'>' and little_endian) or + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 856, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + * child, new_offset = fields + * + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0); + if (!__pyx_t_7) { + goto __pyx_L8_next_or; + } else { + } + __pyx_t_7 = (__pyx_v_little_endian != 0); + if (!__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_L8_next_or:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859 + * + * if ((child.byteorder == c'>' and little_endian) or + * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< + * raise ValueError(u"Non-native byte order not supported") + * # One could encode it in the format string and have Cython + */ + __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0); + if (__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_6 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + if (unlikely(__pyx_t_6)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860 + * if ((child.byteorder == c'>' and little_endian) or + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * # One could encode it in the format string and have Cython + * # complain instead, BUT: < and > in format strings also imply + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 860, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":870 + * + * # Output padding bytes + * while offset[0] < new_offset: # <<<<<<<<<<<<<< + * f[0] = 120 # "x"; pad byte + * f += 1 + */ + while (1) { + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 870, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 870, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 870, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_6) break; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":871 + * # Output padding bytes + * while offset[0] < new_offset: + * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< + * f += 1 + * offset[0] += 1 + */ + (__pyx_v_f[0]) = 0x78; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":872 + * while offset[0] < new_offset: + * f[0] = 120 # "x"; pad byte + * f += 1 # <<<<<<<<<<<<<< + * offset[0] += 1 + * + */ + __pyx_v_f = (__pyx_v_f + 1); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873 + * f[0] = 120 # "x"; pad byte + * f += 1 + * offset[0] += 1 # <<<<<<<<<<<<<< + * + * offset[0] += child.itemsize + */ + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":875 + * offset[0] += 1 + * + * offset[0] += child.itemsize # <<<<<<<<<<<<<< + * + * if not PyDataType_HASFIELDS(child): + */ + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + * offset[0] += child.itemsize + * + * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< + * t = child.type_num + * if end - f < 5: + */ + __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); + if (__pyx_t_6) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":878 + * + * if not PyDataType_HASFIELDS(child): + * t = child.type_num # <<<<<<<<<<<<<< + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") + */ + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); + __pyx_t_4 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + * if not PyDataType_HASFIELDS(child): + * t = child.type_num + * if end - f < 5: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short.") + * + */ + __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); + if (unlikely(__pyx_t_6)) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + * t = child.type_num + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< + * + * # Until ticket #99 is fixed, use integers to avoid warnings + */ + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(2, 880, __pyx_L1_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + * if not PyDataType_HASFIELDS(child): + * t = child.type_num + * if end - f < 5: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short.") + * + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":883 + * + * # Until ticket #99 is fixed, use integers to avoid warnings + * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 883, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 883, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 98; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":884 + * # Until ticket #99 is fixed, use integers to avoid warnings + * if t == NPY_BYTE: f[0] = 98 #"b" + * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 884, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 884, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 884, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 66; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":885 + * if t == NPY_BYTE: f[0] = 98 #"b" + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 885, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 885, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x68; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":886 + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 886, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 886, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 72; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":887 + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 887, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 887, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x69; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":888 + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 888, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 888, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 888, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 73; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":889 + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 889, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 889, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 889, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x6C; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":890 + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 890, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 890, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 76; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":891 + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 891, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 891, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 891, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x71; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":892 + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 892, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 892, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 81; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":893 + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 893, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 893, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 893, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x66; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":894 + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 894, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 894, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 894, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x64; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":895 + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 895, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 895, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x67; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":896 + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 896, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 896, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 896, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x66; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":897 + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + * elif t == NPY_OBJECT: f[0] = 79 #"O" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 897, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 897, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x64; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":898 + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< + * elif t == NPY_OBJECT: f[0] = 79 #"O" + * else: + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 898, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 898, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 898, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x67; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":899 + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 899, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 899, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (likely(__pyx_t_6)) { + (__pyx_v_f[0]) = 79; + goto __pyx_L15; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":901 + * elif t == NPY_OBJECT: f[0] = 79 #"O" + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< + * f += 1 + * else: + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(2, 901, __pyx_L1_error) + } + __pyx_L15:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":902 + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * f += 1 # <<<<<<<<<<<<<< + * else: + * # Cython ignores struct boundary information ("T{...}"), + */ + __pyx_v_f = (__pyx_v_f + 1); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + * offset[0] += child.itemsize + * + * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< + * t = child.type_num + * if end - f < 5: + */ + goto __pyx_L13; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":906 + * # Cython ignores struct boundary information ("T{...}"), + * # so don't output it + * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< + * return f + * + */ + /*else*/ { + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 906, __pyx_L1_error) + __pyx_v_f = __pyx_t_9; + } + __pyx_L13:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + * cdef tuple fields + * + * for childname in descr.names: # <<<<<<<<<<<<<< + * fields = descr.fields[childname] + * child, new_offset = fields + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":907 + * # so don't output it + * f = _util_dtypestring(child, f, end, offset) + * return f # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_f; + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + * return () + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< + * # Recursive utility function used in __getbuffer__ to get format + * # string. The new location in the format string is returned. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_child); + __Pyx_XDECREF(__pyx_v_fields); + __Pyx_XDECREF(__pyx_v_childname); + __Pyx_XDECREF(__pyx_v_new_offset); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + +static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_array_base", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023 + * + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< + * PyArray_SetBaseObject(arr, base) + * + */ + Py_INCREF(__pyx_v_base); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024 + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< + * + * cdef inline object get_array_base(ndarray arr): + */ + (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { + PyObject *__pyx_v_base; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("get_array_base", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1027 + * + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< + * if base is NULL: + * return None + */ + __pyx_v_base = PyArray_BASE(__pyx_v_arr); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + __pyx_t_1 = ((__pyx_v_base == NULL) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1029 + * base = PyArray_BASE(arr) + * if base is NULL: + * return None # <<<<<<<<<<<<<< + * return base + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1030 + * if base is NULL: + * return None + * return base # <<<<<<<<<<<<<< + * + * # Versions of the import_* functions which are more suitable for + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_base)); + __pyx_r = ((PyObject *)__pyx_v_base); + goto __pyx_L0; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * _import_array() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_array", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1036 + * cdef inline int import_array() except -1: + * try: + * _import_array() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") + */ + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1037 + * try: + * _import_array() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.multiarray failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + * _import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 1038, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * _import_array() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_umath", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1042 + * cdef inline int import_umath() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1043 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1043, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1044, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 1044, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_ufunc", 0); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1048 + * cdef inline int import_ufunc() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error) + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1049 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1049, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1050 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 1050, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":93 + * __data_union data + * + * def __getbuffer__(self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fulfill the PEP. + */ + +/* Python wrapper */ +static CYTHON_UNUSED int __pyx_pw_7cpython_5array_5array_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static CYTHON_UNUSED int __pyx_pw_7cpython_5array_5array_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_r = __pyx_pf_7cpython_5array_5array___getbuffer__(((arrayobject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info, CYTHON_UNUSED int __pyx_v_flags) { + PyObject *__pyx_v_item_count = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char *__pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + char __pyx_t_7; + if (__pyx_v_info == NULL) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; + } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + + /* "array.pxd":98 + * # In particular strided access is always provided regardless + * # of flags + * item_count = Py_SIZE(self) # <<<<<<<<<<<<<< + * + * info.suboffsets = NULL + */ + __pyx_t_1 = PyInt_FromSsize_t(Py_SIZE(((PyObject *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_item_count = __pyx_t_1; + __pyx_t_1 = 0; + + /* "array.pxd":100 + * item_count = Py_SIZE(self) + * + * info.suboffsets = NULL # <<<<<<<<<<<<<< + * info.buf = self.data.as_chars + * info.readonly = 0 + */ + __pyx_v_info->suboffsets = NULL; + + /* "array.pxd":101 + * + * info.suboffsets = NULL + * info.buf = self.data.as_chars # <<<<<<<<<<<<<< + * info.readonly = 0 + * info.ndim = 1 + */ + __pyx_t_2 = __pyx_v_self->data.as_chars; + __pyx_v_info->buf = __pyx_t_2; + + /* "array.pxd":102 + * info.suboffsets = NULL + * info.buf = self.data.as_chars + * info.readonly = 0 # <<<<<<<<<<<<<< + * info.ndim = 1 + * info.itemsize = self.ob_descr.itemsize # e.g. sizeof(float) + */ + __pyx_v_info->readonly = 0; + + /* "array.pxd":103 + * info.buf = self.data.as_chars + * info.readonly = 0 + * info.ndim = 1 # <<<<<<<<<<<<<< + * info.itemsize = self.ob_descr.itemsize # e.g. sizeof(float) + * info.len = info.itemsize * item_count + */ + __pyx_v_info->ndim = 1; + + /* "array.pxd":104 + * info.readonly = 0 + * info.ndim = 1 + * info.itemsize = self.ob_descr.itemsize # e.g. sizeof(float) # <<<<<<<<<<<<<< + * info.len = info.itemsize * item_count + * + */ + __pyx_t_3 = __pyx_v_self->ob_descr->itemsize; + __pyx_v_info->itemsize = __pyx_t_3; + + /* "array.pxd":105 + * info.ndim = 1 + * info.itemsize = self.ob_descr.itemsize # e.g. sizeof(float) + * info.len = info.itemsize * item_count # <<<<<<<<<<<<<< + * + * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) + */ + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_info->itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_v_item_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 105, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_info->len = __pyx_t_5; + + /* "array.pxd":107 + * info.len = info.itemsize * item_count + * + * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) # <<<<<<<<<<<<<< + * if not info.shape: + * raise MemoryError() + */ + __pyx_v_info->shape = ((Py_ssize_t *)PyObject_Malloc(((sizeof(Py_ssize_t)) + 2))); + + /* "array.pxd":108 + * + * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) + * if not info.shape: # <<<<<<<<<<<<<< + * raise MemoryError() + * info.shape[0] = item_count # constant regardless of resizing + */ + __pyx_t_6 = ((!(__pyx_v_info->shape != 0)) != 0); + if (unlikely(__pyx_t_6)) { + + /* "array.pxd":109 + * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) + * if not info.shape: + * raise MemoryError() # <<<<<<<<<<<<<< + * info.shape[0] = item_count # constant regardless of resizing + * info.strides = &info.itemsize + */ + PyErr_NoMemory(); __PYX_ERR(3, 109, __pyx_L1_error) + + /* "array.pxd":108 + * + * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) + * if not info.shape: # <<<<<<<<<<<<<< + * raise MemoryError() + * info.shape[0] = item_count # constant regardless of resizing + */ + } + + /* "array.pxd":110 + * if not info.shape: + * raise MemoryError() + * info.shape[0] = item_count # constant regardless of resizing # <<<<<<<<<<<<<< + * info.strides = &info.itemsize + * + */ + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_item_count); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 110, __pyx_L1_error) + (__pyx_v_info->shape[0]) = __pyx_t_5; + + /* "array.pxd":111 + * raise MemoryError() + * info.shape[0] = item_count # constant regardless of resizing + * info.strides = &info.itemsize # <<<<<<<<<<<<<< + * + * info.format = (info.shape + 1) + */ + __pyx_v_info->strides = (&__pyx_v_info->itemsize); + + /* "array.pxd":113 + * info.strides = &info.itemsize + * + * info.format = (info.shape + 1) # <<<<<<<<<<<<<< + * info.format[0] = self.ob_descr.typecode + * info.format[1] = 0 + */ + __pyx_v_info->format = ((char *)(__pyx_v_info->shape + 1)); + + /* "array.pxd":114 + * + * info.format = (info.shape + 1) + * info.format[0] = self.ob_descr.typecode # <<<<<<<<<<<<<< + * info.format[1] = 0 + * info.obj = self + */ + __pyx_t_7 = __pyx_v_self->ob_descr->typecode; + (__pyx_v_info->format[0]) = __pyx_t_7; + + /* "array.pxd":115 + * info.format = (info.shape + 1) + * info.format[0] = self.ob_descr.typecode + * info.format[1] = 0 # <<<<<<<<<<<<<< + * info.obj = self + * + */ + (__pyx_v_info->format[1]) = 0; + + /* "array.pxd":116 + * info.format[0] = self.ob_descr.typecode + * info.format[1] = 0 + * info.obj = self # <<<<<<<<<<<<<< + * + * def __releasebuffer__(self, Py_buffer* info): + */ + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + + /* "array.pxd":93 + * __data_union data + * + * def __getbuffer__(self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fulfill the PEP. + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("cpython.array.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_info->obj != NULL) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + __pyx_L2:; + __Pyx_XDECREF(__pyx_v_item_count); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":118 + * info.obj = self + * + * def __releasebuffer__(self, Py_buffer* info): # <<<<<<<<<<<<<< + * PyObject_Free(info.shape) + * + */ + +/* Python wrapper */ +static CYTHON_UNUSED void __pyx_pw_7cpython_5array_5array_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/ +static CYTHON_UNUSED void __pyx_pw_7cpython_5array_5array_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); + __pyx_pf_7cpython_5array_5array_2__releasebuffer__(((arrayobject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_7cpython_5array_5array_2__releasebuffer__(CYTHON_UNUSED arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__releasebuffer__", 0); + + /* "array.pxd":119 + * + * def __releasebuffer__(self, Py_buffer* info): + * PyObject_Free(info.shape) # <<<<<<<<<<<<<< + * + * array newarrayobject(PyTypeObject* type, Py_ssize_t size, arraydescr *descr) + */ + PyObject_Free(__pyx_v_info->shape); + + /* "array.pxd":118 + * info.obj = self + * + * def __releasebuffer__(self, Py_buffer* info): # <<<<<<<<<<<<<< + * PyObject_Free(info.shape) + * + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "array.pxd":130 + * + * + * cdef inline array clone(array template, Py_ssize_t length, bint zero): # <<<<<<<<<<<<<< + * """ fast creation of a new array, given a template array. + * type will be same as template. + */ + +static CYTHON_INLINE arrayobject *__pyx_f_7cpython_5array_clone(arrayobject *__pyx_v_template, Py_ssize_t __pyx_v_length, int __pyx_v_zero) { + arrayobject *__pyx_v_op = NULL; + arrayobject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + __Pyx_RefNannySetupContext("clone", 0); + + /* "array.pxd":134 + * type will be same as template. + * if zero is true, new array will be initialized with zeroes.""" + * op = newarrayobject(Py_TYPE(template), length, template.ob_descr) # <<<<<<<<<<<<<< + * if zero and op is not None: + * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) + */ + __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_template)), __pyx_v_length, __pyx_v_template->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_op = ((arrayobject *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "array.pxd":135 + * if zero is true, new array will be initialized with zeroes.""" + * op = newarrayobject(Py_TYPE(template), length, template.ob_descr) + * if zero and op is not None: # <<<<<<<<<<<<<< + * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) + * return op + */ + __pyx_t_3 = (__pyx_v_zero != 0); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (((PyObject *)__pyx_v_op) != Py_None); + __pyx_t_4 = (__pyx_t_3 != 0); + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "array.pxd":136 + * op = newarrayobject(Py_TYPE(template), length, template.ob_descr) + * if zero and op is not None: + * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) # <<<<<<<<<<<<<< + * return op + * + */ + (void)(memset(__pyx_v_op->data.as_chars, 0, (__pyx_v_length * __pyx_v_op->ob_descr->itemsize))); + + /* "array.pxd":135 + * if zero is true, new array will be initialized with zeroes.""" + * op = newarrayobject(Py_TYPE(template), length, template.ob_descr) + * if zero and op is not None: # <<<<<<<<<<<<<< + * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) + * return op + */ + } + + /* "array.pxd":137 + * if zero and op is not None: + * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) + * return op # <<<<<<<<<<<<<< + * + * cdef inline array copy(array self): + */ + __Pyx_XDECREF(((PyObject *)__pyx_r)); + __Pyx_INCREF(((PyObject *)__pyx_v_op)); + __pyx_r = __pyx_v_op; + goto __pyx_L0; + + /* "array.pxd":130 + * + * + * cdef inline array clone(array template, Py_ssize_t length, bint zero): # <<<<<<<<<<<<<< + * """ fast creation of a new array, given a template array. + * type will be same as template. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.array.clone", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_op); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":139 + * return op + * + * cdef inline array copy(array self): # <<<<<<<<<<<<<< + * """ make a copy of an array. """ + * op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr) + */ + +static CYTHON_INLINE arrayobject *__pyx_f_7cpython_5array_copy(arrayobject *__pyx_v_self) { + arrayobject *__pyx_v_op = NULL; + arrayobject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("copy", 0); + + /* "array.pxd":141 + * cdef inline array copy(array self): + * """ make a copy of an array. """ + * op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr) # <<<<<<<<<<<<<< + * memcpy(op.data.as_chars, self.data.as_chars, Py_SIZE(op) * op.ob_descr.itemsize) + * return op + */ + __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_self)), Py_SIZE(((PyObject *)__pyx_v_self)), __pyx_v_self->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_op = ((arrayobject *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "array.pxd":142 + * """ make a copy of an array. """ + * op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr) + * memcpy(op.data.as_chars, self.data.as_chars, Py_SIZE(op) * op.ob_descr.itemsize) # <<<<<<<<<<<<<< + * return op + * + */ + (void)(memcpy(__pyx_v_op->data.as_chars, __pyx_v_self->data.as_chars, (Py_SIZE(((PyObject *)__pyx_v_op)) * __pyx_v_op->ob_descr->itemsize))); + + /* "array.pxd":143 + * op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr) + * memcpy(op.data.as_chars, self.data.as_chars, Py_SIZE(op) * op.ob_descr.itemsize) + * return op # <<<<<<<<<<<<<< + * + * cdef inline int extend_buffer(array self, char* stuff, Py_ssize_t n) except -1: + */ + __Pyx_XDECREF(((PyObject *)__pyx_r)); + __Pyx_INCREF(((PyObject *)__pyx_v_op)); + __pyx_r = __pyx_v_op; + goto __pyx_L0; + + /* "array.pxd":139 + * return op + * + * cdef inline array copy(array self): # <<<<<<<<<<<<<< + * """ make a copy of an array. """ + * op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.array.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_op); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":145 + * return op + * + * cdef inline int extend_buffer(array self, char* stuff, Py_ssize_t n) except -1: # <<<<<<<<<<<<<< + * """ efficient appending of new stuff of same type + * (e.g. of same array type) + */ + +static CYTHON_INLINE int __pyx_f_7cpython_5array_extend_buffer(arrayobject *__pyx_v_self, char *__pyx_v_stuff, Py_ssize_t __pyx_v_n) { + Py_ssize_t __pyx_v_itemsize; + Py_ssize_t __pyx_v_origsize; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("extend_buffer", 0); + + /* "array.pxd":149 + * (e.g. of same array type) + * n: number of elements (not number of bytes!) """ + * cdef Py_ssize_t itemsize = self.ob_descr.itemsize # <<<<<<<<<<<<<< + * cdef Py_ssize_t origsize = Py_SIZE(self) + * resize_smart(self, origsize + n) + */ + __pyx_t_1 = __pyx_v_self->ob_descr->itemsize; + __pyx_v_itemsize = __pyx_t_1; + + /* "array.pxd":150 + * n: number of elements (not number of bytes!) """ + * cdef Py_ssize_t itemsize = self.ob_descr.itemsize + * cdef Py_ssize_t origsize = Py_SIZE(self) # <<<<<<<<<<<<<< + * resize_smart(self, origsize + n) + * memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize) + */ + __pyx_v_origsize = Py_SIZE(((PyObject *)__pyx_v_self)); + + /* "array.pxd":151 + * cdef Py_ssize_t itemsize = self.ob_descr.itemsize + * cdef Py_ssize_t origsize = Py_SIZE(self) + * resize_smart(self, origsize + n) # <<<<<<<<<<<<<< + * memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize) + * return 0 + */ + __pyx_t_1 = resize_smart(__pyx_v_self, (__pyx_v_origsize + __pyx_v_n)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 151, __pyx_L1_error) + + /* "array.pxd":152 + * cdef Py_ssize_t origsize = Py_SIZE(self) + * resize_smart(self, origsize + n) + * memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize) # <<<<<<<<<<<<<< + * return 0 + * + */ + (void)(memcpy((__pyx_v_self->data.as_chars + (__pyx_v_origsize * __pyx_v_itemsize)), __pyx_v_stuff, (__pyx_v_n * __pyx_v_itemsize))); + + /* "array.pxd":153 + * resize_smart(self, origsize + n) + * memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize) + * return 0 # <<<<<<<<<<<<<< + * + * cdef inline int extend(array self, array other) except -1: + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "array.pxd":145 + * return op + * + * cdef inline int extend_buffer(array self, char* stuff, Py_ssize_t n) except -1: # <<<<<<<<<<<<<< + * """ efficient appending of new stuff of same type + * (e.g. of same array type) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("cpython.array.extend_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":155 + * return 0 + * + * cdef inline int extend(array self, array other) except -1: # <<<<<<<<<<<<<< + * """ extend array with data from another array; types must match. """ + * if self.ob_descr.typecode != other.ob_descr.typecode: + */ + +static CYTHON_INLINE int __pyx_f_7cpython_5array_extend(arrayobject *__pyx_v_self, arrayobject *__pyx_v_other) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + __Pyx_RefNannySetupContext("extend", 0); + + /* "array.pxd":157 + * cdef inline int extend(array self, array other) except -1: + * """ extend array with data from another array; types must match. """ + * if self.ob_descr.typecode != other.ob_descr.typecode: # <<<<<<<<<<<<<< + * PyErr_BadArgument() + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) + */ + __pyx_t_1 = ((__pyx_v_self->ob_descr->typecode != __pyx_v_other->ob_descr->typecode) != 0); + if (__pyx_t_1) { + + /* "array.pxd":158 + * """ extend array with data from another array; types must match. """ + * if self.ob_descr.typecode != other.ob_descr.typecode: + * PyErr_BadArgument() # <<<<<<<<<<<<<< + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) + * + */ + __pyx_t_2 = PyErr_BadArgument(); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(3, 158, __pyx_L1_error) + + /* "array.pxd":157 + * cdef inline int extend(array self, array other) except -1: + * """ extend array with data from another array; types must match. """ + * if self.ob_descr.typecode != other.ob_descr.typecode: # <<<<<<<<<<<<<< + * PyErr_BadArgument() + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) + */ + } + + /* "array.pxd":159 + * if self.ob_descr.typecode != other.ob_descr.typecode: + * PyErr_BadArgument() + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) # <<<<<<<<<<<<<< + * + * cdef inline void zero(array self): + */ + __pyx_t_2 = __pyx_f_7cpython_5array_extend_buffer(__pyx_v_self, __pyx_v_other->data.as_chars, Py_SIZE(((PyObject *)__pyx_v_other))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(3, 159, __pyx_L1_error) + __pyx_r = __pyx_t_2; + goto __pyx_L0; + + /* "array.pxd":155 + * return 0 + * + * cdef inline int extend(array self, array other) except -1: # <<<<<<<<<<<<<< + * """ extend array with data from another array; types must match. """ + * if self.ob_descr.typecode != other.ob_descr.typecode: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("cpython.array.extend", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "array.pxd":161 + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) + * + * cdef inline void zero(array self): # <<<<<<<<<<<<<< + * """ set all elements of array to zero. """ + * memset(self.data.as_chars, 0, Py_SIZE(self) * self.ob_descr.itemsize) + */ + +static CYTHON_INLINE void __pyx_f_7cpython_5array_zero(arrayobject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("zero", 0); + + /* "array.pxd":163 + * cdef inline void zero(array self): + * """ set all elements of array to zero. """ + * memset(self.data.as_chars, 0, Py_SIZE(self) * self.ob_descr.itemsize) # <<<<<<<<<<<<<< + */ + (void)(memset(__pyx_v_self->data.as_chars, 0, (Py_SIZE(((PyObject *)__pyx_v_self)) * __pyx_v_self->ob_descr->itemsize))); + + /* "array.pxd":161 + * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) + * + * cdef inline void zero(array self): # <<<<<<<<<<<<<< + * """ set all elements of array to zero. """ + * memset(self.data.as_chars, 0, Py_SIZE(self) * self.ob_descr.itemsize) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "string.to_py":31 + * + * @cname("__pyx_convert_PyObject_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + +static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_PyObject_string_to_py_std__in_string", 0); + + /* "string.to_py":32 + * @cname("__pyx_convert_PyObject_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s): + * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<< + * cdef extern from *: + * cdef object __Pyx_PyUnicode_FromStringAndSize(const char*, size_t) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "string.to_py":31 + * + * @cname("__pyx_convert_PyObject_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("string.to_py.__pyx_convert_PyObject_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.to_py":37 + * + * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + +static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_PyUnicode_string_to_py_std__in_string", 0); + + /* "string.to_py":38 + * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s): + * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<< + * cdef extern from *: + * cdef object __Pyx_PyStr_FromStringAndSize(const char*, size_t) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyUnicode_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "string.to_py":37 + * + * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("string.to_py.__pyx_convert_PyUnicode_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.to_py":43 + * + * @cname("__pyx_convert_PyStr_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + +static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_PyStr_string_to_py_std__in_string", 0); + + /* "string.to_py":44 + * @cname("__pyx_convert_PyStr_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s): + * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<< + * cdef extern from *: + * cdef object __Pyx_PyBytes_FromStringAndSize(const char*, size_t) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyStr_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "string.to_py":43 + * + * @cname("__pyx_convert_PyStr_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("string.to_py.__pyx_convert_PyStr_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.to_py":49 + * + * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + +static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_PyBytes_string_to_py_std__in_string", 0); + + /* "string.to_py":50 + * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s): + * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<< + * cdef extern from *: + * cdef object __Pyx_PyByteArray_FromStringAndSize(const char*, size_t) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "string.to_py":49 + * + * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size()) + * cdef extern from *: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("string.to_py.__pyx_convert_PyBytes_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.to_py":55 + * + * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size()) + * + */ + +static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_PyByteArray_string_to_py_std__in_string", 0); + + /* "string.to_py":56 + * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s): + * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<< + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyByteArray_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "string.to_py":55 + * + * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string") + * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<< + * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size()) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("string.to_py.__pyx_convert_PyByteArray_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.from_py":13 + * + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + */ + +static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v_o) { + Py_ssize_t __pyx_v_length; + char const *__pyx_v_data; + std::string __pyx_r; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + __Pyx_RefNannySetupContext("__pyx_convert_string_from_py_std__in_string", 0); + + /* "string.from_py":14 + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: + * cdef Py_ssize_t length = 0 # <<<<<<<<<<<<<< + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * return string(data, length) + */ + __pyx_v_length = 0; + + /* "string.from_py":15 + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) # <<<<<<<<<<<<<< + * return string(data, length) + * + */ + __pyx_t_1 = __Pyx_PyObject_AsStringAndSize(__pyx_v_o, (&__pyx_v_length)); if (unlikely(__pyx_t_1 == ((char const *)NULL))) __PYX_ERR(1, 15, __pyx_L1_error) + __pyx_v_data = __pyx_t_1; + + /* "string.from_py":16 + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * return string(data, length) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = std::string(__pyx_v_data, __pyx_v_length); + goto __pyx_L0; + + /* "string.from_py":13 + * + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("string.from_py.__pyx_convert_string_from_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pair.to_py":158 + * + * @cname("__pyx_convert_pair_to_py_size_t____size_t") + * cdef object __pyx_convert_pair_to_py_size_t____size_t(const pair[X,Y]& p): # <<<<<<<<<<<<<< + * return p.first, p.second + * + */ + +static PyObject *__pyx_convert_pair_to_py_size_t____size_t(std::pair const &__pyx_v_p) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_pair_to_py_size_t____size_t", 0); + + /* "pair.to_py":159 + * @cname("__pyx_convert_pair_to_py_size_t____size_t") + * cdef object __pyx_convert_pair_to_py_size_t____size_t(const pair[X,Y]& p): + * return p.first, p.second # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_p.first); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_p.second); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "pair.to_py":158 + * + * @cname("__pyx_convert_pair_to_py_size_t____size_t") + * cdef object __pyx_convert_pair_to_py_size_t____size_t(const pair[X,Y]& p): # <<<<<<<<<<<<<< + * return p.first, p.second + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("pair.to_py.__pyx_convert_pair_to_py_size_t____size_t", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_size_t") + * cdef object __pyx_convert_vector_to_py_size_t(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + +static PyObject *__pyx_convert_vector_to_py_size_t(const std::vector &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_size_t", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_size_t") + * cdef object __pyx_convert_vector_to_py_size_t(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_size_t") + * cdef object __pyx_convert_vector_to_py_size_t(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_size_t", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "map.from_py":174 + * + * @cname("__pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string") + * cdef map[X,Y] __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(object o) except *: # <<<<<<<<<<<<<< + * cdef dict d = o + * cdef map[X,Y] m + */ + +static std::map __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(PyObject *__pyx_v_o) { + PyObject *__pyx_v_d = 0; + std::map __pyx_v_m; + PyObject *__pyx_v_key = NULL; + PyObject *__pyx_v_value = NULL; + std::map __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + std::string __pyx_t_8; + std::string __pyx_t_9; + __Pyx_RefNannySetupContext("__pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string", 0); + + /* "map.from_py":175 + * @cname("__pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string") + * cdef map[X,Y] __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(object o) except *: + * cdef dict d = o # <<<<<<<<<<<<<< + * cdef map[X,Y] m + * for key, value in d.iteritems(): + */ + if (!(likely(PyDict_CheckExact(__pyx_v_o))||((__pyx_v_o) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_o)->tp_name), 0))) __PYX_ERR(1, 175, __pyx_L1_error) + __pyx_t_1 = __pyx_v_o; + __Pyx_INCREF(__pyx_t_1); + __pyx_v_d = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "map.from_py":177 + * cdef dict d = o + * cdef map[X,Y] m + * for key, value in d.iteritems(): # <<<<<<<<<<<<<< + * m.insert(pair[X,Y](key, value)) + * return m + */ + __pyx_t_2 = 0; + if (unlikely(__pyx_v_d == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems"); + __PYX_ERR(1, 177, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_d, 1, __pyx_n_s_iteritems, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + while (1) { + __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); + if (unlikely(__pyx_t_7 == 0)) break; + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(1, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); + __pyx_t_6 = 0; + + /* "map.from_py":178 + * cdef map[X,Y] m + * for key, value in d.iteritems(): + * m.insert(pair[X,Y](key, value)) # <<<<<<<<<<<<<< + * return m + * + */ + __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_key); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 178, __pyx_L1_error) + __pyx_t_9 = __pyx_convert_string_from_py_std__in_string(__pyx_v_value); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 178, __pyx_L1_error) + __pyx_v_m.insert(std::pair (((std::string)__pyx_t_8), ((std::string)__pyx_t_9))); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "map.from_py":179 + * for key, value in d.iteritems(): + * m.insert(pair[X,Y](key, value)) + * return m # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_m; + goto __pyx_L0; + + /* "map.from_py":174 + * + * @cname("__pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string") + * cdef map[X,Y] __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(object o) except *: # <<<<<<<<<<<<<< + * cdef dict d = o + * cdef map[X,Y] m + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("map.from_py.__pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_d); + __Pyx_XDECREF(__pyx_v_key); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "map.to_py":201 + * + * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string") + * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(const map[X,Y]& s): # <<<<<<<<<<<<<< + * o = {} + * cdef const map[X,Y].value_type *key_value + */ + +static PyObject *__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(std::map const &__pyx_v_s) { + PyObject *__pyx_v_o = NULL; + std::map ::value_type const *__pyx_v_key_value; + std::map ::const_iterator __pyx_v_iter; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string", 0); + + /* "map.to_py":202 + * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string") + * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(const map[X,Y]& s): + * o = {} # <<<<<<<<<<<<<< + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_o = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "map.to_py":204 + * o = {} + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() # <<<<<<<<<<<<<< + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) + */ + __pyx_v_iter = __pyx_v_s.begin(); + + /* "map.to_py":205 + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() + * while iter != s.end(): # <<<<<<<<<<<<<< + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second + */ + while (1) { + __pyx_t_2 = ((__pyx_v_iter != __pyx_v_s.end()) != 0); + if (!__pyx_t_2) break; + + /* "map.to_py":206 + * cdef map[X,Y].const_iterator iter = s.begin() + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) # <<<<<<<<<<<<<< + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) + */ + __pyx_v_key_value = (&(*__pyx_v_iter)); + + /* "map.to_py":207 + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second # <<<<<<<<<<<<<< + * cython.operator.preincrement(iter) + * return o + */ + __pyx_t_1 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_v_key_value->second); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_v_key_value->first); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(PyDict_SetItem(__pyx_v_o, __pyx_t_3, __pyx_t_1) < 0)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "map.to_py":208 + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) # <<<<<<<<<<<<<< + * return o + * + */ + (void)((++__pyx_v_iter)); + } + + /* "map.to_py":209 + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) + * return o # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_o); + __pyx_r = __pyx_v_o; + goto __pyx_L0; + + /* "map.to_py":201 + * + * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string") + * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(const map[X,Y]& s): # <<<<<<<<<<<<<< + * o = {} + * cdef const map[X,Y].value_type *key_value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("map.to_py.__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_o); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(std::map ,std::map > const &__pyx_v_s) { + PyObject *__pyx_v_o = NULL; + std::map ,std::map > ::value_type const *__pyx_v_key_value; + std::map ,std::map > ::const_iterator __pyx_v_iter; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___", 0); + + /* "map.to_py":202 + * @cname("__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___") + * cdef object __pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(const map[X,Y]& s): + * o = {} # <<<<<<<<<<<<<< + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_o = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "map.to_py":204 + * o = {} + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() # <<<<<<<<<<<<<< + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) + */ + __pyx_v_iter = __pyx_v_s.begin(); + + /* "map.to_py":205 + * cdef const map[X,Y].value_type *key_value + * cdef map[X,Y].const_iterator iter = s.begin() + * while iter != s.end(): # <<<<<<<<<<<<<< + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second + */ + while (1) { + __pyx_t_2 = ((__pyx_v_iter != __pyx_v_s.end()) != 0); + if (!__pyx_t_2) break; + + /* "map.to_py":206 + * cdef map[X,Y].const_iterator iter = s.begin() + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) # <<<<<<<<<<<<<< + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) + */ + __pyx_v_key_value = (&(*__pyx_v_iter)); + + /* "map.to_py":207 + * while iter != s.end(): + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second # <<<<<<<<<<<<<< + * cython.operator.preincrement(iter) + * return o + */ + __pyx_t_1 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_v_key_value->second); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __pyx_convert_pair_to_py_size_t____size_t(__pyx_v_key_value->first); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(PyDict_SetItem(__pyx_v_o, __pyx_t_3, __pyx_t_1) < 0)) __PYX_ERR(1, 207, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "map.to_py":208 + * key_value = &cython.operator.dereference(iter) + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) # <<<<<<<<<<<<<< + * return o + * + */ + (void)((++__pyx_v_iter)); + } + + /* "map.to_py":209 + * o[key_value.first] = key_value.second + * cython.operator.preincrement(iter) + * return o # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_o); + __pyx_r = __pyx_v_o; + goto __pyx_L0; + + /* "map.to_py":201 + * + * @cname("__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___") + * cdef object __pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(const map[X,Y]& s): # <<<<<<<<<<<<<< + * o = {} + * cdef const map[X,Y].value_type *key_value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("map.to_py.__pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_o); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(const std::vector > &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __pyx_convert_vector_to_py_size_t((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_double") + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + +static std::vector __pyx_convert_vector_from_py_double(PyObject *__pyx_v_o) { + std::vector __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + double __pyx_t_5; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_double", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error) + __pyx_v_v.push_back(((double)__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_double") + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_npy_uint64") + * cdef object __pyx_convert_vector_to_py_npy_uint64(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + +static PyObject *__pyx_convert_vector_to_py_npy_uint64(const std::vector &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_npy_uint64", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_npy_uint64") + * cdef object __pyx_convert_vector_to_py_npy_uint64(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __Pyx_PyInt_From_npy_uint64((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_npy_uint64") + * cdef object __pyx_convert_vector_to_py_npy_uint64(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_npy_uint64", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(const std::vector > &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __pyx_convert_pair_to_py_size_t____size_t((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_vector_to_py_int(const std::vector &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_int", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_int") + * cdef object __pyx_convert_vector_to_py_int(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_int") + * cdef object __pyx_convert_vector_to_py_int(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_int", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const std::vector > &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(const std::vector > &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __pyx_convert_vector_to_py_npy_uint64((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_size_t") + * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + +static std::vector __pyx_convert_vector_from_py_size_t(PyObject *__pyx_v_o) { + std::vector __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_size_t", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_item); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error) + __pyx_v_v.push_back(((size_t)__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_size_t") + * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_size_t", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(PyObject *__pyx_v_o) { + std::vector > __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector > __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + std::vector __pyx_t_5; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __pyx_convert_vector_from_py_size_t(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error) + __pyx_v_v.push_back(((std::vector )__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___") + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(PyObject *__pyx_v_o) { + std::vector > __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector > __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + std::vector __pyx_t_5; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __pyx_convert_vector_from_py_double(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error) + __pyx_v_v.push_back(((std::vector )__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___") + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_double") + * cdef object __pyx_convert_vector_to_py_double(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + +static PyObject *__pyx_convert_vector_to_py_double(const std::vector &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_double", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_double") + * cdef object __pyx_convert_vector_to_py_double(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_double") + * cdef object __pyx_convert_vector_to_py_double(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const std::vector > &__pyx_v_v) { + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___", 0); + + /* "vector.to_py":61 + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(vector[X]& v): + * return [v[i] for i in range(v.size())] # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_v_v.size(); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "vector.to_py":60 + * + * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___") + * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(vector[X]& v): # <<<<<<<<<<<<<< + * return [v[i] for i in range(v.size())] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___") + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + +static std::vector > __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(PyObject *__pyx_v_o) { + std::vector > __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector > __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + std::map __pyx_t_5; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error) + __pyx_v_v.push_back(((std::map )__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___") + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_tp_new_8gedlibpy_GEDEnv(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + if (unlikely(__pyx_pw_8gedlibpy_6GEDEnv_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_8gedlibpy_GEDEnv(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + ++Py_REFCNT(o); + __pyx_pw_8gedlibpy_6GEDEnv_3__dealloc__(o); + --Py_REFCNT(o); + PyErr_Restore(etype, eval, etb); + } + (*Py_TYPE(o)->tp_free)(o); +} + +static PyMethodDef __pyx_methods_8gedlibpy_GEDEnv[] = { + {"is_initialized", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_5is_initialized, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_4is_initialized}, + {"restart_env", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_7restart_env, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_6restart_env}, + {"load_GXL_graphs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_9load_GXL_graphs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_8load_GXL_graphs}, + {"graph_ids", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_11graph_ids, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_10graph_ids}, + {"get_all_graph_ids", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_13get_all_graph_ids, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_12get_all_graph_ids}, + {"get_graph_class", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_15get_graph_class, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_14get_graph_class}, + {"get_graph_name", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_17get_graph_name, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_16get_graph_name}, + {"add_graph", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_19add_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_18add_graph}, + {"add_node", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_21add_node, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_20add_node}, + {"add_edge", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_23add_edge, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_22add_edge}, + {"add_symmetrical_edge", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_25add_symmetrical_edge, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_24add_symmetrical_edge}, + {"clear_graph", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_27clear_graph, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_26clear_graph}, + {"get_graph_internal_id", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_29get_graph_internal_id, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_28get_graph_internal_id}, + {"get_graph_num_nodes", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_31get_graph_num_nodes, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_30get_graph_num_nodes}, + {"get_graph_num_edges", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_33get_graph_num_edges, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_32get_graph_num_edges}, + {"get_original_node_ids", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_35get_original_node_ids, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_34get_original_node_ids}, + {"get_graph_node_labels", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_37get_graph_node_labels, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_36get_graph_node_labels}, + {"get_graph_edges", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_39get_graph_edges, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_38get_graph_edges}, + {"get_graph_adjacence_matrix", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_41get_graph_adjacence_matrix, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix}, + {"set_edit_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_43set_edit_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_42set_edit_cost}, + {"set_personal_edit_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_45set_personal_edit_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_44set_personal_edit_cost}, + {"init", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_47init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_46init}, + {"set_method", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_49set_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_48set_method}, + {"init_method", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_51init_method, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_50init_method}, + {"get_init_time", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_53get_init_time, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_52get_init_time}, + {"run_method", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_55run_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_54run_method}, + {"get_upper_bound", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_57get_upper_bound, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_56get_upper_bound}, + {"get_lower_bound", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_59get_lower_bound, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_58get_lower_bound}, + {"get_forward_map", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_61get_forward_map, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_60get_forward_map}, + {"get_backward_map", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_63get_backward_map, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_62get_backward_map}, + {"get_node_image", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_65get_node_image, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_64get_node_image}, + {"get_node_pre_image", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_67get_node_pre_image, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_66get_node_pre_image}, + {"get_induced_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_69get_induced_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_68get_induced_cost}, + {"get_node_map", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_70get_node_map}, + {"get_assignment_matrix", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_73get_assignment_matrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_72get_assignment_matrix}, + {"get_all_map", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_75get_all_map, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_74get_all_map}, + {"get_runtime", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_77get_runtime, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_76get_runtime}, + {"quasimetric_cost", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_79quasimetric_cost, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_78quasimetric_cost}, + {"hungarian_LSAP", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_81hungarian_LSAP, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_80hungarian_LSAP}, + {"hungarian_LSAPE", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_83hungarian_LSAPE, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_82hungarian_LSAPE}, + {"add_random_graph", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_84add_random_graph}, + {"add_nx_graph", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_86add_nx_graph}, + {"compute_ged_on_two_graphs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs}, + {"compute_edit_distance_on_nx_graphs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs}, + {"compute_edit_distance_on_GXl_graphs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graphs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graphs}, + {"get_num_node_labels", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_95get_num_node_labels, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_94get_num_node_labels}, + {"get_node_label", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_97get_node_label, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_96get_node_label}, + {"get_num_edge_labels", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_99get_num_edge_labels, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_98get_num_edge_labels}, + {"get_edge_label", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_101get_edge_label, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_100get_edge_label}, + {"get_avg_num_nodes", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_103get_avg_num_nodes, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_102get_avg_num_nodes}, + {"get_node_rel_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_105get_node_rel_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_104get_node_rel_cost}, + {"get_node_del_cost", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_107get_node_del_cost, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_106get_node_del_cost}, + {"get_node_ins_cost", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_109get_node_ins_cost, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_108get_node_ins_cost}, + {"get_median_node_label", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_111get_median_node_label, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_110get_median_node_label}, + {"get_edge_rel_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_113get_edge_rel_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_112get_edge_rel_cost}, + {"get_edge_del_cost", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_115get_edge_del_cost, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_114get_edge_del_cost}, + {"get_edge_ins_cost", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_117get_edge_ins_cost, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_116get_edge_ins_cost}, + {"get_median_edge_label", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_119get_median_edge_label, METH_O, __pyx_doc_8gedlibpy_6GEDEnv_118get_median_edge_label}, + {"get_nx_graph", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_121get_nx_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_120get_nx_graph}, + {"get_init_type", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_123get_init_type, METH_NOARGS, __pyx_doc_8gedlibpy_6GEDEnv_122get_init_type}, + {"load_nx_graph", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_124load_nx_graph}, + {"compute_induced_cost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8gedlibpy_6GEDEnv_126compute_induced_cost}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_129__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_8gedlibpy_6GEDEnv_131__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_8gedlibpy_GEDEnv = { + PyVarObject_HEAD_INIT(0, 0) + "gedlibpy.GEDEnv", /*tp_name*/ + sizeof(struct __pyx_obj_8gedlibpy_GEDEnv), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_8gedlibpy_GEDEnv, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + "Cython wrapper class for C++ class PyGEDEnv\n\t", /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_8gedlibpy_GEDEnv, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_8gedlibpy_GEDEnv, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +static int __pyx_import_star_set(PyObject *o, PyObject* py_name, char *name) { + static const char* internal_type_names[] = { + "GEDEnv", + "PyGEDEnv", + "UINT32_t", + "X", + "Y", + "__pyx_ctuple_dbc1b__c5621__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc", + "__pyx_ctuple_dbc1b__c5621__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc_struct", + "__pyx_ctuple_size_t", + "__pyx_ctuple_size_t__space___const___and_size_t__space___const_", + "__pyx_ctuple_size_t__space___const___and_size_t__space___const__struct", + "__pyx_ctuple_size_t_struct", + "__pyx_ctuple_std__in_map__lAngstd__in_string__comma_std__in_string__rAng", + "__pyx_ctuple_std__in_map__lAngstd__in_string__comma_std__in_string__rAng_struct", + "bool", + "list", + "map", + "pair", + "string", + "vector", + 0 + }; + const char** type_name = internal_type_names; + while (*type_name) { + if (__Pyx_StrEq(name, *type_name)) { + PyErr_Format(PyExc_TypeError, "Cannot overwrite C type %s", name); + goto bad; + } + type_name++; + } + if (0); + else { + if (PyObject_SetAttr(__pyx_m, py_name, o) < 0) goto bad; + } + return 0; + bad: + return -1; +} + +static int +__Pyx_import_all_from(PyObject *locals, PyObject *v) +{ + PyObject *all = PyObject_GetAttrString(v, "__all__"); + PyObject *dict, *name, *value; + int skip_leading_underscores = 0; + int pos, err; + if (all == NULL) { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) + return -1; + PyErr_Clear(); + dict = PyObject_GetAttrString(v, "__dict__"); + if (dict == NULL) { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) + return -1; + PyErr_SetString(PyExc_ImportError, + "from-import-* object has no __dict__ and no __all__"); + return -1; + } +#if PY_MAJOR_VERSION < 3 + all = PyObject_CallMethod(dict, (char *)"keys", NULL); +#else + all = PyMapping_Keys(dict); +#endif + Py_DECREF(dict); + if (all == NULL) + return -1; + skip_leading_underscores = 1; + } + for (pos = 0, err = 0; ; pos++) { + name = PySequence_GetItem(all, pos); + if (name == NULL) { + if (!PyErr_ExceptionMatches(PyExc_IndexError)) + err = -1; + else + PyErr_Clear(); + break; + } + if (skip_leading_underscores && +#if PY_MAJOR_VERSION < 3 + PyString_Check(name) && + PyString_AS_STRING(name)[0] == '_') +#else + PyUnicode_Check(name) && + PyUnicode_AS_UNICODE(name)[0] == '_') +#endif + { + Py_DECREF(name); + continue; + } + value = PyObject_GetAttr(v, name); + if (value == NULL) + err = -1; + else if (PyDict_CheckExact(locals)) + err = PyDict_SetItem(locals, name, value); + else + err = PyObject_SetItem(locals, name, value); + Py_DECREF(name); + Py_XDECREF(value); + if (err != 0) + break; + } + Py_DECREF(all); + return err; +} +static int __pyx_import_star(PyObject* m) { + int i; + int ret = -1; + char* s; + PyObject *locals = 0; + PyObject *list = 0; +#if PY_MAJOR_VERSION >= 3 + PyObject *utf8_name = 0; +#endif + PyObject *name; + PyObject *item; + locals = PyDict_New(); if (!locals) goto bad; + if (__Pyx_import_all_from(locals, m) < 0) goto bad; + list = PyDict_Items(locals); if (!list) goto bad; + for(i=0; i= 3 + utf8_name = PyUnicode_AsUTF8String(name); + if (!utf8_name) goto bad; + s = PyBytes_AS_STRING(utf8_name); + if (__pyx_import_star_set(item, name, s) < 0) goto bad; + Py_DECREF(utf8_name); utf8_name = 0; +#else + s = PyString_AsString(name); + if (!s) goto bad; + if (__pyx_import_star_set(item, name, s) < 0) goto bad; +#endif + } + ret = 0; +bad: + Py_XDECREF(locals); + Py_XDECREF(list); +#if PY_MAJOR_VERSION >= 3 + Py_XDECREF(utf8_name); +#endif + return ret; +} + + + +#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_gedlibpy(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_gedlibpy}, + {0, NULL} +}; +#endif + +static struct PyModuleDef __pyx_moduledef = { + PyModuleDef_HEAD_INIT, + "gedlibpy", + __pyx_k_Python_GedLib_module_This_modul, /* 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_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0}, + {&__pyx_kp_s_Class_for_Edit_Cost_Error_Raise, __pyx_k_Class_for_Edit_Cost_Error_Raise, sizeof(__pyx_k_Class_for_Edit_Cost_Error_Raise), 0, 0, 1, 0}, + {&__pyx_kp_s_Class_for_Init_Error_Raise_an_e, __pyx_k_Class_for_Init_Error_Raise_an_e, sizeof(__pyx_k_Class_for_Init_Error_Raise_an_e), 0, 0, 1, 0}, + {&__pyx_kp_s_Class_for_Method_Error_Raise_an, __pyx_k_Class_for_Method_Error_Raise_an, sizeof(__pyx_k_Class_for_Method_Error_Raise_an), 0, 0, 1, 0}, + {&__pyx_kp_s_Class_for_error_s_management_Th, __pyx_k_Class_for_error_s_management_Th, sizeof(__pyx_k_Class_for_error_s_management_Th), 0, 0, 1, 0}, + {&__pyx_kp_u_Computation_between_graph, __pyx_k_Computation_between_graph, sizeof(__pyx_k_Computation_between_graph), 0, 1, 0, 0}, + {&__pyx_n_u_EAGER_WITHOUT_SHUFFLED_COPIES, __pyx_k_EAGER_WITHOUT_SHUFFLED_COPIES, sizeof(__pyx_k_EAGER_WITHOUT_SHUFFLED_COPIES), 0, 1, 0, 1}, + {&__pyx_n_s_EditCostError, __pyx_k_EditCostError, sizeof(__pyx_k_EditCostError), 0, 0, 1, 1}, + {&__pyx_n_s_EditCostError___init, __pyx_k_EditCostError___init, sizeof(__pyx_k_EditCostError___init), 0, 0, 1, 1}, + {&__pyx_n_s_Error, __pyx_k_Error, sizeof(__pyx_k_Error), 0, 0, 1, 1}, + {&__pyx_kp_u_Finish_The_return_contains_edit, __pyx_k_Finish_The_return_contains_edit, sizeof(__pyx_k_Finish_The_return_contains_edit), 0, 1, 0, 0}, + {&__pyx_kp_u_Finish_You_can_check_the_result, __pyx_k_Finish_You_can_check_the_result, sizeof(__pyx_k_Finish_You_can_check_the_result), 0, 1, 0, 0}, + {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, + {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, + {&__pyx_n_s_GEDEnv, __pyx_k_GEDEnv, sizeof(__pyx_k_GEDEnv), 0, 0, 1, 1}, + {&__pyx_n_s_Graph, __pyx_k_Graph, sizeof(__pyx_k_Graph), 0, 0, 1, 1}, + {&__pyx_kp_u_Graphs_loaded, __pyx_k_Graphs_loaded, sizeof(__pyx_k_Graphs_loaded), 0, 1, 0, 0}, + {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, + {&__pyx_n_s_InitError, __pyx_k_InitError, sizeof(__pyx_k_InitError), 0, 0, 1, 1}, + {&__pyx_n_s_InitError___init, __pyx_k_InitError___init, sizeof(__pyx_k_InitError___init), 0, 0, 1, 1}, + {&__pyx_kp_u_Initialization_in_progress, __pyx_k_Initialization_in_progress, sizeof(__pyx_k_Initialization_in_progress), 0, 1, 0, 0}, + {&__pyx_kp_u_Initialization_terminated, __pyx_k_Initialization_terminated, sizeof(__pyx_k_Initialization_terminated), 0, 1, 0, 0}, + {&__pyx_n_s_LoadLibrary, __pyx_k_LoadLibrary, sizeof(__pyx_k_LoadLibrary), 0, 0, 1, 1}, + {&__pyx_kp_u_Loading_graphs_in_progress, __pyx_k_Loading_graphs_in_progress, sizeof(__pyx_k_Loading_graphs_in_progress), 0, 1, 0, 0}, + {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, + {&__pyx_n_s_MethodError, __pyx_k_MethodError, sizeof(__pyx_k_MethodError), 0, 0, 1, 1}, + {&__pyx_n_s_MethodError___init, __pyx_k_MethodError___init, sizeof(__pyx_k_MethodError___init), 0, 0, 1, 1}, + {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, + {&__pyx_kp_u_Number_of_graphs, __pyx_k_Number_of_graphs, sizeof(__pyx_k_Number_of_graphs), 0, 1, 0, 0}, + {&__pyx_kp_u_Please_don_t_restart_the_environ, __pyx_k_Please_don_t_restart_the_environ, sizeof(__pyx_k_Please_don_t_restart_the_environ), 0, 1, 0, 0}, + {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, + {&__pyx_kp_u_This_edit_cost_function_doesn_t, __pyx_k_This_edit_cost_function_doesn_t, sizeof(__pyx_k_This_edit_cost_function_doesn_t), 0, 1, 0, 0}, + {&__pyx_kp_u_This_init_option_doesn_t_exist_p, __pyx_k_This_init_option_doesn_t_exist_p, sizeof(__pyx_k_This_init_option_doesn_t_exist_p), 0, 1, 0, 0}, + {&__pyx_kp_u_This_method_doesn_t_exist_please, __pyx_k_This_method_doesn_t_exist_please, sizeof(__pyx_k_This_method_doesn_t_exist_please), 0, 1, 0, 0}, + {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_n_s__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 0, 1, 1}, + {&__pyx_n_s_add_edge, __pyx_k_add_edge, sizeof(__pyx_k_add_edge), 0, 0, 1, 1}, + {&__pyx_n_s_add_graph, __pyx_k_add_graph, sizeof(__pyx_k_add_graph), 0, 0, 1, 1}, + {&__pyx_n_s_add_node, __pyx_k_add_node, sizeof(__pyx_k_add_node), 0, 0, 1, 1}, + {&__pyx_n_s_add_nx_graph, __pyx_k_add_nx_graph, sizeof(__pyx_k_add_nx_graph), 0, 0, 1, 1}, + {&__pyx_n_s_adj_lists, __pyx_k_adj_lists, sizeof(__pyx_k_adj_lists), 0, 0, 1, 1}, + {&__pyx_n_s_adj_matrix, __pyx_k_adj_matrix, sizeof(__pyx_k_adj_matrix), 0, 0, 1, 1}, + {&__pyx_n_s_cdll, __pyx_k_cdll, sizeof(__pyx_k_cdll), 0, 0, 1, 1}, + {&__pyx_n_s_classe, __pyx_k_classe, sizeof(__pyx_k_classe), 0, 0, 1, 1}, + {&__pyx_n_s_classes, __pyx_k_classes, sizeof(__pyx_k_classes), 0, 0, 1, 1}, + {&__pyx_n_s_clear_graph, __pyx_k_clear_graph, sizeof(__pyx_k_clear_graph), 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_ctypes, __pyx_k_ctypes, sizeof(__pyx_k_ctypes), 0, 0, 1, 1}, + {&__pyx_n_s_dataset, __pyx_k_dataset, sizeof(__pyx_k_dataset), 0, 0, 1, 1}, + {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, + {&__pyx_n_s_decode_graph_edges, __pyx_k_decode_graph_edges, sizeof(__pyx_k_decode_graph_edges), 0, 0, 1, 1}, + {&__pyx_n_s_decode_your_map, __pyx_k_decode_your_map, sizeof(__pyx_k_decode_your_map), 0, 0, 1, 1}, + {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_edge_label, __pyx_k_edge_label, sizeof(__pyx_k_edge_label), 0, 0, 1, 1}, + {&__pyx_n_s_edge_label_1, __pyx_k_edge_label_1, sizeof(__pyx_k_edge_label_1), 0, 0, 1, 1}, + {&__pyx_n_s_edge_label_2, __pyx_k_edge_label_2, sizeof(__pyx_k_edge_label_2), 0, 0, 1, 1}, + {&__pyx_n_s_edge_label_b, __pyx_k_edge_label_b, sizeof(__pyx_k_edge_label_b), 0, 0, 1, 1}, + {&__pyx_n_s_edge_list, __pyx_k_edge_list, sizeof(__pyx_k_edge_list), 0, 0, 1, 1}, + {&__pyx_n_s_edge_type, __pyx_k_edge_type, sizeof(__pyx_k_edge_type), 0, 0, 1, 1}, + {&__pyx_n_s_edges, __pyx_k_edges, sizeof(__pyx_k_edges), 0, 0, 1, 1}, + {&__pyx_n_s_edit_cost, __pyx_k_edit_cost, sizeof(__pyx_k_edit_cost), 0, 0, 1, 1}, + {&__pyx_n_s_edit_cost_constant, __pyx_k_edit_cost_constant, sizeof(__pyx_k_edit_cost_constant), 0, 0, 1, 1}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_encode_your_map, __pyx_k_encode_your_map, sizeof(__pyx_k_encode_your_map), 0, 0, 1, 1}, + {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1}, + {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1}, + {&__pyx_n_s_g1, __pyx_k_g1, sizeof(__pyx_k_g1), 0, 0, 1, 1}, + {&__pyx_n_s_g2, __pyx_k_g2, sizeof(__pyx_k_g2), 0, 0, 1, 1}, + {&__pyx_n_s_g_id, __pyx_k_g_id, sizeof(__pyx_k_g_id), 0, 0, 1, 1}, + {&__pyx_n_s_gedlibpy, __pyx_k_gedlibpy, sizeof(__pyx_k_gedlibpy), 0, 0, 1, 1}, + {&__pyx_kp_s_gedlibpy_pyx, __pyx_k_gedlibpy_pyx, sizeof(__pyx_k_gedlibpy_pyx), 0, 0, 1, 0}, + {&__pyx_n_s_get_dummy_node, __pyx_k_get_dummy_node, sizeof(__pyx_k_get_dummy_node), 0, 0, 1, 1}, + {&__pyx_n_s_get_edge_data, __pyx_k_get_edge_data, sizeof(__pyx_k_get_edge_data), 0, 0, 1, 1}, + {&__pyx_n_s_get_edit_cost_options, __pyx_k_get_edit_cost_options, sizeof(__pyx_k_get_edit_cost_options), 0, 0, 1, 1}, + {&__pyx_n_s_get_graph_edges, __pyx_k_get_graph_edges, sizeof(__pyx_k_get_graph_edges), 0, 0, 1, 1}, + {&__pyx_n_s_get_graph_node_labels, __pyx_k_get_graph_node_labels, sizeof(__pyx_k_get_graph_node_labels), 0, 0, 1, 1}, + {&__pyx_n_s_get_graph_num_nodes, __pyx_k_get_graph_num_nodes, sizeof(__pyx_k_get_graph_num_nodes), 0, 0, 1, 1}, + {&__pyx_n_s_get_init_options, __pyx_k_get_init_options, sizeof(__pyx_k_get_init_options), 0, 0, 1, 1}, + {&__pyx_n_s_get_method_options, __pyx_k_get_method_options, sizeof(__pyx_k_get_method_options), 0, 0, 1, 1}, + {&__pyx_n_s_get_node_map, __pyx_k_get_node_map, sizeof(__pyx_k_get_node_map), 0, 0, 1, 1}, + {&__pyx_n_s_get_original_node_ids, __pyx_k_get_original_node_ids, sizeof(__pyx_k_get_original_node_ids), 0, 0, 1, 1}, + {&__pyx_n_s_get_upper_bound, __pyx_k_get_upper_bound, sizeof(__pyx_k_get_upper_bound), 0, 0, 1, 1}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_n_s_graph, __pyx_k_graph, sizeof(__pyx_k_graph), 0, 0, 1, 1}, + {&__pyx_n_s_graph_class, __pyx_k_graph_class, sizeof(__pyx_k_graph_class), 0, 0, 1, 1}, + {&__pyx_n_s_graph_id, __pyx_k_graph_id, sizeof(__pyx_k_graph_id), 0, 0, 1, 1}, + {&__pyx_n_s_graph_ids, __pyx_k_graph_ids, sizeof(__pyx_k_graph_ids), 0, 0, 1, 1}, + {&__pyx_n_s_graph_name, __pyx_k_graph_name, sizeof(__pyx_k_graph_name), 0, 0, 1, 1}, + {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, + {&__pyx_n_s_h_id, __pyx_k_h_id, sizeof(__pyx_k_h_id), 0, 0, 1, 1}, + {&__pyx_n_s_head, __pyx_k_head, sizeof(__pyx_k_head), 0, 0, 1, 1}, + {&__pyx_n_u_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 1, 0, 1}, + {&__pyx_n_s_ignore_duplicates, __pyx_k_ignore_duplicates, sizeof(__pyx_k_ignore_duplicates), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, + {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1}, + {&__pyx_n_s_init_method, __pyx_k_init_method, sizeof(__pyx_k_init_method), 0, 0, 1, 1}, + {&__pyx_n_s_init_option, __pyx_k_init_option, sizeof(__pyx_k_init_option), 0, 0, 1, 1}, + {&__pyx_n_s_is_initialized, __pyx_k_is_initialized, sizeof(__pyx_k_is_initialized), 0, 0, 1, 1}, + {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, + {&__pyx_n_s_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 0, 0, 1, 1}, + {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, + {&__pyx_n_s_lib1, __pyx_k_lib1, sizeof(__pyx_k_lib1), 0, 0, 1, 1}, + {&__pyx_n_s_lib2, __pyx_k_lib2, sizeof(__pyx_k_lib2), 0, 0, 1, 1}, + {&__pyx_n_s_lib3, __pyx_k_lib3, sizeof(__pyx_k_lib3), 0, 0, 1, 1}, + {&__pyx_n_s_lib4, __pyx_k_lib4, sizeof(__pyx_k_lib4), 0, 0, 1, 1}, + {&__pyx_kp_u_lib_fann_libdoublefann_so, __pyx_k_lib_fann_libdoublefann_so, sizeof(__pyx_k_lib_fann_libdoublefann_so), 0, 1, 0, 0}, + {&__pyx_kp_u_lib_libsvm_3_22_libsvm_so, __pyx_k_lib_libsvm_3_22_libsvm_so, sizeof(__pyx_k_lib_libsvm_3_22_libsvm_so), 0, 1, 0, 0}, + {&__pyx_kp_u_lib_nomad_libnomad_so, __pyx_k_lib_nomad_libnomad_so, sizeof(__pyx_k_lib_nomad_libnomad_so), 0, 1, 0, 0}, + {&__pyx_kp_u_lib_nomad_libsgtelib_so, __pyx_k_lib_nomad_libsgtelib_so, sizeof(__pyx_k_lib_nomad_libsgtelib_so), 0, 1, 0, 0}, + {&__pyx_n_s_list_of_edges, __pyx_k_list_of_edges, sizeof(__pyx_k_list_of_edges), 0, 0, 1, 1}, + {&__pyx_n_s_list_of_edit_cost_options, __pyx_k_list_of_edit_cost_options, sizeof(__pyx_k_list_of_edit_cost_options), 0, 0, 1, 1}, + {&__pyx_n_s_list_of_init_options, __pyx_k_list_of_init_options, sizeof(__pyx_k_list_of_init_options), 0, 0, 1, 1}, + {&__pyx_n_s_list_of_method_options, __pyx_k_list_of_method_options, sizeof(__pyx_k_list_of_method_options), 0, 0, 1, 1}, + {&__pyx_n_s_list_of_nodes, __pyx_k_list_of_nodes, sizeof(__pyx_k_list_of_nodes), 0, 0, 1, 1}, + {&__pyx_n_s_load_GXL_graphs, __pyx_k_load_GXL_graphs, sizeof(__pyx_k_load_GXL_graphs), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_map_b, __pyx_k_map_b, sizeof(__pyx_k_map_b), 0, 0, 1, 1}, + {&__pyx_n_s_map_edge_b, __pyx_k_map_edge_b, sizeof(__pyx_k_map_edge_b), 0, 0, 1, 1}, + {&__pyx_n_s_map_edges, __pyx_k_map_edges, sizeof(__pyx_k_map_edges), 0, 0, 1, 1}, + {&__pyx_n_s_map_u, __pyx_k_map_u, sizeof(__pyx_k_map_u), 0, 0, 1, 1}, + {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, + {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, + {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, + {&__pyx_n_s_networkx, __pyx_k_networkx, sizeof(__pyx_k_networkx), 0, 0, 1, 1}, + {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, + {&__pyx_n_s_node_id, __pyx_k_node_id, sizeof(__pyx_k_node_id), 0, 0, 1, 1}, + {&__pyx_n_s_node_label, __pyx_k_node_label, sizeof(__pyx_k_node_label), 0, 0, 1, 1}, + {&__pyx_n_s_node_label_1, __pyx_k_node_label_1, sizeof(__pyx_k_node_label_1), 0, 0, 1, 1}, + {&__pyx_n_s_node_label_2, __pyx_k_node_label_2, sizeof(__pyx_k_node_label_2), 0, 0, 1, 1}, + {&__pyx_n_s_node_type, __pyx_k_node_type, sizeof(__pyx_k_node_type), 0, 0, 1, 1}, + {&__pyx_n_s_nodes, __pyx_k_nodes, sizeof(__pyx_k_nodes), 0, 0, 1, 1}, + {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0}, + {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, + {&__pyx_n_s_nx, __pyx_k_nx, sizeof(__pyx_k_nx), 0, 0, 1, 1}, + {&__pyx_n_s_nx_graph, __pyx_k_nx_graph, sizeof(__pyx_k_nx_graph), 0, 0, 1, 1}, + {&__pyx_n_s_option, __pyx_k_option, sizeof(__pyx_k_option), 0, 0, 1, 1}, + {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, + {&__pyx_n_u_original_node_ids, __pyx_k_original_node_ids, sizeof(__pyx_k_original_node_ids), 0, 1, 0, 1}, + {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, + {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, + {&__pyx_n_s_path_XML, __pyx_k_path_XML, sizeof(__pyx_k_path_XML), 0, 0, 1, 1}, + {&__pyx_n_s_path_folder, __pyx_k_path_folder, sizeof(__pyx_k_path_folder), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, + {&__pyx_n_s_print_to_stdout, __pyx_k_print_to_stdout, sizeof(__pyx_k_print_to_stdout), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_realpath, __pyx_k_realpath, sizeof(__pyx_k_realpath), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, + {&__pyx_n_s_res, __pyx_k_res, sizeof(__pyx_k_res), 0, 0, 1, 1}, + {&__pyx_n_s_restart_env, __pyx_k_restart_env, sizeof(__pyx_k_restart_env), 0, 0, 1, 1}, + {&__pyx_n_s_run_method, __pyx_k_run_method, sizeof(__pyx_k_run_method), 0, 0, 1, 1}, + {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, + {&__pyx_n_s_set_edit_cost, __pyx_k_set_edit_cost, sizeof(__pyx_k_set_edit_cost), 0, 0, 1, 1}, + {&__pyx_n_s_set_method, __pyx_k_set_method, sizeof(__pyx_k_set_method), 0, 0, 1, 1}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_tail, __pyx_k_tail, sizeof(__pyx_k_tail), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, + {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, + {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, + {&__pyx_kp_u_with_all_the_others_including_h, __pyx_k_with_all_the_others_including_h, sizeof(__pyx_k_with_all_the_others_including_h), 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 0} +}; +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 958, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 272, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 856, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1038, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(3, 109, __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); + + /* "gedlibpy.pyx":958 + * self.restart_env() + * + * print("Loading graphs in progress...") # <<<<<<<<<<<<<< + * for graph in dataset : + * self.add_nx_graph(graph, classes) + */ + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Loading_graphs_in_progress); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 958, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "gedlibpy.pyx":962 + * self.add_nx_graph(graph, classes) + * listID = self.graph_ids() + * print("Graphs loaded ! ") # <<<<<<<<<<<<<< + * print("Number of graphs = " + str(listID[1])) + * + */ + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Graphs_loaded); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 962, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + + /* "gedlibpy.pyx":966 + * + * self.set_edit_cost(edit_cost) + * print("Initialization in progress...") # <<<<<<<<<<<<<< + * self.init(init_option) + * print("Initialization terminated !") + */ + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Initialization_in_progress); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 966, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + + /* "gedlibpy.pyx":968 + * print("Initialization in progress...") + * self.init(init_option) + * print("Initialization terminated !") # <<<<<<<<<<<<<< + * + * self.set_method(method, options) + */ + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Initialization_terminated); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 968, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "gedlibpy.pyx":983 + * resMapping[g][h] = self.get_node_map(g, h) + * + * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") # <<<<<<<<<<<<<< + * return resDistance, resMapping + * + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Finish_The_return_contains_edit); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 983, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "gedlibpy.pyx":1038 + * #return res + * + * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") # <<<<<<<<<<<<<< + * print ("Please don't restart the environment or recall this function, you will lose your results !") + * return listID + */ + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Finish_You_can_check_the_result); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1038, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "gedlibpy.pyx":1039 + * + * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") + * print ("Please don't restart the environment or recall this function, you will lose your results !") # <<<<<<<<<<<<<< + * return listID + * + */ + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Please_don_t_restart_the_environ); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1039, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(2, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< + * + * info.buf = PyArray_DATA(self) + */ + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + */ + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + * + * if (end - f) - (new_offset - offset[0]) < 15: + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< + * + * if ((child.byteorder == c'>' and little_endian) or + */ + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 856, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + * t = child.type_num + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< + * + * # Until ticket #99 is fixed, use integers to avoid warnings + */ + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + * _import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 1038, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 1044, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + + /* "gedlibpy.pyx":126 + * + * + * def get_edit_cost_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents edit cost functions and returns the result. + */ + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_edit_cost_options, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 126, __pyx_L1_error) + + /* "gedlibpy.pyx":140 + * + * + * def get_method_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents method for edit distance computation between graphs and returns the result. + */ + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_method_options, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 140, __pyx_L1_error) + + /* "gedlibpy.pyx":153 + * + * + * def get_init_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. + */ + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_init_options, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 153, __pyx_L1_error) + + /* "gedlibpy.pyx":166 + * + * + * def get_dummy_node() : # <<<<<<<<<<<<<< + * """ + * Returns the ID of a dummy node. + */ + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_dummy_node, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 166, __pyx_L1_error) + + /* "gedlibpy.pyx":1375 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1375, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1375, __pyx_L1_error) + + /* "gedlibpy.pyx":1392 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 1392, __pyx_L1_error) + + /* "gedlibpy.pyx":1409 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_tuple__32 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 1409, __pyx_L1_error) + + /* "gedlibpy.pyx":1423 + * ######################################### + * + * def encode_your_map(map_u): # <<<<<<<<<<<<<< + * """ + * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. + */ + __pyx_tuple__34 = PyTuple_Pack(4, __pyx_n_s_map_u, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_encode_your_map, 1423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1423, __pyx_L1_error) + + /* "gedlibpy.pyx":1441 + * + * + * def decode_your_map(map_b): # <<<<<<<<<<<<<< + * """ + * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. + */ + __pyx_tuple__36 = PyTuple_Pack(4, __pyx_n_s_map_b, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_your_map, 1441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1441, __pyx_L1_error) + + /* "gedlibpy.pyx":1459 + * + * + * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< + * """ + * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. + */ + __pyx_tuple__38 = PyTuple_Pack(4, __pyx_n_s_map_edge_b, __pyx_n_s_map_edges, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1459, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_graph_edges, 1459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1459, __pyx_L1_error) + __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) + 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 ---*/ + if (PyType_Ready(&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_8gedlibpy_GEDEnv.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8gedlibpy_GEDEnv.tp_dictoffset && __pyx_type_8gedlibpy_GEDEnv.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_8gedlibpy_GEDEnv.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GEDEnv, (PyObject *)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + __pyx_ptype_8gedlibpy_GEDEnv = &__pyx_type_8gedlibpy_GEDEnv; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(4, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(5, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(6, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 206, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 229, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 233, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 242, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 918, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("array"); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_5array_array = __Pyx_ImportType(__pyx_t_1, "array", "array", sizeof(arrayobject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_5array_array) __PYX_ERR(3, 58, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +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; +} + + +#if PY_MAJOR_VERSION < 3 +#ifdef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC void +#else +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#endif +#else +#ifdef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initgedlibpy(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initgedlibpy(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_gedlibpy(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_gedlibpy(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_gedlibpy(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 = NULL; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'gedlibpy' 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_gedlibpy(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(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + #ifdef WITH_THREAD /* Python build with threading support? */ + PyEval_InitThreads(); + #endif + #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("gedlibpy", __pyx_methods, __pyx_k_Python_GedLib_module_This_modul, 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_gedlibpy) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __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, "gedlibpy")) { + if (unlikely(PyDict_SetItemString(modules, "gedlibpy", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error; + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) goto __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(); + if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; + if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; + (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 + + /* "gedlibpy.pyx":115 + * ############################# + * + * import networkx as nx # <<<<<<<<<<<<<< + * + * # import librariesImport + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_networkx, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_nx, __pyx_t_1) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":118 + * + * # import librariesImport + * from ctypes import * # <<<<<<<<<<<<<< + * import os + * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s__20); + __Pyx_GIVEREF(__pyx_n_s__20); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__20); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_ctypes, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_import_star(__pyx_t_2) < 0) __PYX_ERR(0, 118, __pyx_L1_error); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":119 + * # import librariesImport + * from ctypes import * + * import os # <<<<<<<<<<<<<< + * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') + * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":120 + * from ctypes import * + * import os + * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') # <<<<<<<<<<<<<< + * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') + * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cdll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __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_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_fann_libdoublefann_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib1, __pyx_t_4) < 0) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":121 + * import os + * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') + * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') # <<<<<<<<<<<<<< + * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') + * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_realpath); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __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_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __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_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_u_lib_libsvm_3_22_libsvm_so); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib2, __pyx_t_2) < 0) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":122 + * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') + * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') + * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') # <<<<<<<<<<<<<< + * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cdll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __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 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_nomad_libnomad_so); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib3, __pyx_t_4) < 0) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":123 + * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') + * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') + * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_kp_u_lib_nomad_libsgtelib_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib4, __pyx_t_2) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":126 + * + * + * def get_edit_cost_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents edit cost functions and returns the result. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_1get_edit_cost_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_edit_cost_options, __pyx_t_2) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":140 + * + * + * def get_method_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents method for edit distance computation between graphs and returns the result. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_3get_method_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_method_options, __pyx_t_2) < 0) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":153 + * + * + * def get_init_options() : # <<<<<<<<<<<<<< + * """ + * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_5get_init_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_init_options, __pyx_t_2) < 0) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":166 + * + * + * def get_dummy_node() : # <<<<<<<<<<<<<< + * """ + * Returns the ID of a dummy node. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_7get_dummy_node, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_dummy_node, __pyx_t_2) < 0) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":483 + * + * + * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an edit cost function to the environment, if it exists. + */ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 483, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_k__2 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":502 + * + * + * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< + * """ + * Sets an personal edit cost function to the environment. + */ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_k__3 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1352 + * ##################################################################### + * + * list_of_edit_cost_options = get_edit_cost_options() # <<<<<<<<<<<<<< + * list_of_method_options = get_method_options() + * list_of_init_options = get_init_options() + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_edit_cost_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_edit_cost_options, __pyx_t_5) < 0) __PYX_ERR(0, 1352, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "gedlibpy.pyx":1353 + * + * list_of_edit_cost_options = get_edit_cost_options() + * list_of_method_options = get_method_options() # <<<<<<<<<<<<<< + * list_of_init_options = get_init_options() + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_method_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_method_options, __pyx_t_2) < 0) __PYX_ERR(0, 1353, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1354 + * list_of_edit_cost_options = get_edit_cost_options() + * list_of_method_options = get_method_options() + * list_of_init_options = get_init_options() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_init_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_init_options, __pyx_t_5) < 0) __PYX_ERR(0, 1354, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "gedlibpy.pyx":1361 + * ##################### + * + * class Error(Exception): # <<<<<<<<<<<<<< + * """ + * Class for error's management. This one is general. + */ + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_Error, __pyx_n_s_Error, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_error_s_management_Th); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Error, __pyx_t_5, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Error, __pyx_t_4) < 0) __PYX_ERR(0, 1361, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "gedlibpy.pyx":1368 + * + * + * class EditCostError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Edit Cost Error. Raise an error if an edit cost function doesn't exist in the library (not in list_of_edit_cost_options). + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_2, __pyx_n_s_EditCostError, __pyx_n_s_EditCostError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Edit_Cost_Error_Raise); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "gedlibpy.pyx":1375 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_13EditCostError_1__init__, 0, __pyx_n_s_EditCostError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1375, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1375, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1368 + * + * + * class EditCostError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Edit Cost Error. Raise an error if an edit cost function doesn't exist in the library (not in list_of_edit_cost_options). + */ + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_EditCostError, __pyx_t_2, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_EditCostError, __pyx_t_4) < 0) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1385 + * + * + * class MethodError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Method Error. Raise an error if a computation method doesn't exist in the library (not in list_of_method_options). + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_MethodError, __pyx_n_s_MethodError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Method_Error_Raise_an); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "gedlibpy.pyx":1392 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_11MethodError_1__init__, 0, __pyx_n_s_MethodError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1392, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1385 + * + * + * class MethodError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Method Error. Raise an error if a computation method doesn't exist in the library (not in list_of_method_options). + */ + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MethodError, __pyx_t_5, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MethodError, __pyx_t_4) < 0) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "gedlibpy.pyx":1402 + * + * + * class InitError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Init Error. Raise an error if an init option doesn't exist in the library (not in list_of_init_options). + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_2, __pyx_n_s_InitError, __pyx_n_s_InitError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Init_Error_Raise_an_e); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "gedlibpy.pyx":1409 + * :type message: string + * """ + * def __init__(self, message): # <<<<<<<<<<<<<< + * """ + * Inits the error with its message. + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_9InitError_1__init__, 0, __pyx_n_s_InitError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1409, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "gedlibpy.pyx":1402 + * + * + * class InitError(Error) : # <<<<<<<<<<<<<< + * """ + * Class for Init Error. Raise an error if an init option doesn't exist in the library (not in list_of_init_options). + */ + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_InitError, __pyx_t_2, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InitError, __pyx_t_4) < 0) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1423 + * ######################################### + * + * def encode_your_map(map_u): # <<<<<<<<<<<<<< + * """ + * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_9encode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_encode_your_map, __pyx_t_2) < 0) __PYX_ERR(0, 1423, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1441 + * + * + * def decode_your_map(map_b): # <<<<<<<<<<<<<< + * """ + * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_11decode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_your_map, __pyx_t_2) < 0) __PYX_ERR(0, 1441, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1459 + * + * + * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< + * """ + * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_13decode_graph_edges, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1459, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_graph_edges, __pyx_t_2) < 0) __PYX_ERR(0, 1459, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "gedlibpy.pyx":1 + * # distutils: language = c++ # <<<<<<<<<<<<<< + * + * """ + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___") + * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /*--- 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_5); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init gedlibpy", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_CLEAR(__pyx_m); + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init gedlibpy"); + } + __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; +} + +/* decode_c_bytes */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes( + const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + if (unlikely((start < 0) | (stop < 0))) { + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + } + if (stop > length) + stop = length; + length = stop - start; + if (unlikely(length <= 0)) + return PyUnicode_FromUnicode(NULL, 0); + cstring += start; + if (decode_func) { + return decode_func(cstring, length, errors); + } else { + return PyUnicode_Decode(cstring, length, encoding, errors); + } +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* KeywordStringCheck */ +static int __Pyx_CheckKeywordStrings( + PyObject *kwdict, + const char* function_name, + int kw_allowed) +{ + PyObject* key = 0; + Py_ssize_t pos = 0; +#if CYTHON_COMPILING_IN_PYPY + if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) + goto invalid_keyword; + return 1; +#else + while (PyDict_Next(kwdict, &pos, &key, 0)) { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_Check(key))) + #endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } + if ((!kw_allowed) && unlikely(key)) + goto invalid_keyword; + return 1; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + return 0; +#endif +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif + return 0; +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* 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 + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* 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; +} + +/* 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 (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + 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 + +/* 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); +} + +/* 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 + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* 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)); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { + PyObject *runerr; + 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 + +/* 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 +#ifdef __Pyx_CyFunction_USED + 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 + +/* 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 +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (descr != NULL) { + *method = descr; + return 0; + } + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'%.50s' object has no attribute '%U'", + tp->tp_name, name); +#else + "'%.50s' object has no attribute '%.400s'", + tp->tp_name, PyString_AS_STRING(name)); +#endif + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod0 */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } else { + return __Pyx_IterFinish(); + } + return 0; +} + +/* RaiseNoneIterError */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* UnpackTupleError */ +static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { + if (t == Py_None) { + __Pyx_RaiseNoneNotIterableError(); + } else if (PyTuple_GET_SIZE(t) < index) { + __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); + } else { + __Pyx_RaiseTooManyValuesError(index); + } +} + +/* UnpackTuple2 */ +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { + PyObject *value1 = NULL, *value2 = NULL; +#if CYTHON_COMPILING_IN_PYPY + value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; + value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; +#else + value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); + value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); +#endif + if (decref_tuple) { + Py_DECREF(tuple); + } + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +#if CYTHON_COMPILING_IN_PYPY +bad: + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +#endif +} +static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, + int has_known_size, int decref_tuple) { + Py_ssize_t index; + PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; + iternextfunc iternext; + iter = PyObject_GetIter(tuple); + if (unlikely(!iter)) goto bad; + if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } + iternext = Py_TYPE(iter)->tp_iternext; + value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } + value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } + if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; + Py_DECREF(iter); + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +unpacking_failed: + if (!has_known_size && __Pyx_IterFinish() == 0) + __Pyx_RaiseNeedMoreValuesError(index); +bad: + Py_XDECREF(iter); + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +} + +/* dict_iter */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_source_is_dict) { + is_dict = is_dict || likely(PyDict_CheckExact(iterable)); + *p_source_is_dict = is_dict; + if (is_dict) { +#if !CYTHON_COMPILING_IN_PYPY + *p_orig_length = PyDict_Size(iterable); + Py_INCREF(iterable); + return iterable; +#elif PY_MAJOR_VERSION >= 3 + static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; + PyObject **pp = NULL; + if (method_name) { + const char *name = PyUnicode_AsUTF8(method_name); + if (strcmp(name, "iteritems") == 0) pp = &py_items; + else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; + else if (strcmp(name, "itervalues") == 0) pp = &py_values; + if (pp) { + if (!*pp) { + *pp = PyUnicode_FromString(name + 4); + if (!*pp) + return NULL; + } + method_name = *pp; + } + } +#endif + } + *p_orig_length = 0; + if (method_name) { + PyObject* iter; + iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); + if (!iterable) + return NULL; +#if !CYTHON_COMPILING_IN_PYPY + if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) + return iterable; +#endif + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + return iter; + } + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next( + PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { + PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY + if (source_is_dict) { + PyObject *key, *value; + if (unlikely(orig_length != PyDict_Size(iter_obj))) { + PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); + return -1; + } + if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { + return 0; + } + if (pitem) { + PyObject* tuple = PyTuple_New(2); + if (unlikely(!tuple)) { + return -1; + } + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(tuple, 0, key); + PyTuple_SET_ITEM(tuple, 1, value); + *pitem = tuple; + } else { + if (pkey) { + Py_INCREF(key); + *pkey = key; + } + if (pvalue) { + Py_INCREF(value); + *pvalue = value; + } + } + return 1; + } else if (PyTuple_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyTuple_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else if (PyList_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyList_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else +#endif + { + next_item = PyIter_Next(iter_obj); + if (unlikely(!next_item)) { + return __Pyx_IterFinish(); + } + } + if (pitem) { + *pitem = next_item; + } else if (pkey && pvalue) { + if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) + return -1; + } else if (pkey) { + *pkey = next_item; + } else { + *pvalue = next_item; + } + return 1; +} + +/* PyObjectSetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + #endif + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type, *local_value, *local_tb; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'%.50s' object has no attribute '%U'", + tp->tp_name, attr_name); +#else + "'%.50s' object has no attribute '%.400s'", + tp->tp_name, PyString_AS_STRING(attr_name)); +#endif + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + +/* SetupReduce */ +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#else + if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#endif +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto __PYX_BAD; + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto __PYX_BAD; + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) + PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType +#define __PYX_HAVE_RT_ImportType +static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, + size_t size, enum __Pyx_ImportType_CheckSize check_size) +{ + PyObject *result = 0; + char warning[200]; + Py_ssize_t basicsize; +#ifdef Py_LIMITED_API + PyObject *py_basicsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#ifndef Py_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if ((size_t)basicsize < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* 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 (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; +} + +/* CalculateMetaclass */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; + PyObject *tmp = PyTuple_GET_ITEM(bases, i); + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* Py3ClassCreate */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs = PyTuple_Pack(2, name, bases); + if (unlikely(!pargs)) { + Py_DECREF(prep); + return NULL; + } + ns = PyObject_Call(prep, pargs, mkw); + Py_DECREF(prep); + Py_DECREF(pargs); + } else { + if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + PyErr_Clear(); + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result, *margs; + PyObject *owned_metaclass = NULL; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + margs = PyTuple_Pack(3, name, bases, dict); + if (unlikely(!margs)) { + result = NULL; + } else { + result = PyObject_Call(metaclass, margs, mkw); + Py_DECREF(margs); + } + Py_XDECREF(owned_metaclass); + return result; +} + +/* FetchCommonType */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* fake_module; + PyTypeObject* cached_type = NULL; + fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); + if (!fake_module) return NULL; + Py_INCREF(fake_module); + cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); + if (cached_type) { + if (!PyType_Check((PyObject*)cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", + type->tp_name); + goto bad; + } + if (cached_type->tp_basicsize != type->tp_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + type->tp_name); + goto bad; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; + } +done: + Py_DECREF(fake_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CythonFunction */ +#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 + return PyUnicode_FromString(m->func.m_ml->ml_name); +#else + return PyString_FromString(m->func.m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); + if (op == NULL) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + op->func.m_ml = ml; + op->func.m_self = (PyObject *) op; + Py_XINCREF(closure); + op->func_closure = closure; + Py_XINCREF(module); + op->func.m_module = module; + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; + op->func_classobj = NULL; + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + PyObject_GC_Track(op); + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); + Py_CLEAR(m->func.m_module); + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); + Py_CLEAR(m->func_classobj); + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + 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) +{ + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(func); + return func; + } + if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { + if (type == NULL) + type = (PyObject *)(Py_TYPE(obj)); + return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); + } + if (obj == Py_None) + obj = NULL; + return __Pyx_PyMethod_New(func, obj, type); +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + 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); + 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 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b4 && 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; + 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); +} + +/* CLineInTraceback */ +#ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(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; + 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" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + 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) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + 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); +} + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value) { + const npy_uint64 neg_one = (npy_uint64) ((npy_uint64) 0 - (npy_uint64) 1), const_zero = (npy_uint64) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(npy_uint64) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(npy_uint64) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_uint64) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(npy_uint64) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_uint64) <= 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(npy_uint64), + little, !is_unsigned); + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= 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(int), + little, !is_unsigned); + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#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); + } +} + +/* Declarations */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + __pyx_t_float_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ +#if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = (float)(1.0) / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = (float)(1.0) / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ +#if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = (double)(1.0) / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = (double)(1.0) / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif +#endif + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(enum NPY_TYPES) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(enum NPY_TYPES) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(enum NPY_TYPES) <= 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(enum NPY_TYPES), + little, !is_unsigned); + } +} + +/* CIntFromPy */ +static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(size_t) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (size_t) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { + return (size_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 +#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 (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(size_t) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, 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 (size_t) 0; + case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) + case -2: + if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((((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(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_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 + if (sizeof(size_t) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, 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 + size_t val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (size_t) -1; + } + } else { + size_t val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyInt_As_size_t(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#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; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#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; +} + +/* 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; ip) { + #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 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 */ diff --git a/gklearn/gedlib/gedlibpy.cpython-36m-x86_64-linux-gnu.so b/gklearn/gedlib/gedlibpy.cpython-36m-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..e950062a8c7c79d9e738617614a693f744c4f9a0 GIT binary patch literal 33486048 zcma%k30#cd_y3(~%9LWFRbtxrR6-)Ajf#?N5gLRDg)G^cQbb{tDC>w4LP)YF*^^3k zlB`*?%aZ?j=G=L`zMp>cyk7tFdcC{PobH@^?z!ild!G9|^E~msg9mUq92G)Ih4dpF zIIi!bD(8qOU-q_zVarKG+(;WDA{NA4UKeXB{`=q3{IZ^$p(qIv%0Dy0)BurJ@&A!m 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�{8%Y0seqMKoH=63C`BwCom(yeBn@Mn-0$2q|1*8Gi0@ef4 z0U3ZyKo%eyuoXRs0Sp6-1cU+< z6h@E7LOBjFo_-e7lBqWdjwb`A0;U6I0%idiil!xVJO_^F0_IWPLMY<^ivi035IE}DAxj{fDM35Ko(##U@KrdUQW}w{_nbr?#fo^x@$XvLvzghX0^HaZODao+Jn0mrj8!{@4)@`6Z@=w z(0MX<^@a3Nx5t*~8BW^u@nn3*RgPb-H;)c0`kKGkd)^{TN$*QFA$<(zXKEhP>{sGV ze5ajPlbQ?c+jlGaYPYF)uK$`1M;up9JO3>3lw*x+kGf;GR6hy(E}B{zni5v&VV{?4 zU3y$NA&_HLP+Sn9-y~d`Q`D_F*WJ2Tu&y2F(&1h!FMT!7nZ0c2?bV)V3%~c`H_RDx z{O=amC#T%*?1`TiF?IZQ_nTq1W`lP)tWWcp@Ji1)NH%cC@%pm2yh9Z`9LgWm8U(hf z-M_ro^l7`BdV3jUxI8l1Sn+t^uZJ2va%?UIjy+Z`y0Dki;q3Iv$CcCP#tSs`uB>{X zyEg0GFjv?2_BLE=?_Peh9{EpA32QX!=j?o7al^SjcXsZ+wa?usE868q-o@dwXZ}nc z(K36-A*VJ+x))wHy|86s{Fty0C!eJ+88ocsVzujwrvVqdl05Y5M(q|y8U*iL=Oi0n z#Q!q*T(1_M-lOf4lkUaOo?fOoxNk^Qgr;W3j(qE!=$XUkyT5zuA7$UAq+ytUpY;j0 z9Y%fgNZsbQid%nw>z1jy-#$*(_w#nikAL|&`p)*JE>Bi{iU=J$A+TAmXtTkY28nK$ ze+`#Px}|OveYA4UeBkah=ec8IOxC*o<0K|=(O2t^9JuV;eXUtx>Zg@2KKib`kp5!A z*l*(>e|ptnh@fNK*m;rHUI%C`tM=g(v$`;G=rCv<+58p_vMl~m$KcojFWPA_O0EYwX*lC3BrNT%K~z$w~9=^M*BGTd9-r2%9lr% zI!_Qc^s=0kW#T!`Jxp2+X)N>oQdbvK&F-ujCd@xS9Gw|P-=+&=B4T*D@ z*7U?Ps_~6)_kb3=j2py0&b3`ihsP(cj~kGY85gVbar^aU86?yBNL_q!%%q{-lhtmS zsULi;)^KR9zEg6~{P?;TE>A|Jcr|-@mwVqgFWIbq&%DQqNJFD-NhWb;>fSm?1Ib6n zRl_58lt%^6Em_v)Y+9_HZ|~8;Rk0NT8|RF?)b@RV)~F)i_dZLrI)1;|iJ!J~YL0Q;8t1=S+o|(C+md;OHAP*#q6*IOrrt;%+hd+V z=Ay%O3u-oQYSFZKo2FfmJ#kmJs9j66S9JQ?*J}H)DgS2UO0;a%h`uVL7lOWPeI`S#(M?XVG$Fx5by6g9jUB2RLc!h3TwQ-&hi$ ze{w*?UFvoG^Ie&j>*LZ%-S&R34U8;()Zxj`$$74mgMS?V{jh%Bzo=b{ZZGn0 zzheG+E8`mHH@7~v^UiiYQW~0e{!MH|`J-xOq>?DoKB(y$8}-5OKwT0L26zS!|uw&Mmj zo0G@t7TDa}>zdG^{k})(aqgzi8eR7mIeBU<`f)R(LgXdhFmPYEOy~Q)X^FPJzD~`> zHI{x;@@mFaMybE^n9(C(__ zVjj-7?&uYxVxIEMdf;=ZpY1j?k##{(ij@EP$ig$zSEjw>s(6j^zjLIka9PB|wohWh zK1?tVFAiutd-rsJ{;!%#y!@yn@8`NL3%}g$G9p&2+C6>NT|eu-jSqn@{O-pjj#`7IPKmnf^9%3)eKF#jm03Tw z9^+cQDl>eBj9k%U4s}so_M7vwli?q|TrXF(zQ;fRZ9HD}J)-xPML{uB zmwY%KD|)@IqRYie-QKw`uRXKQE^lqj{_OOL$Fw&M+P^pH=+L1TT8!UaGFtVq;%Iqk zi+||4zmFY{efDv@GR+=o{W#g8b06{4n7|EYz> zLwbt>GDoSKpNN{+Vc7QS4O_J}Y9DQFJ8k~U0e5vTb`P1eJMUDT(Z>zhU_<$W&y(xiJ~Vx|w9((|uKlo= z=V$kY=MQi1Qn1daEM9M|)2wUHHpbbTj{6m|v?5^i0Ei#8S)~`XQrpdfG!j?XwP<3hF5d+?Mi+;y+8X98A&%TzoW>#&V&Oi1?i2lBA zH?Y&MX2024ZZ-uaTH2`#EPN~nziqHheI96?mu@lXRio?5sd*Bu>hp^(EGn*e7gF}1 zV#9+is`uTV1iDPSx?Xzj`i$`(<{WJAU_P*ZM6Vq`r#2S0F;Dq0@yV38X)`M?Z1~4t zt(80F>_okGy7QujKj9^uUv_V7XhCY)%kIY)p4s4M-5991=+fDipDKpu1N2=Vbs5pd z;&D*NJ0rq2tejq$uzA*Oo$&_MYdBWnpSx=m+$-6dk^PF-CP^CiBFy!S;W$mRGJX_4 zQT*BO+86#$bK~`5k$wN=wI@SjriNdg)U91fdFgdePWKOb(Khdw+`L@Yxt(;z+54BG z2gu%?b~koC^wQyThtL5he+cv&S8OM5>R*MAn)M+5!;riY_rHb?-te%XBw}=(X@qn3 z{jl`OQyTcZllF!SKG-ZDS+;A#u7pg_$3Mpzu6VrE>#FS?@8gjzdYiX5Pa3XS=lJcr zWz=k!c~0(?&8p289n7yM34-TZ_tzE=IF)GMAz83JjoVFjpz}ZzwY}cHx8H5nlJ<>T zFYSBT%Sy}S*SgrxClU&E>Mp!U-o!C*4YE)Cki7A6?6?b`a;zRk3kHgxAKvO_)3B(} za!XG1hZS)npTAxhvh2o-IgW2`Hl$sN%9H$9Ak#G&zU0{nqn4bww;#g~?@bx)*Rwfr zkZ)p~zkWiO!s3M7Cx50kp6K3b?yBow+q!nWu<5nV73&Dj@Yz2NQ?HM>*F3$edcyg< z1Dn&|txJ2kH}l05Rh{rHAAVaTbSS^PV49H|r&84_{Pp>SBhFWem*JVM8AH-r7H<8T z^sC$4j7_f`hd6}4xL5aQWX#m@=EhxSc`vU$obzmZWW_VDIL9%5zxzFX7Lz$SYV7oG z$A(5~2L%=XDNX7vjbHb{)~D`zWmmIyw2~{o3_$_T8Rm{e~^SVSC50 zOJ)C<=I@p-xG8PFbHdNwxcbN6Hz-cv^Y@~|?0%Kak22J}y6bHnP|=j&gONslLexU z2^riW#pyvl6HLO5mUPd1p6eL2;nmUk*S&tIhjy0jGkfMBX}6S<>Rst51(X>0v*?eTQZ)@wyBs_L(U-)=eCTO;?C!BOMm#|lC} ztzLemylA9)``I=>t-5IBSzPV9^h02QLCNwC)7yteZFj1u-m_~&+Bowa33vCrY4L~) z)IWXF=C)bC0==KZ|Adx&81iXIst)f$`sX>GcB%SrT2A~u>Ut)))BZ08Ut!O~PY^rq zNWA*8uQNN`)er8tG=nqo-RUX$S3ZtZ3wYHq+I4t<^!<-L+cypVs&O#R@NJ9jfT_i6 zyp!$(dXC*3NE)6B(BZ|N`3x^=Cx`FXQR-&LR9W!fDne|PHs z0;};quf{HHU!49t?8pPo%#y;!s*gH0kuwgKh6J8Jy`rkf?~2x*pck%-7Tw=@;pW<` zjIaCaW%&p9j8-3W_xTR*mP3PjL{|^K&+Btxi!5U3Qp>NKFHL$AKcxHkGEQ%^eOvW^ zeOl?hs5!BGr?>1{QAE_-C)1`#`h*@gKECF=QQIk*mp`a`8wS1Eaa2#o{Nb^?Ca*1? z^?c-0cllw@Av%Z06kg~e+B@U`zd{TzO2+fr?p z1)g@~;MnRLMsHenkIWB^Z@kqv!0}asa8JpQp%ZUUOG+`(o0B})Nc?HT$wvLT*{T*h z*Y(sZTNpZV^@zEHI~Qm_u#7xza(PDf=F=%UJKt|T`>U=0t){nDQ=CpYkJ|CqZD-#{ zjopg`UElfo^yrbNziW5H@Tqr=d+oPR@tAQ#s($3LSncc>wTpJO*FKgkw>~bqWHDWq z=`lF$)TTAvO>1bx@I?Tcp=Qu6SnJ?nr)b9DC6B(PKInPpJBIfEg8Gc zTI<%;HA7y_Jh3+T#;YB|3+*RW=NH`SG1x%uTK>e*J8V}hI`Cnb^9_xB%Z4H44FVp2 zgritAqqzLt-G5rMYhzP-g;)EW@%(dXfQ41bt!>6BGoJ41zb~;S>SjrR&Bg;iyKOaI zG_g@hL-BbFZ7V`BNYcF)2GvEgHjpT3L<>YU=`9R2b8YgLPH)54nv zby!%xJ2kbB=g;CY2d_g>PCK zT|YjWQ1^0*v`Mz*tBU>&>6=qGSMBXzJ-%k@r1ekv_QN;uhUV%uEe%X7oiOD|{j4!- zPQLz;Q(RX&wC5agv}S@!c;}?j)!7>#ZJYb&+2_WPYT=mfmKy#IjbXaFi(-mbuAdf` zBVEqfXCL6xBWY)J$kh!Vd1;BmKKFV&W_sebvH>GLOtBt$bJz2=e-ekgw%Cl%Innd0 z)rA+~o||miulU+Cd8LU|x^H;$)zf9Nlh?`ld$pc}!xC18U65_`8@Hx&`0g87hewKj zYjR(hY4+*a&Y`BS;N84Y3)kh{>fX8U=VfoId}BGXs#zglt_DXHF3Uf8{CbCFs^#B1 zewdjxKz){$#}3Di-gasJ6R+GIvt>w|m$Aja+MU>Vs7Xh2=&QQsOW&sDkvH1j`Zv0a zHwoHr^tO1O#i1v&^RG^?Ey#XsyxGmb?o_wPqn!lH9BMtLmnJ9p>lgEXHkO_LzN3F? z=!9({l9^6R4p{cqU#$H#>{rXG>LayLnfJJN)m?`Fik{VH)1by{cGuSR@w^tQwj!Zx zv5_>HcfMqP`K%~SzvM5bIj)k=^WN#EsQX?x<^43L;pLQ^;;ro`h4Mx`-C{lX`3jqR zbLXx4c;fD@31k0sp1XR^$bDS9m(Tv@hOhloBWt$abt$~(p5nSa&+2Cx=gj>R{7@P@ z*+tcb^Eo=OH1PGuw4yUJXK(m6B<|^$>2s`#CQr0F?9%tsC+!`9JX2C&-Jj%aZTF#*g5z0npydKeb1d(^QqmjPs{F`%B%;s)p#CnnQC+I zecFlNTZ!>p&Z}_Gh5L)^UcaiJwdGCvsmze+b-4pCniP*49TS-DW?Osl$p+__%g+ut zef#!qv$2=B=R4L&PJ7ioeJMLPX{~OL()QirPHv6pcr@$VkmY9QPQTu^cz30V=I)oV z?k6V@dDpN&92|Oii8svcINe^Rva_UEb^(*LIEH zV54QK*NnxP15f)6+T%WO|K)v$F7KNgShl@!==$55fuG{wJ54`6y%lDi;tq^YEGl!f z-*{(!#jUw>2X^^>rb4`Oicjx0S6&!73>|h$ym)zZ-i*0M>#}|L3y+Bm8yD+^J#1U_ zqR#=J8;N7|j`ZY?wx9Oksp`Tu9lj3oa%xv&7%`xookOM01O21C$htIkCzuzE^3V@DoRFy%~LsI1S9Te`J`UVL8ZfTjTJeTJ;5@ zvhn$D6_KXbC!Fq-UOH*F_22;=ZSPf$m|e4D;HPaf_ibTMn=9x0^)oi!qc%RHs-h&hAzqxG z4)jc$Dp+c#c|3Gky|5rBetGnHpS%t;?D|&q+E-yxaN+5GmfNAel@bq#6J3Z8qu0I6P~SX+h+sEZpdKUD!naj z4`=zh2{qQN)VIC&)PCyPDcv~Bq`PxRr+YV@?K*YG)u3#BH67PZH^-jZ6S4l5p<&OO z%1(Dxul(M4)cC5wwSwJw!Yy29wZ1QJU(+1@rq`dV8@F#b6SeSPY$ubo-MW8HYY-V5 zHT&KSZ1-CGa?3|+v$|fsahx}@;e zj@2c}vrc%t+qAz;!zBLOl@UfuZt*<|ex8_LSvzRvtIO-_K4iWMU$dfnm7mW0!=I}r z7nVBD9W=Csn=$N9^|Ls<3Y39vF6;5+?DH46^CE?dRTrwqHIiH}7)OxN%+f zrsZ8LZmEmcte8~WYg4~sy?(krW74lJ39-~NDoowjc4D7Z-%^XR3ts8mO`7v!m8pmD z*zU#N9WH9d-5S_*wmj%*>L;Uz>%W$NyR%oC@a}D9%939(mcy6ids~gt`KvPORwv`F z_Yw;1`u_VnPuKhoS6k{3KFjd4l=Dfrz(0=j+bS>D$Fhg-s4fl>m)&lhc3d>{wx+(h zN9E^*?=w#H3@Gl-Z>U}Qu*Q4rC83(#Q2!BirMk|Vb~m3nA6Gdm(~)H?EKo6tKcgq@ ze&zX`T0fn;1!-qeKrmIbL^4FpYBavPe0RL_xulk*sgNN(T<&7 z81-9oNB5ll(tTci_8R(zT!=E-(OLWO9JR0+87|8nFSulIY;H=D9&jJiZ`)a!q;8--|JzmkG};nzo_`Xblef{(*D0}a(}Jz`sQ$Br7}6E z1360h{Y;hD?{!wW{1>Tk|BMoSwv1LG+DiC0*D04{7_3|lCrEkyesCkJvVJ9vP%fun zm~y^53xAG@icSE+2<0*GIod`FPz9QErFvEOx#PH;yXP|L|Moau%@k>pt8ts?1NS;AU85{242h z>z@JkR91h#jdJ;WSmt9Ci=G?crdDP053%TD6QbPy?}u`f+HKDr<@y_TRo?CmmT`P@ zS-D@StWmB{P?qv`Cm1Ln$Gt4^?I--?L76{z*ech5C5vAfvH0!9A=vOOd|H6w+MdRrEFY!v#f&!la%|_fkfrwII~%KyA?;2*N=m<3}yPXK-^GfH$6+` z{xFther-FaT)rO5xLiw9-rwQo%G=$|BHy27d?&KR&juF$QdvCO+D7Jrz*B4-rK zI@QP$e;$V@9~a-{%K61C@x0So<#wLJa=xI-GJiL-#IbEGelnjW50tUwW1EgD_a6rq zIk&Bp_sb08r?UKTK8v2WS>jShmT}>nS3a-DvG`#}mi``K$&p_B^MwGGyut?Jo-%)!#^P@# z5D%5b$y+S`V8_Bg>!sXJ-m~~^Aj>|+!T{y^gu!?z(^CX|W$}C)OP+R+B`(>rV3v6Jhs94?SjO@BG3D*fV6pQ-3+3}` zid4BAKbG}~H%z(zEQkC@nLoR-#Jw#n`(`&;&Z9T3Qm$tr#7SlCo?%%>99YJEE=!!e z&oVEJS@tEeS>l5>i#>lHQQj{@mT|0Q>DLeV@vt&KKhF{;ue11}HOsoNhDHAjn5W9@ zUtg-+Pd>2ZSL;~T_Y*96_#hTJn^^K9b(ZmUzpLE-BUsj{({TQx%+5(H_H<(5Gek|vGNi6H{8y36mU>V2tEb;0%#8qYe<+Au^JC?X~0M1{O$+^WcULRQO`I)8N zFD!QR*s5Irqbzd#S2W4?4ZM||iKUm^+K1-hPoFzW|VmaUU zAEVs<%`EdJki{R`v-poQiygMH>_2CM{>tW8E{hzKGUa*BO_q3afhB*i8>n2)uxZM# z1E#U83lG6>mFeG`B~EIy#0LYGcv1>>Rwn;8%eXtR$ggJcx6v%)JB7vm9qX0rvyVj| zZ3pG?a~aEi%TJbZjBr*yk2=F%DQq48AL_V9`S=F1@atICofRzpX~nW%(VNBonJoLU zEiC)weOcCVoq5XV??IM*$YPdpabuakg)H%KAIpBGE=%0deWKh?s#*38VvCg5AI&l^ zbgwC|@6WRCw0BbOKaW}Lz&y@L_vx&F2+=d<}N;}U*R`Mj$D{k4_Ya|Fx&#u*kr{L0d9ChTJ;Wq&x4B_CV;lDRIaN$O=9aw~yYIjy+Hk@JOxTJq1Z zoh7HfvB-Ctrz!u;JRgmrtEJ4m&?HS^@WXK+=9y^>72Zbqg_bBk0oh~=#Ag$D$f59B zPdP_G`8DvcD@LDS30jGHb`?X14#4vbpnl99tRI7H;tLN@WB7#+knczN<*?t*$Ps;2 zmveF{zi1=sDbq$h)hJ(6RYhK3{2o`m2~_{p_fd|MKeZ2i2F-PNKpZ2#^ex(95Pkm9 zN=(d-0_EY|F zd*l~(MgDj?jt4!kzxB6J6Dpqg?ZW!v?&zQAshqZ3sGcVO^{d@KkzaTM`R=s8=`8ai zM+@bbu19}3PV2uqfOZQOqCP(;|0=|P#-2jv;T%8;`*ec`6f*s-T8ZNbUzgL=wrICt zBODQ3I_{|tsU3XKp5rM$A0EWV$dTSb`z)Y_I4(uLuo-9WViZrR^S<{ zNvdbVGUPX{Lq41i$mvNtv_s(}w1eWAbf=*Ej6DnK!;jih`N!cwj|`v8Mg5s)c`{sbLw2z`+R$VCnF^(_u>_3Jiju;O^X*@JQHhFag^%v9m=tB8- zO0Zq|16Y7(Lizt1&_3dHoJZgua{37RGxiZ~M|=LJ{N@#?kF*-~Y@+-d3CJ(J{$GBs z6UwRIf|lt{?RkOvzr^gn{;wB@a+(TIjxG(jC)c8$Ra&U0J8idrFXYG6pe5 zFIg^S3A%>sMVtJ3piP@7Rs}m>w7(ny7sKAnNCL(Ef_`WeA+FF?w2GM?I}+{d@CK zf7#3b>c9CN%4s_OUqAG8L;J@Rp#7cbJbgQzwoAvoE0yo2$fLHQoZqzm9v_q=J&SVS za*~{)f-s&`*H3cUh3CQzr{jJf?E~9ca!Q5;g&B9*L6i^M2y$wG z^Ed%KlsxhTOsM~%g*K>vOcmNqF}|}PL1N;V%m&9%K;;;=Q2X4)elgF-WatMd#?%+k zxTmoH;gM+n!kcJkh5yIFLrobyofiBz&fo5a`a5N#{<+j{59oS9o}!*duvy{=4_0O5 zNV}jM=Gkrx&4c|Vh96^thEzN!*w>8q_a@3w*mGkc%4rJwuRd?*V*TLfSRcMFr=bft zWGC3Ov;^&`kW-?8^G>RZ7GR!r$IudhyuXzwhq6g?7TS&Ip`9PfYs0g@N|4{gJWvbB zg!21L#(u%`IpiEgp5rhI`Ar7M-$DbKeImBoI`7rD!TO?9w6i<4^8ncQVCGBJD;zH& zZCAe$>k~7KGm(`4=QGMLq+9-$o~X#K(fs{cLIhe!3% zk*p8I$N4^D>Gg=GnFSJGbLpmp?GI#7(XvKg1@KQat>(qkl zMF5ra0M3gUI~dgb*ADBC;kXEU+t>C$v6e;TeMiu|nyOMZUG7yBzakA9_yw}tRf@11ad zB$A>35ISB*;r9`8yEUUeeQ3KD38=s9C64a`%Fhi)K50O{kn-JE<9PAucv(|^0X(pn z@vDWE|MkNUZ%~fl0NO{f4ubE1}BdDihU2bSY{q_~s$5{{0mmY(1np)-6tGA&& zgXuc1h+~}&AzxyTc2>ltX}!@7LU$a;8`M4;@pQZ{qWzg?%Q7?__O%#2C3K!DVVaWD+EM&Jp6!m+erD6_0;~qP<|qvzu&!4j_?GI<20)1!}X}YR0H*gFeRtZ zEUX`V6fJXu%8{|;?dPLWpL)8EEA)TUANj&s)RVeDiDJpaRb8pw?9pzDd2u8H^^y9c zK8m=l1N#PYKg|2DANo>1Z2FFVSVi?W^`qwP;>*Za z6NJBxDB@QQINb?%yfjj)QiP+`tj6K(msRM(S64 z(SLMlePdW?7{98gdDLjiKQ{^cD`^#<(|%xmA@i_KpaiPt2snY2_csUiWS%?B(2+ot z<8%-ETa9e;;|1z3h(tZ(DE~0kv-IG9^-QGa#ZvlU)+@Ary&1M!x(wS@$gzKb@}(Xq z-;V0pRFC>Jt;TU=o<+=%a|ZHD+arH6vPs=7lrKJt83=4E$!Q2AU`&5o+h-dLH)GFW zn$J@+kZtgS0;Yb^;WlhJB|!(7`Z7AcinzTVUgW{(U-}Ls%x4@nVnX+SM0EdWAJsFNB_A`S z{x31Xc9~~6GqiIT+NYF0P#4kSG*`ZoqiRJo}fS+y^LMG7{~q*w35}e$K?npEQq^Vs$ba0t;g| z;W@0YSWnl&!ol!^gRx&tD)@!0LpZ(y`e0;*-LAbsIj!?FCs=Uh>-b)@gCd_iOZRD= zjL{B1Xn)J$IwsSuv>E%giuP;qBI@T$H06pg?{{IS>eBL z49>b9FTvL z)(;lbetDqX-qCRkyN7lY^+UUjp$W$dIB}5YA{BH}%hNDPQYK=%Vj9mC z`)R|EGuKHCNnt@RxxEai-ORR9Idq@doASrQ1Z2ih_7wH+N84?t`w8NMXyla{I*9>f2j-l6_3jAv=R9tdVWEzM}py{Q;ZxZ zAB-CTRE`v0s3hkvLp?jvah%vlY5$`Kf&{v`#(5dr6bU>zH$c9ZA?*iZ94r*L#ASnlPt8yb?^Z6x}MVjX-18*U6g*Z}LV zqx#G}NaIfr)E{nNlv5S#8!&N3%skv4ND=2-=zb%4h;sU&nMijj+O6s*j#r@kTk!sm zWNPOs)8qk;=C~el?XJbsPPy zJ`44S+pFZ1I}qC~yo~zaru>_$F+Nm1#P}ekawgi%j!PKj4@yBfqD^S$aw=!R zCpwNNuzn@2|NRS<(<*O#d=T}Fq5DYqEy(E}qCP29A4R;H?uzY7@=%r&J&9zXa9~hOFizU%V6faG6z3e>R{#g{{`>E8kK7rt_#_AFNL1m!Uo} z2hcGCD8FGG)~~169fXu`$r9gs3`c(}^h3vI-W|b^CA}Wk+W&)0sC;@|fVw|P@S*<9 zyo>=z;Xi{Q05bku-xc{dYJ>=NsXZ;xo^U!Zr&VpxJ`$SH!7?GI?Q5~Vl-`daL^e6d zl4ssNf$f&IS})S+eIr$8abAbhfe(cBg3(jzh4WG2x06(`-NIJ)b=biAF7H==?3V`B ze^w>xPwrxTW8OQ((4nWazpe7jV?D9HtUJ!5Y}(&{E2$l7&`(yQ7_xFWo_CbAy3QWW zk{|Ad3wg{u5)@*F(3uXvVmN_f_*Jd$51E;Xde-m3iu-801FoZ-;G5Vl#d*EfFXWSW zlpke|Uuffw^GN&%=e1(rCODIh3-xnHDt|UT?xaRM0U3U2IO;Q&I%p=uVP?DvnHP!x(J)WG)}lV*O~{ASZ8;4djdCQvaa>+d zzVBjeSNsw6%)#npDoft`J`&rlKZq^DZK!g3vJLGlJcoAH!sZF53Hj2#7@r%c{K@mN zUEwQicMat?RnYOG_qk!O;oVAyuwPOd-xT@kKO?Lk6NC0--bcsKgHViPQhI$Ey$;?d zM9>aS6H%W4TK^{)gt2qIF7nq={bjmzy7bqv*5ss@gX1gY;J9p}iGCF%DvW)Ebe$5?`qo)Ee`DzN zeZ_f!C%u0u#v4Zvw)N!n`a8<0>W_BbLF2=uA*g@h18i3z|B^HEORJGjtCPTX)Soj@ zjtzAPUN0Q?pRM$9or(2j(dY?^`(C)cQGOM@zXd+ZX^sW*>*;lB^e%We6V1-A_Nu&1v6NCK{P(M+e-|6?Iv%A|uO=O-{$uo$ zp_CtBjeHTkze3?Z#WJdACE7=^Uy%&^e)4gAj`I$dAvvYqqWY&}helCB0Z-Adf+u5- zTxk7iMbtkh;QF$f>Jtyk2P0oh{Y{~d4{Q)I{6ZQJlW2XDdB|@)uY+Y&A9_8}kk-Eq zH(bfDS02)lb7oV11Rcj=&eeaynUt`qyWp{u9w0#9=+w4_3qa zioB>Anq&N-s?~jZvu2T`wOzvL#b4ewE-`_h7~xGr<(!qb$5^6NLEUn$~D#WCayB^Z|!>(L(SS7Pc{ zigr&Yhup0M{E+NWwXjw9SwDyK8iXn#Q&+CP)>zg)+D30vLok(*2HY>RRf zejd|=`joahA6x?$=;d~%7wC>q`&5dtzOa@4>G^b@d=JJ4*rtz#2||6Ogq(~tkuUy?a#m1&zy;JNcsI^d z*cO&kg5rLgB(wvhuX5sT#dc+MpUni>sc0=iUcMknI9;=h9Cs6;=)o3@xx>I=<^(XG=4=z-Ga~ReS zcEq@mLgnwsqV}Qr6?H?hK7iVx)qM!DamX)yiz|g9uXf_&{0jbyGpGx?3(4I=<8v)a zwny{9dWU(eTdVuux_Z%Zq49q+^@r#RYPTx1r{X+4*Bkkzp=i&m)Nu=7!DZ&7wAJri zD$h`T7NY*lJF^*@U4ivu=y}-$WD{TN4^D5eelq1B>x25ow7TE#1ziWFbRH?z+1J!Q zF>P_)t)hkwXF1Qh*GR{))%lTaHR>rmg5&;%>a&vNd}r}bw2x>Bjtgu@%SlCz+HDRF z)Go>&#d7`My0|JBs=@_u;&j-u~~rz9PRrT!;9z z+LueP#{Sl~y6*ool=^3@^OP9*@4VoCHhSNt6}8VWdfyAFMosQh|Nr$E?a&mA_F>*# z&QSZ0sAuq9)YA{yWS2j-E542X5JLGLkY+G(Mndx_YEH71C7=IC{i>Au)e|*QJSbv>-8&6g#B`Abzf8L zS(Go_f%ch4<==%1d`vtM(72@V=dN1FCx1}SE!3|*-=lULfP6?}&~K>Qjx3GFa;Xr0H-qIqcy%}Xaxec)|3^7^uGs5o5a zkW>F0)TfH(If=CXm~v{*gV?UZ4|B7yUoi$~2iO*tQ+XimZyCma__>OlB%Lw;ETR68 zk8EOh5Zf)K@ydbnA5ed8eLt{i9Qv)SmEV$6xQ+zR#D3A+7RgQd?;s4wmHl`fnTjVD zWwhN^d0nbE@+GbI4Z_>ger?A1tk}QZx(fNE7SC&9={l1Bgxc-zf9=+3JRL_j^sAlJ zKEgLRE)u%FtW`x#d)Q)q$r_wrJE)!Y;lianzh!=a2IN8Gn>SIJNx#d%HFU#P$M3eGP@e(3cE>jyia zo{{)(65xvKbz!T0vzIlfXUu!_D@9&$TYg`(4iU9l-&^QDhKSyGG@t6<%?QUaxYhY% z$IDdzR{ngC{{Ake)&7`C2G%F^2RgH80`ZXU2Nq^yzxL90pH4>o>%GvS_@qH<0+pq@>1f5VKn zYsZoYsv2RwD!GY~(23TMh4WU%&s*n#90$tJKtEKh`{_L}&PZwelu|ja1JKXKC(zFq zQ+{MEm2(XHTL}A%3{^fv{biHTVHLmYnUjq5TjyOxEy$OQMt^8S=jnSmPh_rd5_+GT zVjOdVP=4!tOsgHr5olq*yigr7Z!X%oFaz!UmyS!&dK?!q-5;ajhiIsx93kCTq{|fP zEzgr7AEWaf(jGZ6w~H&wmoC$IRppM3d4$$q=#Toh&b!tap`PMq6__ z*rMh)cc}Tv_X_GKCg>+a=|3Vjq8!OS?AJbO zhx4D1-{gVzQOMu>p2}&J*L|6Qd{L`?m0b_e&Q&6mpxEa*dylqD?`sO6?Y`$DU-}C5 zw59y3@WU%+e$_{#J}`ac)aD%8vv3rSmtudZX*=>I)XuO?Cnt|%)c!rN{v0}9DKy^} z(*1KsTK|m)>eD)Z8zleT7W}?|{{Ceyt^bc+mlRII{wnf{zIwD@&NyHCQ@^UA`;(H7 z*k3rUkkisZSYPx8>qk-k8J2u(hA;MuwE7)H)N+*5I=}J-1sHq&Kk~i=JhGzN{|YLu z7!ef}CAa{BV&Be=K20XmGZQ8=(BFEZg-Wxv7^Dc}2rse9d2KjvNH}aYn zF6RE@hJE9F*~i5W-k0Aq`mAlgWqjsyyzgga*u7jQ_>QF#k$gtkt%O+n0Z{qX!d>KEB z!Y|7ICHd@mY5(vCx&L@K<4yNJMb7teIp3cmc(_&awat4t~+Zmo0$@rh{WIR}= zU+;X`M~O!*$v#fJME0eV$It^J{o?O&!52Z;Rgo(kNGv@tu4iLa=F0Yq5O15TIU)1`DIhwe|ebqxtmz-9VP3Uy-(<26Vs0)<9`+gI-;wk&hq^| z{F{u=g;z1&dIkRcd9tqWFr3RW{`E;7KeUtgMa!`>KFsZHhY3GEnt$+w=Q5lJjC;^y zQoODO@v!_E#={BH|APB-e^W0#Fh=WwUiv>wSEot;_k5b+T$FqVjkh=b zP{#QKO$m`Ce#4+ zdD~-oU6#m5%qoqSC8 zW#R_ zQ2*#3xIe_8`g~%Z`!7(!EIv#{mKFIZ&zm>&sN2q9dT5jQx^3!L$a4WB5S;rb7@yyk z^$vcV>FU6VJTJmp)Q9fn1kbpkMZ?*CL7=L?VJar(y? zKcn)4f5Wg(cv!xO+fR}4&x7Kp+8@pMIbYhJT0^d0`4NGC3p0dVZ>)!c;Ax!vWlTA5 zlk@2QPm*=b@Vrl!@h8T)|J-AE-eqZj+!5S=>2cg&pD#z>%In>KJg@iRvaWyOcQkL* zpr1G1B<+&#rupdp!q@ZXF#d6TtIuD*#q+jFUiqm4&oAH2^xQ7~(054t(AT6r$NM|Z z!&!IU#rxHM5!1tIqTfE^8LS5`yr1>Jl8ked+~1cz%k6n-KU(Se&>N-w9BF?Q9I}e8 zj^cTLAm`~Ja__iO^!#b*|MW@5!=jv8h5NV3Ju58j z4-x-hbb;5a^@sL0o;P$P<45Z)-&^K(Q@{P%yBI$UMjXrShjRY~$u}91d5R`XZB;^^Vhdy^BBM{py!_kG+NGjed{i zfcC#%af{$>jt96$`oB&5>Cta69<~YJ{Zj0f2kz$f-O~R-A)a?$^cEp=Yex;e`dZw} zXdf4@<9*cp`;uz~Ka!`c<>yha<918xL!K}5e(IkL|I+mg{|z$nXCN?@oRPekBc%Un z|B(GXgYgD*sn4Sv?r#}`;s19QuuW zM_Wwj=jD7}NZPh__^rI&@ivBB<6-t6Ja7LZ<4x05;?3ND@ouK8v-xZ5i8b{056Jj= z8UK>UF&@5#gHQ4A_gOQ{34X5ljo|qj#~>f4cjFr1;!^SZ!R z>hpl(1b&P8aah`)cQ51LlDvr<1fH2EaQjk@>F{;Zew6sX7G-}wD&u@c&Z+({LE!^pGCaKM_B&r zxYmCHfi(Vs-!YtjlJUcGK90+Mc2355$vYYT=)+h(+#u_HT~5jzF(hb)F(Wvm)AQlcEab#yg3|{1n2nOEU(@s?H3(jdRr7dU(_^f?C(NX zxA43Odr+T$A&^_q?J-QZFXrK_-)#~&WxvK{{8Q(6oct1Ze1o)yun`Jx5|0Y^y87HJ z^;9h*ZtC&CtAgLqXD;mH_BN3}$IAExbw7fh@EP7OttVVxL+{=3X@+O~T&AC|3Z7>l z%{?nN6wETbNHyF=z=Q3a8_*S3YKrhL$e&hb~ zkx_x?0eoJ+MeuXm*Lhw`{Erv%FxGEBBm20W$LIgGtk;k5J#oRn=fi)?q?pT zbx)LbLm%FLG_Naf+-L8=?+E{3t{n4~ZSDDE%*ZCih={3irqHsy;7~b8zWa zUKiZ->T|?hGOyH)e7^L56!bBopZ%hryg~?W_F;_w;0&-KYBlpA3Blc0K~ic z{QMIP&$85gdWQ7>{MUILQ?4ds+-}BWJUPnu!KE)UehM(a@8>akZ@1 zW;yU4fpYs;r7sLdA(Xr9$!N*J^FhLkC})5e$oGQy;}`pQ ze6w!$d*8<6%sqnFCC8oBdxp^GpO{ahtH5 z7!M1EePHeqrswuw@Qg46s!!>C+`jlrZvTzY&$sSoc&rTT6=|V|ubt2B^FL+!(f9fv z;dg2ujku}zzL(q0I2h>htT%ML)l^ zTweWL*(Z;*LgGheELm3Qa6W%SqpZh1Tk!liIAm#m+dswoI4W}W$hZ{5<9=vAI^Odk3V+^Lw=8p|D&yZ zj*mh2gQp{)6kh`t04z<183)(Z^rF z@GRZO<19;mir1idEklp}*X7*aE_n(#4%FwR?_>CvjryoZ+%Eh350(Q=?Xb5$kMY@N z#OGY}ztVmo%acoG{A)kJ^UfK0uNNQ3{VjtZ7jEQsQ$M`n243&{r}!Mfu<}cjd_GO0uxw2nBo8|GxU&{Qb^{7n4- zQW_*Su?vAl)S&4JG|AA#5|Lrn<_aQuf)Uc!4Ut&Cj zjQVLG>|*_A+^7qB_2xsA{baxFFJl$;RnFph&G%DoIhor-qPKwj)aMOvX87}xFQd=# z&mGC|%zvKu1!7-)-Y#~n_Cr{1>v+_cJet?Fd_3>_sX`}D_%4rcy`3?G<6eFKQ~X5B z!`vTfP3rTr2={L{;zIA(&hVT1@V~{svuxaF_o({_?iZitb4uGK4uw1<`Dw=4w#Rw= zaj};k!{At5KjwAy-@|h9c-~IyqbLYN^w56?pKF@Vvp*O78}%M<=w*D4OP&8O$@tTc zVo@L564CIH$h)N*=$>urus?IJfWrH_MHSWZqjZ=W*KP zoZ?g7vflb$?mzxnhI2{qbDsD|=8oWTJ}2$_;IF5B?7xafc)QTmU-Gi9bC@Hve*4;K z#*Z1tb^Wb8Z~n);zez##S7C=Fd`53&cw&#{iQAPt$9+xeS{$q4d8o|$rgAy-uV{` zJVIA5JBHia_b|O7>_mMo2ICVx%{Z!1KA!VmO!I$@tXt_A|*3nwR{b zWf}jCM{@rIPv-t0WA&l(N`(LYqSpyITi<^e_n-SK)Bj85i*MjSq5hWa%hP21KVc%W zt6yoY@FRyIW5ae?(OL5qiI# zJ|J*PzG}Pl|Kcy0FUH@)czdPb?a!0ke`$<&R?F>6-^y?<|C{OLZh`ann|WPJhTJQ3 za{qC8pW^E>@A)v8(7u@QS~p$A{Vl26tmz@F&i5m&uZn)C&)>Uozb5=Fp1^n>6nvg1 z`d&!%J#An8)OKF)e#2fgTSHH~@kWNH|I_94zXOg@C4X)zr{~ANTj)*vEKpO`=Yc1R zyfV(C<37UUw@aLcrnlSA<^GGmWBGQ0jPqnDU^K5Kat~^W`n*8ym2JkovRC3p7Tb8g zjuts{w8Uq&U&M6#e!<%(cmnCLCmn&VSGNc|NPf)@T37{pa^_|8EF9d#(^W z&y~_q;Q8sxWFP;?{0p$v=TA@Oajd`bxs32X^*I1PuaYN5eWCXh1)d_qqviaY@8t3G zm-2qSS@y*_QScz|%)f6e18oW<+K_NmXM zn}lBsIsbU|E(6|+G34`=HT09q+IU_0NAteJ4XQq0KbraCV&nb3(?7!Vn(>W?$@uff zFn%=rcMdW92QFdy(Q!>9gWNtZ^F8+>2!!tw+Cu;aq$W%gI@R=V5aG zF8+)89pXiO9tM4Y=x6D%f=_{S=H;v>9JrqKf8I^Y`u3sB*GoU+mcNUB@-<9H{A=o0 zj~6@7yx4g(o+Gd4dChvxFZe#g-*zI84>ewWj;Nt8-FtxNwImK)+vU0i&gK8*aegD~ zz4|KdKQDg36J))Fl_RVNTkR)mO!61IFXaAt$s_o*;PaY(hCgc5@p!@s4FB>Yn122t z^KSkH(}}4sopXrnSDN|yUV&!}VuA3vV93K`pULAai9R6cvEK7LZa4Lo7jNfwQ*Ze> z;8JqKu$s4Jkw|BCf4hQM{e=WmBqQp5Y{)pujjvMuPUJd=~`_P{iU)+!7l88_1-uE&*{hwoaV5U%? z@y)!C~>HlgVmgY6}v1>rUgrDgBn1A60QlC%34@m6? zzQFiL_=NiW*F2BYCh`+zH}&}JO_rGsxdG?iVMB|9by9 zOeaX!Ri9hrylcOL+e1w5)&(%2(R!B-V>;LLcK%*&U-%&7LDVDbnC*+C zJI~<$rr!9mKXQB2s1x`>(H}zc?x!Q;yz?5CC*uwn4WH{okD7fvk25ZDsyIH>C-z*X z&yd)iw0!vT3mMJ>|K{@%Za(!npO8@ru`k?$Mo|79>#jt zRvy3Icqj315??gF!15|D{Xg|q9>=UZ^Z*D18b5F3rx%o-4E{3wcRxN&=wIpyY?JYy zcNfDmmu5Mj@o;~shdd{F4JS$eJEwTPW`65EkKl1kz4V(}e|se3^K!xG?q3T0Ph@&~ zgQ$rgznSTCe3I$^T;Yqv)!aTO0sz+*_4)UqJnv$b$AS4#eQwQhd;eaR13S3c`uPOU z+djzqqT?BE`7F1GE@Te6Q~H1Wa-P>R?EiPDe1E(XZNyLh;;THb_4P-p5$+Ip4wd`w z0g01gY*^L}&*OPbz4y=0chVSVGvz~HizKM=U>s=|pSwXQl+tBaG)GgfFfUy>4j_)3 z@$)w_A8GvDeyq@yq4)kW!R`CS&-D};XUyh#7mfF_uR2-i+{nk-4fTfB+a`JfYqOU1 zj{jmjTUp-sFEY5+PkzSpw!f9(d=!(T^{-CuZ`PYVX%mm%ZrsOj{w~A0{70sTH_L%N za{-TU>Vema-{gS!P54)qwO{PU^Kw7pU9hb1R$lLt)U!HU@bk`(u{>;hJj=uTgnmw) zWO&*KdB48GUt5nD;PwMMnKJeJ6d(Ds(4olTC(HP+s3C7}P0PGr0>bebkpBOi;PL04 z$n$D?xaJLl=ffD!?>&Tna2F0f+Ar%CM*RH*{`ot&|ANGIyj#ZK_BbAY|II81UMuaF zog(x0^SX|Z@yAuY`XjB24Lix^@9{pG?=GEm9OGg6RZQT&5qKW@BKAjoRrDONkNUh} zx9qPG*YV_!@Hp-5OmEt*b@@fyzVtpOK)t_ry_4Z@KY}Si-@n@bCGB72p34Hy0xnic zuMoeg)^o1Hx~ctu@R#= zdicdKw32;w-jI_8kz;em@%Z{aH6iEJg4BQ5Bkhs%IGkz|Xdb9J=f6JS={RAT)AP0#Oxfk5r!9Jik@%3p-fmG-Z3yPo#} z{oHxFu+KAYbtbY;{*>UcA^MHo%G2|UI-?5}dT|NOI=-tLuoZ#}^9EQ=ja)A_M-|6P79(+{3eR-fcyJkFBTyWYah z)^#E`tlx2e?Z>?3NbcYMRE87RN%i^Rr3~j>h|ejgN$PX%?Ski5^1l3%e`ZZxD|{jK z>tq<~Zqa+APiH(sjH}P35|?Gl+h0qZTl85x@bhG#Bd|b{Cto%AH2n;QKP2~#Q)K-A z0Y22ZX4nlr`A+UXeih?+SqN_bj|2~YU_OOgM15}7_NZra{~gkP@w2&qo4f-BGl=@! zek$u%(?;Cs6FP;?MPA8vS^u$_;|v##yq=TAUKAC3(fKm|Gi&I#52>L~9(xDRYwDlZ zAy7@x?KAjh@x9}Cf={Y?v$&5N@U+SPE)6qZJYV2RU(R@5GW=7!p(oRR^$H$B(*N@X zhR2Mf%X~=up_j8g!4fz46{?xm<{eTfCy!Su3-F$C!;QKO8C(DO6Io~HAB>0#7 z(=D>Dmm}a%$yGTonENd2OCRR`b4PQF_B+3OmfII*84qwFk914V=d9lyvc*xg3g8681lKE&W4`+S( z7KX>vmri@N;O9?#k-b93|HFCQe&7&>AMP;qxkBBSp-&q8_?g><-Xz}aNpdh;C-&7| zv9B^!Sk|vjb7>)T$y>kZw`c(_L9{mxTZZd@#NPMDi4YsVy?zw_twLZ2=DA6rAe z%F6h8dDlbxoj;Fz5ba|~^eEmn%Q|MB>Cp63{N@CPGb;DT$I85)eiV;m9m5;0^H~2Z z_6oDE;}1aaiocBdpAVFI7sZdM*Y*6Z+~3q^z9(@|%h&L^47a}eY)>*hL2~O)fOeZiKs?X5dxZSMR`uE53ylpqKUhy}9=di1} zeeT5!=d#SZRnCh=IWI(gv!Yly&6^iJa9H|Z@lf9P1K(k~dXC7GV{L|~{gQJ0PaiLE zzMk6;7x;e#M+uF8;9|y)&WAeu6|ygXU^+Zk=B0I4(;pVU%l$*gF`u3z{ZG4u$De;H zueU?+|F{}@!n?2L@#iI<5$d}7#BXBw_lqA{>oX@QJK>R5zj3b|e=m>IF7=Z&KBqDa zr&$Lt`!jAIzlh-n`>W63UwNG6&oZ8WD(!bbVODrB_&W1M+4rCDzJEgc-}83vACkCP z4bOv>o#aUC1miyV-C>q9Aw$kQdmrPWP2~IsWc>5OGOxUYd6l&P>3rG8`}4X^7COB2 z<4ix}r^xe}?ZdG`wDFZFrRpBer|d9VB|Y5zC;-9)#GH#0rsPxbl1qxjrudlU1uwx=C^8RLKd z(|8}#GS1Vm-ZLs zd7LG&A3jCKIs7cf&-hCiVdt?}u?D}*?FW9v{BpJM^)>$^{Qh!=^GX@#V*@;XROF|& zvt>beM4$VgQNG^Ke@o_-@dss`*&d>|!>w`gvlpfPUJw|KGcR}(HOhM08+n`sd4J?2 z>7V*Jx3^C*9`2C#6D)4e$CxiZtLMc9is~P>8}aj(pU?e6KVkelU+`%;&QvCsb&91} zq2xH0lgg$_mNSX}XE{S-JDfzakeo^tOUc66j=^*;n;eTxq?7zz^>3W`z8DPk#qK@63J{NuD>EsE>qLVKqftq--SWIQ7A|s=vj$*Pjv~$$4`=W(Zu8;!CXd+%zWVFc0$)zx zD*~@$Dw*gS+!onk4`HV=u{?Il9or61#EPjnSgnA)9Ey*YY&$+3D}dxs;2?;nq7#S2a3*K6*bSh8 z@V>nzu#iyL0I(zzQyT^^3YO}4aknVk65a@A)(YMTWZEWqBS=`P(}2gP0m0G~Zv+WT zb-WO7bPVn|EojaNY)(I41T|@6t_T>C>U*zvB49`g6(`r|Ht!(q8BUg<(*?;E^#ST; zfP&x-yGMzP`taEH7HDwELLQ1-DHy1f@>3Hkb+&FDi3|p>cLq1BUxsuAHf>`m5;!c? z<%mlIf$(kF-GeqGm{}`mAdqRBq=6t|sZ9et(L%12Ol5hvM{Sil4#_O3c^wH9DW@pLsT zMQ0u0CplUw%)}9;zz)~Gt&z<;lBMZfA_$HOcY=={IN=c)F&Udl!&#pv=XViq_|`yV z_Yg!JA;GXX2o%`ljBZsXU6MP&qNtDHp*RvjNmsfU%O~x=fpj{WEKDZjr5&+Sd>SUy z;!q}HhvL(S0ZB&S#*|Qi&8aDbeoPO=Gm%I%Guqvvb@b9Y3Nu-tlcFPfL1$YDuE^++ zLjecfBgrBNKzaVRb0AAcEIZphol7HXMg?h<$FeWc{u3tgoq?tWx0an7@ z8ZAQ0&YoByMUnd;>dM10(?S_*6R34>udTq}hNSiI#uHMV1X4bipTS*}vI!=Nkl8b2 z5YbZ9*@Fvz^@AvrK|(_}e?OE!^n1b!qi?~ccPL8KYk~bK*~~gN*cy8L`vJ2al4_dR zjCzY`$ra4*W6h?%U}yY{RSwC7IyZZEA`N9nEDsawsjgkJ1@Nm&Z+-3v-X0KcVyim`vM~4-2KFMm3l`Nt zD6k3ZNhc}NfdJE#J+6D(>_j28VLTdk$0it@4j_9B6m zeiR5Y{b4V`PVD#M2Rd_O4}L4aspglK4Aj0zB2^lMvj7R$0XTL-d~-sUy`$1Y(y@so zWm6+5w)(wFg%|{kvqtebtpI03ZlOX{!!2ZAdf2YwOOFh$z?)uHIsu9EFaRaeQRUa- zuk5nY2HYd){C0EJKoTrA`(_O)Ezdt^aOp%9vj&deAd@Bhs|`HH+&_7MfxG@`gA9c9 z&l`CBn1Av>PZvFL>qCJ=SsXiE;(%Himc;dERGFVvg0WfD*bT5ba=`F8+p{@U%%@|s zzAaN#jdVMsudGQg#j~BSs>%#%+H@guOkXV4X*5AI1@Cl4s9uw|Ft1H53iWR~bkv5b z?4%*_`stPWS~T*i)r~@(C@LStb)vj^YsA9&`ub?pC`DC1WEl)O(Or?|T|0^`Nah1QQ150IRjTEA( zAU(ykeRp7lUT0)Nl|F+dI$lU-lG#$UtXW;~P(Lb3p4tWhwc%oH4@}e?V#|hXND~!s zp+aggL^eh)-|SxH_#G|vI*4Ybl52LCGfV}@-06Cp9S*{CcSoY5A(*>WZMV{NA-C5d z>P5+}*sPOH?sd}1>{MyGF>v8f5|IpM7_h3}RR&`U<>y|Qh{=tl8nf3e64!v3>;6_z z(`czLxi6knq1`fA^_beaLup#8%7FEMNdhD~yEzpvIXjbk@lOa-XIDHvQz#@8vJohc zMq43&O`uL+)``=;Q}=ywXGb!VE6@*f1sPy8SwiqUEZy>(Bm#!~zZj#UZMr{3I2|SI z${L1t`M(~@CX)O74ZHRrz#Gv>{=O`HWM zw6istO%_t|t;y0rsiaVXCDK1r6Eh`QCjEB0kc=g$7G4s7#ix_;-N^)ggn_mcVu&%6 z4WZI=RLxE`M)u)r|1aqW7|a=@-;X4*aYZ;{hf^8US9Bp7jHS~Rz4jzkb95GF?Kl-Z z8_J>_OBQwTGO~HzS7nW|%q=(rF@^p$brHn4^KKo)%Ek(@_--F8>13>MMluFqCyQP) zx^7OUeSb6dTu63}I>oH2gffXv*bV25SRo5^I8;C;TNzfdS zK^=(}y`NRU>1`DT9wZ1oNJdiPkSHWK<#IGWtth#PCf$azm4sM#=S##&QS3VH$(C5U z=w^}N@3F#+{?q-*&YW+bz&AoNgR~(`0AMdrEOs!5T9(4A*!3Y0rL#So+ne1MD-tVG zza88yIy;<0Y@XURvfI%VV>5Z2fIK8cUkb=X!Rp79*&<(aSIjYr{4x60ZJ%|kRcP#kp!qu*kYF6gSXC;bmmvyxm} zX0mY=C?XIImN!7@Sa~7KKIjfmX0X$dkxa(QBs1~+EVdeoO`qei7Lm?Pp(JLKj-2TB zxK%6_ph+k-qS~2nn>wqg*&87HrYoLCW*P?}Rz2?huq&;<{EE=+GJ{sd`V>~65KiXs zKXia0*@r5V8c9VyoY1)Ljn2LO+v_+sDM#+Wo{B`xT0dIH*Yx^hf|nbwC<8cd?urWO7^wQto6 z)kSAF&6W^=?CGon*@Woxe#J$fVARjlPUw6d$melyA-Yft3^IoXQ3HsiP9p(RXZ_;D zf(k2{t{VrQOwt}|lk-NAVBo5a=zfv6Hy zK_=BT#exAQ`PGD{5>3H{+|~rjClEFOG?gf7K_qRs8DwoJxGK>Wq#>J9_!`Oe4FOLj zn(W@uR7Rz$BnGlsm~MiK`R#%x-VkXU5V}ef1{s*#6xKEdK$VC>2ynnDtj#dy27;;* zWx>VZH>q%K41g*T)rz?HCQ-K0K&yhh)?|$}i@%KrT@@6zARVNs!$4DCka;S#0joq@ zVD(~Z1LeB`YyfB~QPhIO-*8hWXYj>QYQt3pZLP?wYl_P3jRjdH>VmC~7j6n^8wRFI zbOl$rtjQyDV*pf%sNj!#`J$^0QVC>8dC#3xCZEQzs4=-}=Qo^rGNlfFuj2k*&*_v$d{4;9c82Qg z!g|iA7g)COE8ZCPM~@khuXdO+SPt_3t`p=!CI$k6fqgpL+j}smrGaA@%pu4-7|hXd z@`KDO4d>U3FT;KVif=He$BV7nP*=d#1)y1Z+T?N#rdb~xuJ52i=?~om29zIGU%Y~N(BK_FkFLus2JejQG0_eUn%4bhSTeyh{C{}A~udTUsE_x{lI;?bKq0eve;jq`%R2*;4dcEOb z^P^9hJV+6etdWDPgZdIf+{B66Q&NhrI?)geU!EO57^c!rRC4lQE}(%P5Q$V>&PuWq z)anib>Q@4J&|8lbL!`i+j)YcZJ>op!G*U^m(z#>R!r~W-$+KsY zREZBW$~bCRL6`bBwNqccP~_c>ZRvHvkbF3x4Sl>+HYE0`WH-tj!vAqXq?@`aS%77! zn}Xk=B4vpB<}SQ`J4HTvbaLz^AoGiu*UP6*8Nf_>! zLjG=Ib`Y;Qlz^5|WLT;fm4+r$k;tCt_AzH<`&h`qvsls5PG_`-|7DY87%g?iku|3N zWp_IcO3@+zj>_9o9q6Grgo+)Xjuq(ns8p#q6px^cEd&ju4zlp1_t2Pw;UhHu_R$Up z`N_KCKyAC^f~v!c<&S$O2i%5cIg9(P>W2d7WfU0-ExxPqNH5#CmcpY4;gSx5M;Vr2&WuZlLm`Pux zxcG~Ai*aiV7`L19v3&jgYW^4=zA4~*P&qNE;}S<5%|BBrBRBOV_vKTlGT`f~?ltNJT7~{q=R8~OXbOG?%2pLFN)vOJJ2> zdBFwLf3%dQESF{^LwpQ!p$l?BY2sp4>p>YxCzd$NNmFu`xbPgi6HUm*&&Frf7vwGM zM9D)&U!71)5XkKHDo-R-Mdsa5up~OrkgMu=&#AGMTXQxQB? zsmA1NJN;OsjWX6!Pe&%Ed8_sD6#!l3^wma&cuFNuPROC*i&Y`SJC`M5U>~~XgTHxHEms0LZ*G}Phso4$+auUKuO?o4bSu;9^VV4+8= zf9b1y6Z_~LDc}0acsd*gf6U~4w18?lD0;2divk_qsf%+%72cRs<<>k^nrb`XBxXg* z)tD3`mc!A-5_ z!3#C}^x%3_^GoJ*`npWS7_*=_7iK9Rhw$nH~;#5b@0epcfj+&E;`G=OrGt1;opB;;qtLmVJMSPyH8)q zJH!4HS2y|2TWPYp)EVbJ2o%1^Te#emw(YsXQmhU;CiwrJYo0CDMW+wNtZu zZU%2*Pda!f0vs@zDM3p-M^lju-KT%--(@{*hZapVx^$q4y9T#KcGy8wR0oC=_yA~F z>Vlox-RuBYi<=*>)>~^J6`&c-29^Vvxg5)ZOgX5qtob0Qg5nCr9)^RO*2Qm76DsU# z!tjv8jht14wEMf1=#?bjyjbw#Dlnq9*-l~gU|XgnF5 zYQXyLT4f`LZR&^a^ecv?UiUr%xtNB!QxgDNEh{mD)#Ig58n@QmMo)zR+Kws+1(dJ| z`R))^I`z`2kLmmxLD^bW2h38lgWXxmmB{|vU?6|Ly5lKDM85=AbJ`B94$uD-W>8qP zY&TF%kv0RCGWTuE3~Y{2-K$b~SKyC* znD`DH02k?j&s>iA0AD&WaUS5*F17=lvmDPsKJCJY_Fs~NoZZEBkdrd9)sjWq-I>dd z&SoZZsKOkeUBZv_z+csIF(3HM8vV+BBb!_4a zQ`WmoXQtbfd4uuwhHtw1O~Tiw>P5o*-qibj-`lm-eqXP(X#M_SnpgULziL+J@5CF{ zc*=wPAj&Z>H!#C^UgK3${&63@A%c4dE+yn1cj%QCb(vmypatyT{1_%&`1D_?GmT)2 zA^bCfYmv5ha~u=A>~u-OizKOB5eE8V66X!w#3clW!j$k$wXhEQ;n*1bPn{CYG>OX@ zf}d*j#Uu#XsW)J!awO3^EM0C)2?m^)nZ%g3qb5XT&DIr5y2eO5to2H zxV-Qt!cLU9pUTdtpd@%iv-C1a+DWNe<*4Hx#q$i^{C?|@SO+2z@Bl5!8?zIBLM}Ay z;Kd#=Ac%HVfle#`S!^`23*m(X5BPVblXe$pCcu7TZtBX<0!?9xgwQYKj;io1iDL3c zXYZ8Gc2eHbt=g0Kex*>UL;z*EBi|bq=LL{*q$~xI`Wm?aHNWQoJP2fAEQ1Y+RY6nC z%U$h0wnA3zM@x_qLl|)g!n$fd|9Cwlk*fCcM(d5vBK9Pb-D7v8iZp7OvwS;G>2x=KQ`TZ|!%;R=Sy!_snRcV{#E+&5pUEtNvjG8c zivG->YJ4H=5t0Yt)ahKTq{@nK&dtEMT=hq!X6>BG?1X3>riYSitycO);K#4qkEnTI z&y);VYc%RbQ;sC@)&^Y2?qRqZPNp+bpPoHsr{{M13Qdq9TbXA~oM}K1oE;1xRX0IH zF_bN~5DE$e*#Y?y%evH{Hbx8NwG>E4V4>ckUSo^!6`HU`(0VAKuqK9x_BI5;5Fo85 z7=mJ>5R5ApT17CV9O&Q@t>Kilk@|>C3)213RVQ(9vc=})BpwOE17tXRJpBZT0>x4; zHUw+Nsfgo`Ao@SLWeiciW405GA_ZV`ek|-LB@?l~83fKE`U`0W2*M@hi=GX_fc~61 ze<%nC3;P2_Qduq^ji4XA_J)@ZIh?o>piHKDfT}Ghk%*t#O*M)=HY0VHrn*McNC zAAMu21P)6hyaeJGY!WX)!cqq>L3+pqKETLC6Cquc$D7q>8AxMb@D0o>Go)T&MF3Y}t~&)>Pc!tv&8bnC|7S zso$rd65`}lrzk4m)l6Edy=0ZMhx0l@;t;Fajx?Qh8EzLwQz!mvGVkpWvY84=yl)<- zplclT95lMtHLB$iWTeRWtP`Hy2n15Yzy?%<3Pg26sKTm#u5|ZR{Zbo_s=pCf`CPSa zBa|5iTxaiejINJhRxu(eIJI*Q^{(9zObxk^b6mK%OTX_Ct9PLJ1}*vvlg zdxp{k*A5pkx)x}xZt4qA7sB-@orA=H{}N=|coMRRGz;%*rKalN_2CI(|CeRI?c(3o z>w?@yJbtb$iR`uVAb{;{Gcucla0_#&KiNr@3W}&NL{#d`&^~QbL%JypxZ1Sgnbjmp zE712L*XM*&N0K_;NT!q<(G{=5IYSgt`6cmZtuJBlcE9w~1GjTRj5nfoTOmz@%sF)M z+F@kE&`GBfONLGz$$*z|{oJ!Tzl)Q2%V^NH;a$V6O5L9+4PURs7`j6&MFf*CNl25j zoJ9J^Wo+PrrVRz&BsKbp?@4>?Rv`u`KiIW^Vf}<1NogUSgi#WvqfE34g_Pj39_n7W zK{SDb)5PssVJDzlN*!}V8Fm5!rwQx?Yd6|0K*8I5{5yB+BE{mJHSRA?KjuwZ{;CZrH?->%pXnJ8`b zR(&*Yl@c0&;WAK8OeI8ri#%Wb?fPij7>)1Nq;v%JN|4=y$@uAY9rOSt0d+gz(Nvc3 z8C8miKnm>XQX54i>w)A#6yOWEbzqWf5He~fQ`ux7caYi$5@1^K{7*en(qPFGW~d-W z29`i@)t4^DP`nM*EO9rLxE`0p-Mxc3X2))HJkhcA}67|~ zG8cQc*moshrs3)Ctt2 znvGqKa@9zDC22H)md0*~>QzL1c0%JwP>hJLwoWUaa%}cFuNJ)KSPwMqQ>19mwd?T8 zTJ9?GKE^RwpayC8P|d=^9pHOCuGdlvAVx=fpH-RR7)y zk!1Heh?SHoR`d;s7k;%K2QLO7d@?qZF7cNMhrZQcMGFWSup|2az%xoRpc)(E;n{2T|0NPyC$DVESx^P)xU8A-xTqZJmFqex z)uQY-Nm;o%-Dt+0$O;%@|Foz~=3rFFj(SB44LVX({SX(bQ&IIip2wfCgGz)^U0bQy zr-fTWSt(9|3ZNs!qXv2?3uL6MOWBIW(_MGPW}gblCLR2~;j&4@0;?zCeq5BWte-Ja zc|SJ_CgcoL31ui&B>XBbEH$(>Livy#dR)ae>PIZPya`jOvT;)oyqx!mf2m-% zx+A8gO=V^f`;tryWV1<> z^F=`KTBy32%sAXl$~U=HP`KOODgbl@C6QdqVDOVe&_;AE*%Sf-pWMfMcHooy(B2)K zpTLjsAgA@AI>>1S$<;KlvgcsdTmRAuLiO-ITt+DzUp=X#9~tq&6nzCE^{JyR14Ql(Q?6msclbj>b= zR6HL_!(Ax;kcFO(mw52fL<|)rRY((6G*?$tKXI+)=xjzW!wq3OR6+#1l8MHr&mxZ* zRt}{u(p7=dn!S}*yDFeZxh^YLBQtsyx&LP5Y*2xI;Sk3ZLv-hr98TRTgztOG!KtiZ{VfCAXwreM%N0QQTs6rGkN?)G5#n>NznQM+FE_fCu6P zkn&uDXE_;I6dhF_Y6HA zMmHuz)MMY+ZmU+Hru4dJw5lX9m3<>ZRYS`acQ;Wn7k;P=&{Fy^Kpfew;LV6dwoARZ z0h;*MON z(8SUMMqq?o)9Vy!am`L^ugkR9NRITz!&0SW3Xc!1;nvioVjH&8$vw#|OsAO8Nx+Oi zqyuBP1W>gCrpCd1-t~S}H%i}KJ5eE-)^gL!R zhmGA{Ee1n-vPI;3TAA2NP0GeW<)drAQnMN=f^khfpF+7NtaVC_DPKNRg{at6X_P}# z14RZsnB6;|k*$v6iHWP^YncW@-;&4_=(o$YU~W1558g(>SuJ(?H|9op@CCn7E1COX zZ&WW;k|E7ig;15<3N`{mdEf=UO)Ht&-6ef>*J85jU46TfmW^(d8Knff*IFrL;N4FA zcM|vZ;+2FWcj7=gU0xN=ljHirRvkcfZ)*f#qFDeFRc^ZO`&c;MaVsSU)~dxIvr=>r>$Br7EI|CWoOhg;;OIKqP~S zF7HKfImPEV9Mz>@=olWwH8GiB`5wf*2$hf%6=1Z;`A`j(fYn9ydZKWBw5B znVi3>17Brv@C23C9>(*ZPH}o>ax#s*Q|1g@^7FIW>ZJuG7+1fPM|@i?1zR=xv`aI> zfwmuv3li0k;GJzoR6f z5`29PbFe3(NATnlTW084#0hnat@e(*GArRqP7%sf<4xP6!acE>DXMb-CtVcRyTM#q z*?D}UsTb+Vx&)Z=ksBn<3 z2nXTnIACP1W%xKF<#XU6{T_HH-UFwby7!)PQxAgox(|ZWkIP>K$3tQINpPZO6>?8! z{eVOEutE3PZ#?>1%E7?ykf}DgPbmO&rYqjXThl7sFNWtZ5!>$8_;BB6?bS{XjgIxR zXOX?f)IDlgv`7yl`G`AcgrXEjk~5TER>1QFD9@-Y*pOM(Z1ETnR@x!(X$fJE5-P+d zZ;C-0VROrR-t<rZ~09d z&kwe!5yhqK%qE8NX&UUpq7tMc;wKl{H0Y~v(>xn z;RltpZFcx7qO$N{Wv;5>?AWzAG91wv4IL88 zO=Y8V1yw|YYQw?8Z-q5%LN@a7L2%&UIL331)Yeeq{vHKJ@aez$b@IPm9eNx&3 zBX=&ePbc~p>~8PhycsH)3jQ@Ns3yL(gEyBd!NzlKuQ^!=ugYYpLLW*Rs=L8Dtuzur zW@Bj@I9IyZ7{cOf;r8HxK=#0~Js~IC5q5UA90wW$T?#FZOJl&hV;?j!AR~&na}jVY zn-JQIcSsljHT%k_SfSP3(6x`Hp{m3|w}C2WHPEW%BV8J|(iAbdtB$V5>#1QiFjkf` z3kIkEe8~sc1W(r%w`s7myQ)0T9_-|jZmba>?Bud?&Hgrm;Y%q9@kDZ8H|H$cy}3dn zNwx{q>IuVc?5H$ic%uxboqWlTd$lpy>9{&Q6GW zC!CE%Mt3=@`;P!oXN8M53Z9(FrZ5>M+Cf~p)#;>%sd^@6`8}=G&4gb87ekJUc3j;M z_&rS4+X$X#3 zEoc2|3-s-crFWy&QE8gqP&31VaE(-rX7rJQSGn(MstL_1CPvhhR=VWUT1yF8{pd=~ z;?cE?sXWM5t>aXzCJ4o<%A^Ndm8vpjnF6WL-E~%;s!Y3bb*XX?(mR_~kgEP#FZZBx zD_mPnd^(j*sG!D`v#V#uUCr4@qM6cZt6G-TO$oxdaee}nEfOHEeRzF1{vzVfZW>&Lx^?W8=sT*@Ph}aOQ$ebUv zcb@$P%H_@OCc~(2Lt-PnTSex0{-~Y+o%8y_K-dX%UPECHL3+#r z1q0>DYZWsqN3A?*Ei=>MQ6C-XLFfox#`yU+Sm~y7jt!Bf0WzD3-=njULc!UREXAkg z-y=!oug71zCdl6D48qC1C6z@2`8mk~z1O>$V-%Vowx%iD=k@AanS&iv4+s0^6*$znj^j5EuX65~JEqYe++AGRxQ7pMWQByg4n3sjs(5%-gL3tl{Ypd@@8mWVu2o z@DvS?s9S)M4Y*7CMnnph9Xv|(J&mRh?41=^vk+lm)4HS=*o>{guD|BfrsyVm>NSAV zs(e!ed?Cl()&S@9Z)}j$`nNW?XMc>X4Q^s@YlEA!Y-|H84QWNu4XO|A%pf_b;7sI@JXNbuGEVZ+Y1D0#zZaeF!CHWA z1#mjIw;6zksaplW-sSM%U$**GxwUu>K~7wOT4_XN=L_QS40o!KYXtG+Rh?8sfw?uE zQ0T{Tlh7y<2{A2>TUCqgVS%UZ_Nk{@edr1tf^aB~de1W@1P*gCboDH@3L&UOS6MMX z+Sy=@hqjG~cswEQATumo14OB<=pK2&LP&A>wIoWfAbO~x=zQRtZucMsrie1}C_fcf z8(!3*W%*fbtC!i{?dwQo@}-~72r$!oI4K4vgD+3GUXD-AoFg^FdgUB74^Oq6qcwn1 zHRq@j8cE23Z`q$+W8wx0LO%4a4mVYDj@GceDmh2xi>sA$WDr?-@)4XtZnXlt?7>>{ zn6r=4?SLZuh&-YahPs*o`H0MNt&(-Rw#-&@q6V3*hHuu)EH_r^8{Au^r*pwo=RSDQ z9@GXyQmMA}Xpf`XNZj`pO~0 zD>G2#RIIWB4+)~)8w;w!B}E5|0*s|;@K^CrTMx-@Bn?tcJq{3Eiz%Qyqkt&a*s4e* zwJ)*@`=*p{rF0G_OIS+~N|fD`NhVUUtWn0*V@fy>0kZZX^5Mncg*PC4!K>_HL~F-T zgvEW(YZ4(A9G9&g+M-fOo1A9iLLootKUGx;l!xrT8C00&1P6HMsOlt0ho53X0ZQD` zyl0x|Z)_9QrKEbMBiJxd6UMOB<4Q;@C?$*0?R$J`I;mB54?k`T{+UcoIg_b05&deo z95pgki78ox7BvEwP&_1x0+HnU*chPee7P);1uC6&sB>mRCGZE_@C%8$jh=uPUhV}-T+6!E>nw34Fx zbyZzmM5nx-iWE50?ndlDS-BPcwVR_^{`CZ~hq_R;eyzWDf9>l0WsjWk<=YOsu}GtX zgX*l;4|e&UGn2l3C`}nn7A6t>iK1u763I>#hum`YIN<8{Q@5`AUGy1JzZW^vVRrKu z#-|4Na??o#sD`2$qB508M$)0dknl#Yc*yPb#|+yE6b+c(Ldlw=$Q_7J56%LqY;r0G zetV`8et?5`!^9M-^YF!#3L`_xL9mANKT zsWx-wYL!%~HOSzmAtx(>SP%+G327qrO5ojv^)X|(Mjl4=s&bn&qB)OAU$d$DN?>R{ zh;Xk1lGjh7G@VMbF4e%4;1oY6GKkz0#6HNXnJ)xAg1S8p4%YRl7iduXs+QD@f`pT` zrf7kUfxcUXa8XvEfIXu<#n_%Cxr4~kBKd!0>LBT%;PIX>*noDaRzj$}j_w0Zu37>U z5h-5UvPZYFAbrPnj|Ugsh*8m)?5(Vb2M>%=!xWM#fN2G_Q-OKENw)fn+xn60;n+kn ztzQ-4u7P8)o8G0#Io_sn_N_u*pmZgGcpK^iBw(4PcCi8@rmu*0F@pO;K>Kc?d zXg^vnB1MRJUTa45Rhe$Y*-KkQC0jpjflUm%RB5)NC#a$O8jt1Gcow7X-F^MtRBHxz zEw>e*K>MzkQtTf6-cvG?NR`z4^{Y`B)a_b1W9=^ZeAGa)C0cfPUA&+Gvf-_1UXO~! z?}^;hQ7LeQ_s6rP7_JU{30Uk`%P1eFHS&Mr9X+B!l#ED~Qk){|D60gi zMmUZJDBMmPhgtxg-8^&$iCevwTK+FE>nfmKS6&T=TwWalNeO$Q^wi3)EFLe~>P?E8 ztZMfW^~%>{xl#4XoaX2<#_+I1gKswvA{z%0K}|0f>EA0K&l*mj8uM>JzVwjO7`WE6 zrRT``zj26q&vG>_M%I-v?Jk!w<>{6+@?;0%>85juDqOi<+~V8f#uOR+G3M=PW9U}G zFR5Hn6}#^wQG~2YkwCp=?d*VX;`?F_-rCrgk}Ars3#CcBkoIGEDhk%3p3GSdb;!oE zR_!81bZ%8FM(f*37onSXRh#b!jnJfN2A6nxjl;G3^83MdS2PW+iYtI@f^z{zGcWwP z=A*)q2!dIP^ipa%O(#U)mq>MzsSs5>l1|~ONo3@cV;|T=iALV#T-RiJra0{qhE9OM z>j?T{lTo010pJxf2N@K4gV6Z_X<{gwUKlVvlhv3yi@=Bz9+l4 zkU1@zO=6)%yx>gNKt$eEc)0u_IqWq})wpA&QelpEv+np55w>=%zxk+X-&nwAt>)oci|Xx*yZmYM*t{jxPY|~ zH?Bt`cx;pO8~`d?HT&4jzUdpdhNy6rCfVN*+IxUaLXyC>X7 zEz~dE-O=3_?(OajQ5S0M428oz9ig5s8q)4n|6_+cJ37K$9g#>ptuJ-qPNe$aDb@_a zicq8t5EW7r>WM&Hw&H2Hur>z7^i}{p6`+dahmcGGeM42R1-Svnu!H2PEKr)G)Fr(h z1Y;sRaDyyBb2~zK=~9dr<2s#PRYG}vrs?|rOj8>rVxceRGtPSfD1`17?7CkyMp#u2=;c=g63wFgm@((UEtqIx> z4j7m4gPXD;)pv7Q(m+U$pHUN$6X3)y-UFP|f5Zeit&hw4+*GLmcULK{0nh9cX#vmd z!*&ZYIm`96761^jihDB7WFd)wbi7HPz>^Dw+^my@ejKjUw=C5MK=?$aBesTzaLD z3qm0}94D4IYo=IorjxP!`V^8$<8UT#Svh>=#bn@qf;bwpoiU#<$HR7b0luS?YT9sW zB#I{$)dh^I43$-RW@m3#g0hSd7V1T4O07u5AaaDJDjLNYkz!7xxwP^#7U`+HU2uS+ z+~l69dJjB*3cvK|Q6Gf_oAC`i**zAR_QuFa8Qx+S>fSHgCcGA)ro z3MO?OVffWlnD7??^g3}W%xjh zTC;cwI76+00vl=svNsvUZdNZ*Cyj0I%wws+T+^HJ#EYXp@ zg;+k7Kzy}rXOfv*VHSl|b7?9#*o`+sb8(WA$cdcFCQ&$__`JEn!Whv>*aw!;i>mwW45_&@D?)%1<_yS-}eGBM0XkV~nEe zDX0cJv!28ERt%qrm10iV$otK(SBcbA3Wd--5 zP0MJKjTLKBT{5s{Pj)7qhK)P2C(?;WgmdeKj7}jH3b|JZaQ3E3)6U*?L$|GIon~l$ z4=Y7Lxd?-ZS)=@_oS{OOG+=1NJ0LdxB=VF0j%Kn->3LTP^Jy-|z7m1fZcq)hc9QV$^q@p(rkJqo-m3 zH!8UW#g6)@){#{7nwU`6Ftap4FS;li(`5-*9W`E-=+?b<&SWAgld@_zcd#MRA#ug8 z+R;BA#Ud7~b_;_Q7`R;p=nBwDsqauirvX;|k?jIOomJ(Zy8XRL1`=mMoz2FRDD7H6 z7ED#hU62$S%8;fQw{svHpUxEq_TrTTaImxLpjES2;4V+7yOq@-IqN>bkWW><@R2}S zA35G@5ZnmafE%9}HkmzrCkD+B?3Q(OU?ZGdf%OrmI6X5tnFg0Ko5geaS%<}9@Syb( zWPFwhHL1H&IUNznsnblwC$GFR5a@_TZMe&v-`XLa#Tu^N58cq`@+hN#S{w1*%Gr1- zY}-TuK1t%aqkS4q^SY(a7}|91X_+xJ9CAjIGq4?Dvz19o8H)fUJzwcP|C6Nymn3R* zJD&Qh@wDa0m>{ABi{hQob;LXXd`UH{L2yOh4QY#Ic{g;*1c}i=7Uah!*E?}cW53R1FmIPxbMy@#4V{q(1Ql2uQudhX3($Wm^zuXWIkb z!pfAX;G><&VR6+dku}=+QbpF_VFXXoRJt0Yne=)%Gs%(I=Q$F29`a@46_7NZN5JC) zz8g}xOL9dnQwSfxcFMciE~PR?9%HY#WC zm;+fzj|CG7x*-#h*vFL)r?lS<+*#a9uR(FSQJDHfuWcB1p{H9NsC*kyrX`nf z3BXFDlNT1WRaFkBx?}30lMRx|Os^0{eYwjktxu)#&rd!Ee|PA>)>(Ksa8zMol=0& ztKM1l=B~PfzgNQ}YC!)n=abOh9ZaH(Dpc~-r^45mQUcpKf9*7`DzGL4-hgLqMnEVr zzN%G-X8Z{w75LolA>{&L0I+_ru@c{a5}{itJ<7&APGm=h0R{0(Gz1xy>nHr9hpSt3 ztlw%X{Tc2pRQojO&4Y5iIr!=2EF#XaTd;b`+o(rkoufDugCZ=?3cjv{we~fvjGQF> zD6nZ=4hn2Wf4Wg{lQu!Fc8HmH3mzs7ifRv*I9#u#tc-a1U~ zh`!6hiQ{SpXjVQQIFHMLrbE9{FW7;f4r;vse>Bhw(8JUVDi*N{oB7IkLFbXm(HtNE zEnU2y8G~Q?W|tp*_irNRz9_EeD6O1ZTX1=kd}xPIm_+VjN~7HlLZ7Ir?jnPUm|#T; zZw)rqg2h}fB0pAhX@TzU@@`G7-oMZZ(%s=b@z{I_i>|`XyU@i|^YKRmc191)&g-;| ztK#Hf=Wf-Kef%5jf~&Ev@0zTR(#{bIMbmWdom$QN6PuvvE}8^HxjvWE`n<}491 z$fvR( z&WhXcXuxF@>>ix44ktO})EjM-FRNlj}za2|WP5bod zgQv>T=E~gNL{PyLB5_G7@Jb+dH;?xLct-qBQM2G1!Z69Xvqirk(x3gjl)tO0=$ zXn~0zzu_;qNqq-%aFbS1r+sI#XS(K#?s`UIHgR$6BIAjtI#(RntGhMUII!1$g-xg; zcGxqT7uQWCQGC3fd(|WlH*sv+Eda|Cw=I~wag{*?SHrEmx*J>*fuiM^5q5|Y;iUqJ z&o}0KNQ{nk?^x{E7EJ87|0LcvJ5fj_)^rVMl42EU7|#AaU`R@^tU|A$2-|KIMc67X z^q*d>U^l<{za{h6Khr7$h{8Bx$|54s(BM*p9<26yRw&=Gsg9EM&?lQXL4v=`x(oZi zew}p}qEq4y-aW(5lR-}F(-6jTM2`h)Z!HYG7SIH)t9xDL2~5aRIqV}!es*_li< zS(pSENVbYkcO|$p*G8bP?A}} zEE49^v00?14X5at)iv#~W7k73`4q}eE$k@2e4;1~#5qBPjBGd;RP|>^DK<5R{ZTC&25~+e>eSh+yU0ZJ8M=q*7VE`=AXw~HgzNwTOSp1m;r20S!=CV%#u?I)` zma&IHrM@RT5vQ1pB^#K>W5Q0UEOc10?53xclCjLt&M~KVcXC#}USx+5`8k89pzsiU z1UH@`^~NwoCa19ZeRX7`Zzp>7f)3_72pYmMz$&3)4w8S8th@Kg>T<zTt8A4dkWF|{K@Dv#9em_a^2D+RdL z4pF{FsdGA3oTh)`DCmVUf$ZZ_j{n9Bi}*DdgR9bhk4p9ywN zhoo7n8Zu_Qb%3+Bgno4}1WCZaygl8+bO|Wqn84@uVLL#JM3t4dVD|sV-kAV4c2x)a zF<~)*f(T39K#Q8Pm;gbNmyrXdn#B`&wg`I?M1V@Ntr;niZN*DQld`A*T9LL?O(~eP z6g8CMLZKooHFQBxXbq*Hgr#oiB2rq+_M?Ut#8&=u?mbsJ?^tgvFL`p>F~sBZ>FB=u z&b{xxyPSJ2zxRWYgV?3oiK|P8k5&7qDnnh#0Jp$c5@ujrIlOOh9Cppws{N4b7iV|Q zx5=7!uUaf%+h=W)=x%#O`0?~J2t@A+o57M&;Tz z0|*`fUfviG6K4>>;Zy~J)*+A8?z&hrZp{cdUrno%sE@?_v^k3JVSza>>=x=cw%zi& zfWTTa$vKSTItd#F(-0sN7TncTsO>%!8PegTFxs^m6zORQ6FYkhHdaEU>)3w0#}lwi z6>e?|J5*u$#PnUwHaX~;@0Am9ao^~H=Dtx~Wc{u?VGZ;zW>pDI&MwX@%)`tuhWAq8 z&2LK2L+q(3J@KQ0p4-ZZmkaj4a5@Rf@T%A-&CHJ-n}R{#73!zB+Dx??EB9lF1cpts3sHXb2!0NpfvFg5g@(y(y~UUwOV^K> zvIRI9UI634V>xqXPiD%jcBw7fs?*_qVGfL6dm^SLwbbN`Iw((-sXiPJ&&``mB_ZMz zc0m#o=}dY-9-Qa)X;cANiqo(CGa1NJCU!cRSb$j7;Ijpi@W9+$;@s%e@$?Lw zbgzHGq4rHlx1hR`x}ASN#uJN8CSet@mGkN8DR{%02Ax{_)>H0!9s^^uXO9@W`c(k8 zR%W+gX6SV7soOdYIiH^vdWlr@i-P=VF!1{|pOIibn0<(+(o}CWSI(!di(9HV1bUgEi_%fO{Z+v_r9d{`3&13wteE2J{Eg^Kfcv;*KO3`&sK%YIMrsT1$=u)=KWa1vm-SC83nM8-*({PYYZ0fY0q8pD5o=Q(A=hTcN zb|cuU>o|8eZ+ip|jzxK}4CTcRhZc^rATZ5|G;m+X6_FRfiU|1Oyf8MVX3kwMCOA80 zDu#!Rw;4#QUX(s6SJfc(zIJs`9h^?j=mS$W8&kWVxBbn$!4uYYE}}W=aMfn5e8Dj8 z{Q2^`A1!jrLn7?>wARIWlss4$pPJ&UP1@ODH^P{9=rI%Mc*NX%w7X&Q9S-kUzeM#n z`Pj%T>9*;^IO|eBrj@R7BgL(eD%`nnLdErAywdrdP&@iI??Vmg3ggD0b<5S>%mlcZ z#~s!aRp3MFh;rA1&gfMu*!%`@NEXtx+-7@ugP%LRoW-Po`)>{PMpF|Qd+&|buit1e zQH;}mZ8`*|Qo83wwZkfTOs}{OAI39Wuu`h&>Y)gR08C`Yl2ePhkz7_yVh<7Yadacb}$^7p7-}MhPy(Q^*1zdiE z7RT;(hph&zpXwb_u=2*d5#S@6U5}w(T}HVwVe7D|S@28+m@Uabn?{T7qesV-^W8R1 z<=gaXq7cl5%;9fa@b2V(ZmofGzZxj_tAX;~^7TB_^!3E2)kR-<*xs*?Dr6^<;S5Hr ztiTU-l$PHE($pdbIm*B$ zK^RWAJeFYA*p^d0q0t=OGdFA3a_!%*z2;$u^s^dO<0D(l4p?V`vs&O-aM;y*4v#40i&n5yb>5>2r)ePG3h~0HJk(){ z{uridKMxV+KFnos76+%=a606?mqLwZ3+!H;j8=3J{}9&1`PkXCiYqq(jwmhHX7@7W z?~lyQLLXs4$ANLmmFnYn)fsWa3_*8u({>|jdlxo`xt#4zIC3{RJx$@G$Ixs-qihTv zo?V3C15H=D`z0TA5qm~j&o3@JXA|kU(PPsa4|du~h^E#hC|+eV+^5=Q0#6pq?LwG8 zSWfc62pD#`rsp8wA9RHwMB)fEM9qxBf$bZ!28-#f@ZISUXbyN{_gCcCk*vZ{uCFGM1NnEK6dDSXiEx~bcRNr7OOvuB|b1mn_qn7xGj zwcgcxB!iQ)xQ}hmW^hQ4?YmpDgB1DWY!Z(~f=O!ii1SE7Fm0_}>e>YF!KUg+Ecin6 z@#btzvQcl-n)4TToSNbL2ZkHBybU+jp@;ucB6=wReEvky*O5axifC zG#bf7r|XFHj{)(g<+`u{kDa;5h$T)Jt@ABgnccz zI7cF`*Ts_A*~t{vL}m_^a$o@7(&?MjDp&0E;tU9|sDuIV&)-kq?r32<*B2fObZO(T zpt}t2FU0wWXkfL>a*CF(@ebV2PQMD{qjCcA z1XK-&U@Y9}Nn5sgmbwYSt#8A*_;o?4p*p1I59kV`zXid&1KPc;Z8^Gcg`g=4wtlQYEW!E15|$vW_)!`N;|}W-;XD-oSsIfX{cmad3CNb^IOV5KV$&zkNGQ~ zf_`5sxt5c$<4v9?tkfnq*)GSMrskYu)5T3YbZOJg4y`SQ9ryvcbGT~2cP24CortOP zbZ{@RSvhX?CrqFGSWHzk)k3%!4md#Di}!90{lmENLLC`ng3Hj5^GJ+BDPwd~=9MU; zhq-9Z{y;0UxYF4S%4!Q92IJpB+*=JZq7VzGea^8{?_$R9zwk{i-b6q}meW-Q)^cqz zw3>B>EWbC*-oM*%zg)ET?uK1c4WDbH4!hTme;B5%ry%k$Od~=tiS7;i2`s=7C1)CK-?GO$VPt0W^U2`ROo44 z<|772e2u}OWqR0TR!PkQAi2-Ci@iLi7ENwy&V0E0sQ3G&7oVuM>OR{$^4aFJ@xC8G zS@)}5vJ@~6^Nu|V_bMAqGpU#lYL(4wO@h@69iv{?Ew-LI8iQ?#eAtEIzjaM(tx>~b z-1*&N{6nxO3B08s0H`@;kF8O|kbHk^Yyu{7lHiI13s4CN)d$Ws6C+pa4UuXhwW|&h zfj}Y)^F9ze9iLM0JWrpQ!E-XTy_#cEQ=DB6AvH{E6>wCaa*u7hrFXAHk@63bX;s`S z+=Q^95+2nxr~xz)uJ;4!a{{wrTx?2Y_idRqkfI zA0kt4$hewZQDdP8V(uR>w)eLx&6bUAb3HUK^p0JP`~$5<7YlnN0u61m(biQMX10>B zSr9*g*&J$uQF#xn%=ta%U^4{S~O=%t@_Ax_%* zmPO#b2nTnb&~uG=SY9XF6Xh;v^={h>9xC90sC&PACr5tD5ruN_`$y8SxmtIf_}uFG zW-8&p5&V*lH9l{m@--g=IGLvD!l!#;;|mEmrgsN#lMYVd^S3$b2UnPUv2mClnOyMC z!!evkVHyhezp9l}5Jm#{K%+;5ttW+%2Vn-=9GL#Vyt85Zoxu_5rlY8C56}2%Hc#*_ zgC*%^KN0P;$?dluahlcLVC%t_L!`DhfRTh%GQ2h_W zdCjr0% zhxg-eI6PxIFgUb-AlN_T9|Qr~hU3!%f#HGSq5XkjB&Zh{>K_^o1cwG7gv+$j8}J1J z`}=+S2Qf*1Q2p`;2KxI0kd2WMh+TdPo+Rw$Cr;x=UNg4rMkI-ry|4sfQ7b#Iw=CL^ zc9Q*0oOH+Yi0SApcs}?kO~;{P;}{Ox&t``j_Y`0(!f`gaPl;$b}ONiCDLuWl4@;G)v$}3>Mn(Y&pbiu4z0r2D3sPJa#g~hnfp;{kTpTRJVzgX67oI zcWde!Z*QAh<6X>jVE1PJ%&R4WE4omIPOT_@(m`=TuNPfh+q9zW0(xEAGs*eO z33?0LE~&P|jr4~8HJApvzAU~c+Uoq4^CvQnWbn3UJsUVN zm+f8Y>Pl9BGk6MR|1|hmcXCkm9=eCXmJieFZk6dgR=623bvwV!xTShi0!%onh(8-f zP0-tgn$G6Hn-eCk9mKLtUrrbEr){`JPfqvp*KE(oK@Vo%T1TtdeL2~*l62;DFTX>^ zZ^WVDzxSF^Sg(?Sd<6GQ?c^T%S7xt!lWkbw@V-d=8ws5&$|orRtJEkBrz z`)N09zlK+|+9=&&_iMjCfk`(HIKK*Kr_7y6j$93|cx*z^zOkt!_*-WDgR$d~#n!wM zyp>PjzVDg&(-5vE0@K&fAJAXgV>dN0KRdTzmIRz{XaJX2p=j8RG^f)xxG0%I+KtoB zI+!Ll&PpS2zWwn8MDl~)+lIMK?4s?av(f|O9(VF6Ztk|EmIC~{6(D8Lmh|4g!TYzE zTZ{Nx@=iPNE6TKnZ5xs8UT`O70Pi#NPRGfKU04q4u=g(_fGVdDIXQ27?A^;%yR*_E zSFnOK6eD*}45WiElhMr%QUZ@wvt(*26dY3Kiw(vgtjs*TOGnYW4%cFp6D2GxpNfqS z$4<#Oo3?dyTp-p9F*?LS>l)`Rv3jyJ%0+^NLe zR4g$!mpG@>!(a#PLNuk)QxMg-tqwS2CbKhGUCyJ_jP<0mv`IozNm(nFoSOqjR+CaI ziKZW6)=!o6+ZasG}$N z9jSvUFc^yI5|8Ok8oX0zqHWk6Bmy{{*6ic^WjGwi?t2IQ1T!<;?C?SCYUqH2<0(v) zZRi@Fgs$OHb&41KwF4*i2i9%wKY!6rN zsDhZDlWAvqN9IDCW+w{nnC_y{KWhu#-IW^S5LeNhwg`-QQJ-byAFEG{=hg4 z+mll`f9lHA>7Kv8owS^`X;bsI-u-gza1mn=3$?X`(Y7bB%MRkL-s5UvM1Vnr4i7BTusepL*f`od0pB}hb}fUzyUAl)b1sH&L!a&1?Ku}e(9EPK*T!fS ztLqiJJV$tfaGwd6{cCouZh7XzJ07h#!1;4=zJBSn1;Sj@C1F%%F$F}ky zji`32V(q~G#(Af}HXd&Jz`D1c6fPKN3?3u%0_2bK4$8B`-iF_==4j0Eh4z_^?qq2g zrXaz~0D{nJPc@v9blE6@mQmWyS#`%STZ>53wu`{lU_0@%3~a&CvV+mO&B;=aLFC%j zh5`F|n~n227Civ(btlaTSgzeWf~{t4$5m&;%N!Pm%&d&w>w>FA=Z~EL8u-BI$VmOZ z6W}><8Un<^s0`*-{R1!pO-v?dCeJ|(YV-ykj}1Tosqqnr zYJs2oTSv@}kEl0=3Aoe`=ZNXX4Cb7(18R}>B!op8z?}%t#fIn@zFSwIO7;b?cVF*D74swe# zXBNR@3SNgWj84MgVmj1fXR}kg5jSerCZ%i>QrE&WYIpe4-hSH}N$aQoVB}yjF>M}F z*7EPf)5tvATbzJn_uAgOajfOt*tV{B=uWf!y4~poc2bu&cdpPSw+j(;Hr7%#8f{LS zUIps}co}$6$wmXmDb1njrlXYecQ>$~x*G?p?CS08qzKi(Wb=D&&FgJ2FT@G7zb-Lw z;P&gSsxe!>+)hjY`8Ay?_dO#9g=d7EkW{e)+|SmKJzE~8t{=(%%sief(;B%! z(X}7Wx|=UQ%U5gb)mS^nSu-W9>iMotgm*AF+wxNC_MhWc-|7K!r#opvTH~_q_iuK! zE^K_iwC(7a`p{gcu&pxgxRawwe&^9OHr`Cv-u-**W_D6%ZEt?lDs9+-)7HOa`{5h$ zP1c3I5`O=I<^eh}b?m@In>an@o!0dX;wc198IGA+Krdk+sj#W7g$GT69 zK|s>x3TOxJ$uih(mnu!b-&`?n9lx}(C&Z@pyHIfgI|+rPw))I1&g_|r4{o+FRBQHm zyI@ayO98&&CO;3X=MI7xZ8NfUmmao$zdEEHcH=c4y5=T4+-QgEL=b&ps;gDCO)uX+ zppWXFJq@nJI6XB9JwOQm0~2|e|Al#sP(dfeJ3H9JPBsc(+ssUjrW@hK6VcxBIP)TI>yWSi7 zV)swSa(pZX|8MRPZaasz+1 zC>eR%!-D}~RG_ZHr1z$t_pmEuGuQhID=f_wmcYPVa$zo=gtkH~z0tu|7i`tERe%2+ z*a?mRnu?v@Xwaf>(P6e-%aef+o97RSfR4Hc&{3Crr}pchMY|Dsr&D(kIx37s-`N<$ zLT%{r<2I8M$%WJ`cv80B%zGlo8{%8+u^h9$#Q7a_b}bx_OU1ui!F6_!-K~_p>)GwR z;OWsnBqO6a_airSJx#Z=Lt_Ti6P=v82F^|1;p4vta=n#m;J&Rp^2+nOpRabVd0oiH zRvh7Q%sMc>(^E7%d`A2mPtx4V>#?i(+`<##Vm>==5qCcO-f0>8_4=m@o-UUdX`edw zCrntHb^+5(f5^Q|2U?llI8Et(b~<0I-3^b5E|jdB+3u)p-OSLyG)y$11Gi)Eb?d_> zHC?r*eA>iD%eKB=IBXji!?xYHi4JS@Zk@8X_2O!`!7Vej)lsfP;Dqgj<=N8d#GS_H zX*>1UVea@rQmx5Ivxl#fNIyD-;pWZ}_oAQpJ8HkTUTgN~ob+~|^j&q^=Z)*%X2KWCn^?FLI)pbi`nPfEEOIwsT@jr7{r1oeUQWCFbv^LYYs(N*)Fy)TOe6 zZ5>-Ghz*fF{_j2>4ka&;V@eD6n}^Knuxw_A=tk|J}l9(^f%n zb0`Y@Z|oR69i&@x{c)yj&g{I2!{n55eU=LY;?Aibvk}`)~19?-S5(i7h0~s7j$+d+-#R*jWfO4pGWu z6N{(eh?#9>h4(Eo?0LP=dUnvcpaygt8c*}g1|VV>L`cuTM&%d;x1Y$sKb@S2(7vMZ z(z#GL+w1v(LpnXJu>U%d#ZBD1@T`mv#4`Bg4%7dk{LvLdIb<|@|LU};-MnfBE_U{^8t!=7-pKj9B?FGG;8cv=4}7huKFIEMKrXay^YgI| zpC3FCNsr&mLxVj-*5%mE_YS`8F0^dhDVgm?P-QJ1YtMLpFk>HJU+AzmJM0eA9oRY3 zJ#}6v7|%AQXR3Cg2XNsbY4?yg6bQCo)P^;?%rKn}=au2BB{Ms_dC27s9+L}2vc)37 z_rDJC(Vd+iemG}g8qSPM#%_q6hJ)Z>@?)b%)iLLzKhV!Ac3iEHR6+jiFb_*+jxIn1Z{93DnT82dZ{fEw` z=aUE1Gl{u#S3^qzdnx?;@d!KEX=ic*EzA_GOkhM1|A5jzxtIZk<`;tW1+^C`0jGW7 zH`Etk*WFZW^}SRetl28vV9F#il;-;coy62qi`#l)&6Es(lYv}nt{ShTvd#t(xH9g9ST{ew{E zuyZXt3oG4Qtr5-zdIC2(VvV&G=&4;QQ1C3ksOK46H-=Su2vw+BV0vOkwYydzpdN_W zL?$t>&ilkThOkgEI+f8?QdLfPG+~Jx9s#7PEP<%c`{BtS$z-6-?T3m6Pe^1cqju_U z;v%rswn06Nfg#9S<{WbfxO(PPDmj)ulfod9%IyGtK~^?UlB0R5t<<&4g zn}Mxi*qRM#_l9Qcpu8BG&4YG22>7RF59ybj`nERmJVpYFO{H&|n(W7RUN)nCIQ|qo z3|g@TsE-8CX}=CV01y8Log2VCA(>I_-*6HRdsxKf1k7mD@uHI~%g0d9r(iN$YB(Y2 zrfIMI{nLvXx*651Lc3}z&j70?xSg|Q4M*>hZQVp*ux-^io;-~;18eT_bO7>#Z7>$0 z{u}S0ZB=mcY`Nd^X5J5&H~qIuc{~3j)n&tVlDSSSM-EHF>b)u4l~k7@pt=m#G0Gz9Qk|=3g%{bESb%uC)KJX zJe5Omit|D`kr_))E#^jYS#`1rb};<@>E!eTbjPNX3G{4IRY(6;4>{H#CX!Rt;2fp{ z4+SL9Z|)6`ch)_qk&!8E8(Hr(oyF@fBu^aQQ2@>k{m}e@vDvdnl8J@IIXJ*<0R7By z%%EG)&FzQz{y$UN*kx?K=~Q92MD0;Gvgb?t&}?RBr7hpBJMZ@B&MLGkwr-Cyc8A@b zX0O^0xtYF+Ugc)A1RZ{Q72zNPdrzvpQ^f;txzK zt)#jhWN=p#ll^Ny>~_@6M2@8)P!!xz+TpeW zvK^&SWOMikHAS1K`G>kB4G1%E0rYXmMADfw)K{2*7|cM-jZ8lbHNi_9-I&v9IA2|T zG;|e|7j$zHnG6hYW=_wJLKQ??$ z<_5Ll65Pq=lM8TYz1a^6=KypepZ6QJ6GJWX2~`i(8nwrk>1^ zx!LK~@C7s7Y+VL?tq*MD8a*{09!tVJ&CDs-DTi6Z`VjNCwFG?H!EHhdKL+=wC+Fez z)N!}^J-YS#GmFnUXF6TT->@2As!708kYjcU|8^Dtwr~{{Uv=pC_<_g>UVci4Pjh2Z zZD7E3T9deOlU9Oo+d&N0NYCJ5zWM`LRKT@roP{*qZkSgbYdJ1aFz2yWG}f-%kRNI& z1fYO3#9)7921eR2S14Tz%=p3Iog8+w;kY|l+n=4yf@1>sWx$D33khhcr0wtsXL}uJ zTGM~f-3j5qkO?<(TF(l@Ip=d}+>f!b$RXR!kxF-py}y5hZDX(v2puF~g)FwXkj^;S zdMr7=n1RV|2fKHrs%*tqL^W^0@iZ(3Le-i&Fau|rWpJENK`*v-Y*&Y?1|8=!GkeBL z=CaM&+!d?B)Qas0ROOxJTCk{o-^MDcUInnulbCM%P{EW@GoCWN0me_ZYa!gdlVSA| z$oVkOtqh(VJbCqr1BVAAv*3cL4k>^`to78g`e5kr>>{)t5Sd#q{xfZ0FxQ6n3#ir#d9)2!&#CBnMB>KXMw=X>~vx(mc<%{A=ufI!i$&J!q#JgWnilX z@c2X5Wp;LMO4l3ukm}qZdUhnWo!q@mwMG!j!Nb(7Gb50hn0}C2Rf#gH;}hx1>~2Q= zP>sm_C8kD3v0VE+V?_=(ALcRL*H@22vqDjg#Fv+AEpWTZLfr~YB+sO0M$(bUWXs(A z$@K?emN|CtVC?E^PDQRc6+88!2z1X`>kMrdoJ%kf13yi0ywx#G@Q8LCoH-=9ACo*h zIvzQG;6<_VQwL6ss|H}}p=KS@$BA)B{{##UN3TA~n@ZcA4Wiodt6w-W7CU(LH75`2 zR)|`0hoseau8Bmp{GAgAqG-jDYY!ZE%#bp*vCH9+tHyA23KeR%3^Rl`9QAc@pM#UB zunH^NQfs#IlA4+TB{so=UpDZX5?rB&Oz7?W2~C=M)Y23`Qnr z=NDAF*Lt-a!nL9iYZCvl7Shv6eP8rS^PhlYGBU7D5Z+2E{WcsNAi&Q2wWD7}8@Ydf z)1WT$?>tz&g82l~7U5!6Z14~)hJstJj@#DmhG7|RA(jF^%Up~a zpLSZ>Ea@{d$`gj?Uzu~mD_l{v_@>_L?ULM&7oN?+e>0hL%H$i8HSbq4B%DHVIz4u+I>t-(VzvdKN8tYLs5ytX?7>r#LPCepta( zr=!CuHAz*3D%35W(GF98TW{Rd0&YJXfUeH=fT17wq{3t|uGZ*>mFF9`@VCjd=^wT7 z+FDRo~CW~_AL{-M_29b9PhZ#rCaNY}I=too;? z;F3^P@aFg>VW(8HVp8o^(YO7>2QryRa_%&24}e*H<;gQY3hoQ21a*CLCCHOf3i#Wk zG;&C$wTT*}rhDjo#A_Ng{(8YCjfS?@%uLQ^&*7Y)$#we=%r^$9U%{G7hK!aOBiPck zLD48f#F(3=+qcRlO~353G~4TqpP27ZXM@T^4-}ex9(pkjjx?WU{iYlqnMyAlf@W&o zjrlh+5%xE`aAAGNgNMQ+C;Tqot;-i>cN*x%ow|2XeW(40PF&;ieY$!{Do+?&9&)|r zx_eP}r|wlE-Dw}hJ9Y1(`cC(QBi=$XJ>zoib^WsXZvFlvu+o#9%feVaczCyL74iQ z2cH19pJMl~tM7OCs*%I)IpU~(GF7myEIqT1dUqTom<5LPX^}2JTy9^LO55eb26;Jm zIQVIH3-Sboqwezb@6P zli-lz^1TkYdQE+w{{9okyV-Jd=j!_2T|8-(wU%yQmCD)e%^vKI{av}XDdXhn^o-k2 z^3a&OSEYMB7&(|sOuO7_xp+#hs#8>-yR-a}S9Gca?h@9%U*jX%;TYT-&?&&xOX|CH?G$@fxb9vP{6n1F$cB}3mvRb( zU)QV1pSZDCdU&1R;i%~Y-4KF6x%ojM`p}yeUAxn` zkMI<{WBq=JK@H*7RNHP?0FD?;q-O-g(*$Qv$CSR&9GHc;#;4(EP`mCR91_}&52a^d zV*@;|5FlW28aCQfIzi0WWMY27%A_Zz)K<#ViJ6%z=4Y=6Aez5v8ve$=)TTN5dwyYR z@|n*>r6K$XRrFtHCMRR_DEX0RA-I1sF@>@ZmCLBKuRM@3&vhKWs}fV7r0^Kl|_({9I%`*m{Wi_o49nVTkAlHF}KD)W>h) zC;GQ#JseUnX<=&k-@_rzed=%h+az+a`2+raIQ$QP8x8!X{z0vWu{7~o`cwRd`PpYZ zg8tMw!K-3EE{5OwIy!yJdL*TV95pV2e;=&AYtqGh=pW7X-#P-^Wy2 z-+L^jilvREVt({>O?o_^Ce2oQt*dc;%=?2b{O^JVE?D4#1uj_Nf(0&E;DQA%Sm1&M zE?D4#1uj@%mo2c*di!-3sS&IXhH#Omor9tIW38_ci(mJ27&bq``WDFe^B@@OeVjfE zf&9318iv}Bw!TN~^}qE7n2Pub>!KIyG#4*T!}lLY^ z^9QrfA7QmrPpIklblrFf0%VM$!R4&)Osz+H!AreYl-BAXWRzUFkoYl z@hA0(A@#4Bn<4Rl!T7UlqLg zPg=h&xc474ZwQ|K7tMR`vghAR+$(sMcu4T#JvyDR;AP?w!F^=6l;GKm^;}X`aO*QV z{hZ*wHO=#ad;U@LCBaSlCBY+~)B4MToAk?qoAg%&kAGgLQx&}O&zi3b9wIx`1+P+m zdhWKDOXRzcRrS*&c!=t4pWtyy-zRvD(hmz>|Bg;SBDj~Xo06RBVOH=E@uJ`rY6q4C z_x_=7H%fw6Nq^aamj%!NvYt&|5!^%fTM@kSIo+bI3SOh@Rvq}7;FVkSb!&o$=(_8I zo9kMiwU=+5uG=Gci0tDL-1-A;w_XSCmHgE@pM8QG`}hPm`3wr~q3ebmcv$ezYxH#^ zl9PR+f}87R1^3Z)bArdoK6$}Iq+f90MZqJaza)71gF62u!Se_7?DVqW^%raXvIAcc zy!b0xzaqG)KdXXA4(jXH1dmhx*9Fg$ed>Z|Nx$L1t=E45ACKV1KD~mM zUaHgaI`BThL%*i=eUelC2?}oP6A?U5_ZtYir^)>-&MgYWS^?wWzt`B;5EUkAJzA@F1WEz zU2tQchT!$MPRIJZy?z?rBY5RI+CCn^jeU9rH}>%fUZML93SJ}ogaogWe%OIW1dot@ zRB&UTxZuVYf>)oZ%Y997FI~6hz}E#g-GxnCHr^=P2)*e5J_meP+1o+lm^+}I~BxUo-4aATjm;6+NmAb5!EQxv>J z`b&bBiI*gQp|;Pm;Kn{>!MzXC{q_~XE0lgk@G9|D$zPt;MIc$~(MdBJO>Ul82$Wu2d*;8oIJ5xo8-J#MN9p8W^SR|WUnpgj+&f=3>t z`I_K)%70DpD)Du}>v!q=*9DLNo8}F{t-Ce1*6j7CYU+>R9@6&+UZ?!@3T{<(`d-1y z#DjwSepmNzLxM+$hXptGj|gt;9~Io#KQ6eje@bv;|E%D~{yD*o{quqw`xgW^_Ad%v zt?K!ZCBcpTOM)BwFAHw$Ul!che^v1KpK4E}s^BH!Yl0j5*915AUl-iizb?43e?xF% zf9oGb{iOQVBY6H={Tz8Dr{}s?@Cwy)ui)jA+GDCu@ah*Iqvm0Jf*bn>1vmB&32y8k zmHb0G|8c?V#8Z+}yOb5&Q${Z<%gPDvi|X|Af=9?c1;MjqpOWB}cjGmL=@s166QAJOvbJ+j@EY-u;PJ2M{DcKB6ORZUPiy-`1<#Xx;(~|B zJ~_dQ@6q|p3vS)1c|maR5uMMX;PGoTUlQEB$4i2n_xQ5l<~?2!JoM-Kepdz06R!$x z`WtJ4Tkq5Lp(c1~lIok_)qClEEx3p5+4Dtvy{dgn+sz|*ysmk#;O4pW3T~deKEcg% z=M&sKcR|6;a~Bf4M)T5P!7C@U9U_8zs9r?{uTp;_E_n8x=)(%@Q-a4my4}kP9(lJe zmz?17+cnP%Zl1d(!LvWmb}k8C`=RE`f=6Dc^HUbQM0`c?(DSu@DuUO@KC6Nk$v!o~ z^FOceYhCa<@w(*Hk8KEU>WTGF_IhaQNsr*Bo_GW|^`uwu`pb1c*(-Q4r|r-uxJA#4 zPw>)z>*pvaxOYyc9}?U%s>>xTc>E!{{}~b7w9iq&O+CpA9{P&Te?jo_vvs{K3Z8wx zu0KnH*MF?%<#^8@pNmY_D&|Zasnj+T0baw`B}Q$LxP9M zZehW_WVg8BSsL%81TPZL3U1o@oZ#m9%?oax--6)g`7H`=p5GrjXhrb)YjitS5!{S}Rs}cxtE%AU`CSv-Jim3pJ#W(OKtu2%aqC~~_0!nDM{r|* zkKo4sy@DJ2dj&W4?-RT-tNTSh!L3*7dKeVEM)N!&!F>(go`eOjyiD6aB6yju8x_2| zPundnxUqjqaAW_x;MN;;It9VK#EXI(`!5M@>|YYx*ne4YWB;V7 z!A-MuIxT*i^f}8qZ7u?vtA-J)>_g~xB=RU!WJ$-^3dj=_okey6U_5y2}_-QGq8uivWcd0cSo5xV}Q1dqQ?r=JzPNbkX%;Mrb%-Mru>(k}>Z z>{%2%PxEq1f>)?tR}#EP`pbfsh?fQT5?>L#V&3n9mq~wB@EYk?1+S3)n&4I9HNk7d z8-nNmNB48An!UbNi1!F?o@R`Z(RwKwbbVO{dy*Ss#csfP{0 zO+B=}WUtSr9`*=s>Y+z)QxAIuH}%jfxT%MIf}48i6Wr9ppx~w+h6FeDFf6#KhY`U| zJ&X!&>S0`P>n=SmO9@`5dYBd5`+41N-S?`aGx1}32xfMqTp3ip9MGVVM*}n zjDC)mC7;&3EO|!rRly_g(fO|mo+Z8}xEUYS1UKWOb-~T}s4ln}A2kFw<0I={dwq_- zRF7MG1ox5MJc5Ua_X=)ZsoN8;;1%kZ_6eS)bV7oA$Ub4geZ(Vz8@ojXH+G8)ZtRv4 z+}JHExUpMK@X~(W?&SqHb}I;O>{b-KKA`QkB)FHJmy+NSvfGN_l@IE4DuNejePLB{ zdXB1s*JyonP4MhL>F2a2c!~14E_nG4UH`3rv)4Bt<+DfdEOC$EWvo1c#YQGN`e>fq4rSl(0#hUT^8JoQ&t4G$j%kPeIA|9HNorTKTwnW zKlOOl`m()VWow%E2p%DQui#bktM3!s`|mVf7Cc1$-Vwn|WY4_d);D!J1;NX8&6fnP zJY3tMBzSyQKSwKqSH7;(sR$nbmgaTAy${prHw3Ry`qsbO?HT`uPNzq359L23xXFK5 zaFhR>;3hwL!A*Wjg7=ZUEVxOxDtP(ZI{#~eSO1^p>w=s7*9ABE@A(hAeLR%DNAMz* zdq{9|zhS}6{YC`O->35#72HSp&kAnQK82j%KH_=7v-G?d1ozN$u_AcL)Hli3bv~g6x>VsuYJRQzh3fx@O{h9P5-LauyZ5#p4+e154D#l>;U{3z5mN6 zc<5c)e>Ez&mv~0|{r>Er}A=@bP& zN$D&JZqa>}1P@U@R|JnzIu*f9I;(=4bZUYpD4lh|eQ(v}QWw1TXPWoC%w9idC>@XB zAxg(5_*v2q3SRmnoqkC0I9)d?_>Uj2pNqKQCY_YvCY`+CzfAcl2p*^WFAM%U(k}~c z^s9p3PWo$tXDR)L;BO~=>*aPk8-1_f?h`pbfQNWUz2 zipr}hcn|5X30`})PQM|zMfz6WZnr$?dj)U2U+eV=Ub$SS9~Qh$`VqlHeOf;&_&Vw5 z1b;H!?~>p((k}@X##!25Rc;%V8{)7aNl73k5(lfMvO7IBjX9W+Deo^o+=`RVsMD>3~ z@DS-&1Ye`_tqC3^{dK|D>3Q#YwcS2G()S1+9oF~j6TFY~gMt?*|53rcq#qYNOzGzZ z?3POhxFG3UnP4s1h+`vdX3#~cac54f;Zl$_4)+wCH=7A zb<&RrULyNs1z#uqoZ!8b|0Tg|q+b%;N6%wL@HNt375p)j|8>Euq+b_&iSqCH6}#P5 zNxxU{iz)q};1$vj3GOlNzu+sRpAtMjsOxh<@G|Ka1us(m%YrYH{)*r=%Kw_+CDN}6 zzCz_?{i@wQOQhc;Io1C@!HcBt6TCqB5y?qEDtM0cbAsndKQDNSp0ASNInrMiJWBej zf@ev;D)>vto^`=fq~8!cOzHO)?DmY4zE|)%^(RAuM@c^{_(hbTl;9E4&kCNU`c@P? zO!`ZLuTuIef`>@IBKQwTzb1H)^w$Od4(a#2)@~mk>3anKHtG8W?<4)7;D15-QNg{W z9~V4m+JC`&NxvX?%C!H2dq}@5c!}&^6}*S^*932nenW7J^sQU%c8gH`@e1B}uh#1m zJWlC{1+SBSL~tLapA~$a^mBrjNqY)+wHSN`aOaNseS7cyh!>!!IvpN5y1Gfw(m!5d`%kl<0$4-5V-%1=u02_eN$>_eFDrtFNWUWZI_cL050d`6;6-{~dR}L@kB{^{f=B3neS-Iqeo%6% zpHacRq#qaj9!fticrWP}1YaioWx+k9Ul#nWq+b=hhxFG3|9#SL2yT(S^_zCPy@~X_ zf;aBedVPXNXg(n3fQHyRDLbui#nJ{tI3q{gB{QN{bj*>C_k%$XGy;*_!lYty5K3&ZwOu`{odQ`_KcIhSMUPeZ%FVc>4yccQ2Hss zBcz`dyiD_ZMZv?Qza+Rt^F=Fyhe*F7cn{^LCU}ta*9EW8d~(lk+wJ2ceUIRIO5Z1V zAL$1LFHrrA3hpKSxZq)Wf8_=5CH;cnLDF9q+(Y_h!5fsHs^C4Ozb5$esXjCWw@BZ5 zz1?nknm_ak-guAJ>k~Xr_74kQC;f=v-=zFx1z#uqoZt<5zLo^9k$y?=_fq**1YaZl zRl#$lzb<%{^y`9WsXylV9lPCDNxxU{uhIPm1+S2PNbpyYeq8Vs(oYG#PWCAXUMBsb z;A>Rh%7QPG{)*r!vd@~}CDN}69;EzRZ?M~EiS&B}_tE>PPw*n?`vhMz?Z4m!(vJ!r zp#0YC{CH<=46}sQL;3?8?2)<6wd+!_V_KcIhSMV>; z{e}dOl73k5RjLmu!6T%f6+B1zDGDAY{UyO)LHSt`JVg2x!OLWyn&3gwUl%+@`RQ4* z+s8-x9>G_re0_rVk$zBc59KE+xR>AqG4&;OqOelPuN{O+=6wV$W?-0&Od zx&@){JEpI@BzS&Kr(Y8M>YpY%3+{WlzV3?Pp&NBN6~RAE>8uJ~`eU8Wn&7n=olZ^g zKkL=`Sr@!U_tg-*GOg3G-mL#M_PLqt(<8X=liEJLf>$#7`(D9+ozm$OJaj^*6BN93 zgH9(T`0r6VVZkd`>vW=m=dai4#07sM**PV6eM;LoC%8AI)5#0|!6#`u7X+_)r>Q@J`<|@x(<^xCrTY6`!9QZ^kKmEZbUH!7D=*gRgarS*sXu~yo}|-> z3SN7WPA4w-S1Fy8;H9VPbaH}QQJqd+@E=n;1;K02(&;P-Ze6R>DGB~~FSS2{*Po}; zSrObirPHYh{!~h5Rq)b&oz9xz-Z7m{P4JgIk?N1&@v^QN4ap-q9qTRnUsHcd^xo+a z-1lK>e*~|c)Zh0Cegi#UeS*hdq3YuRzH)-sMs+%Q!SAAWz94vLOsBIXc%ITJ34S-V8_R;nKch=xMexv7IzJV`UqbE1 zs^Hmg>-?+<9zU$psR^Dj?T_I3@9K0Kg4Yh{bgYv8*VG@MsXv03Z`bMc3SN7@{=Qf6 z5T(;6c;$2@4+oL!C}kaBEnn6Bj&g>W|>1Ki28w1osZvUEGxBNPtir|kj^+)jfnoeg;@X{4JotoeS zrv3XCmoxI>bN8^Zs;Q2N3!xy~f z)#;Q3e*=vxmj$nU8BavFtQEmaKcmyB2=1qJRs}CzuG3i)JbtN8rzZINRrLN6JpP+H zord7~$Ln;gJM_P%{`68hJ%X1Ws?+HeJpLH{eXrnIQ-1{ajq7?C6g=4XG-wW&XX zSAK=+kKp-7>vZCR|F)?=f_qQt{Nw~LJxZsO7yRv%PC@YMtvWwTf|q_mr&ALA1C-9P z;Pq>CepUpxD4mMn|6$r6!M*c3KWlx9aq?mSx>T z>GTNhy+LdA3Ld&xf8Q(kHz=Jx!98!)=>!E2JzS>~68v*ypRnMygia?axYeW6i3`5( zXZ7=y61?_OolZ{h(8F{(dBGn?=@bO7y-26CBzXRzI-Qc>Pos2}1rNPRr?Vn>{vkS@ zis0u=`y+UDn%W=1;}_|4YJxAB{Bd-1?r*XGQQ;Q;vdH|5K;4CV1)lI-Q!}U!ru@1uy+Tr_&I;@&lcY^)`DsntAvh z!Sl4<=N0^$kJHarpWwyM==X9^aO+1@UV@wJh6Oj*jSFtBn-aYEDSh3X;3c|lUT|~W zg5c)5CBe;gmj$m@^mSJR4^jQB2yXmER|U_%SC>ak@O7GRUl+VY`gOsJ#2bPy6Zig+ zz1&SYeS({P0Y1Ua{(_+3`S+SaPGWqEd+~mhAxbc7P6WmAn z@d3ak>>Guk5()S9UqWp&hH`fgdZt7=5aN`da7u>X0DZx#9l^5K+ z*9wBKP&pO__n7ug@EqB*BKX&TQup6h1+P9z_qW#s&(G`fs0scCvkoYD@rX{RA$Wd4 zr(?a-UcNU|Iz58dLpq&a!M!)>?|TKGp#FTH;F0IjI70B!S)ERv&L4je%mv*8|LLfU zmKCD&$0d(C@T>zbIPj7KUvc0y2cG>q-M^OkTyo%L2fpgSYYx2Oz&)R8pPxPl9&+GO z2cC7{1qWVs;HwV2=D-^c-1GMi_v^qz4m|3>vktuAz)KE%#er8H___nPKHdI)dmXsX zfrlM<+=1sDc+r6`JMfAFUvuC~pJ{);We09m+v^utJM$lUh>p|GR*`XPAr)U@{Fi{3 zcFDuq0nWV++~>fn4!q&Od)V{NuiNXuBMv<7zzYt%#GX5T-4e4;
g>Q|ZZmowgA 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%0DttE{{= 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

F*37R|((f-lu69_$g3>nGs~k)Vo;Z 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

!5?-3xAEV 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

Wn*p9x^QIrq0`iMn+;28G*kd2p&nm?(??o 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ℑ#_UueHHqGzgrD#u16Z~x)!u3xmikU)NLAVova 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�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Π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ɖpLfa+Eavy!)J z83*8sf!;YsWISDXi6h3#s&l5x-*PW*0!4caUIjnkh$({)rZipWW-2H(!@$QI4gDOf z;_($1k#tC^4~g*n18lkG8jb#=b`(7SK=_zO^7)4`Ih(vzQn{ME8mWNHbT~B?DPe46T}&WD_#uZU|W+iKy8a^MPmPU6 zN$>Tpk0yhlDvm)vlM_k%C5nlplV^OTq=6%6%cLzJ>#UQW&6`Xm-E)|h;77vaB!1fP zjTBFWaF!N}$CDzncs%JFFK&GjM=$YEig!VHRErC2#N#+24yDW;k73U_b{5aZu0!z% zgMjLBTvc>3B%ZYVrsW%Yn)1KyPf$L3q4Q8!i#2#t0d~l>Lvh4lEFOknEFOknEFOkn zOedgVI)rf~(Q$(w$Q*Xbh%yW04?7J<_EHR9RdG0oGo(CCYP)2j#v7z?FGOd5B~*6F zkL7-_Zs7bGKEC}*sO*wOmyDId1bASR4#Q8gR(8pnH}XqiL5S$-&QC&RmrPp2hl^Ra zgs6){XzY?R@N7|NMuGnmNu%wOF^@~lD)0!WCRErZ#~q&|6{kTjYK5{(PVBl+!WRJV zY$)uKb6iU$^!*cVU<_hqSg5c|UPKerV&O6XWHr#(B}<(^-+#psFH5XGow$r$(rW#Z zS&a~HVKZ%)Z1&(8v-%-E*k*T?T{7X)iRiWk@mV(0cF8%Y9IW+-N7zi;C8N~y=GH01 zFW5}mCI8FPky+0We`7Okmz-EJ1=>HP-4=sd2W^*ZTqh3x4?sMl&9q%ISE}XADvWqZ zn`yh`XV)@jg(2R=X4)d#!zN6G!A{5GXuIUvpovnH z6M|5usED*n4sO#zN@@Vt(-Li$WKZ$nn>IvOklr?xcF7*EI!ZboWQt9tT{2`}V@X$m zY%uf}yM{O;&*h_Ti@hSy+KI=@_@x3ZwKD`-YG(+v)XorSiBs|>>~J1-$;z7>$+K%J zBuJ0Js~a8M#x6NNm3qIf2v{kbYrAAb>d&%#W3ZMs*LKNk#eHP;J_u~M&9z;!+ouz< z{9LfbhW}!XrCpNt{;=%Z5~EhJGQ|Jaz9^*r1T*6qy5~iqXMcjJ$u7x%wo5jYc1iXd zyQH{q#H_@HBgUe-!&p>z7>nu-V>-Ub#z==3jj5udG1WsfrfP=9bkxz9jx`$7p+;jm z(r8Qv8jWdF)7VFi)2neyH6D&}Fl`KVp^E+l<%Q~5Yy+oV@;*hBT~eImja@PgwjXyz z9f?!^{>jnN-GiH#pGKjC6w-FdeDs%tu}jtz-?UwF%XG+%U2?DZrtOl4#5Zl1JR`no zyW~as<_f3TXuIS!A<%Zo2lP$ZC7+6EX_tI2rlno-i$1Hp!m4A>@{2^+K%8P7I%N5Kl zH5E)YTO$)C!wJt+A*&5d0$>kEanT{0+e593M3;361<+|_8|)mtaU`NU|wj7THw@Nx$c3?r1ulwES?&3#g{0eqKJqwSI@gSqTN z@G|&Ktuc1VmoaY06rX_Te`s}vQg+EXTVu-8LqhyDO@B{&{P@}~Ij{OVxebHCOFA{i zE_t9bT8^NDtq}w*NF>jM$}V|fLL*j*PB8<3h8k?_l65~0XLX3r23r`Jui?IZd|7qk zJHhr7r}Lq)OYWHQiiuk92GBiIT-zm2=guhccc3Wa^}-puOydc&q#^u0X4Ra8EhU-<^mJr6AHl7mMoYwmZTC=>MhYrEvYYy)IHlnf}f!NxB6 z_uAO3I{mgGU_}l0R(8pLYdf=&gzEt{CMw6T3A;?Xw-dBB@@ zV3@W`#!OU)ji=dWhbS)zP*FuAxZ4vHliYmM0lB8(y z3w1Fc0Wx1xd&TT2ZI^6(=mtwnCALC+o=VW6W$WxIWrM7@Z`dFl1?kO;C(bGp zj)7>_FA{3I<0VfLPW;hYeKlF+QQu}dcJ-ileYVQPXmb|f=)$&jMiWS&0YLnGx;cFE;$@U(*R z%mQB$DUY&CmTQ??=Gg;&#*s(<2-+_B$Bk7o*;9zVI+7`&vP(`mF@#;GHH`lc8Ue%L zxrRd1$jTop8+%Ne{NTk%V|G3!t&rm_ez&U369(QgQXXZO3<&m?c?N=yij+s$B@ezn zBl9c(U+>7H7F^jSmycjvEYxv`t~-)Rp|(r9Ql(-mXz4#dWKD6bq3%NPZ0Q7S3u%&o zrz4HMhSCaI*Q;07Hf%p>3WAr3lt*cA7Lzz}q|X=q?1~ye-Dk(eFGA{2xai zwT8+r**|0=%R$0b5bbm%Q$l5zT=vA9i;R~by6ebj?2-JHXCjTq-mdJD>&qmQd5VKqa^^91$zCm|FsnIWTb+a%yX48HQ`kU+M`;wvF1dBZ zC^iRdwSznCk_TVASt+^^xem?$(Jp!Y=nGl*GTh)s$6(tf#gA;;CFzkibJ4qb?s^@Q zq5mt0Yx}o;M|Me?pEdxZtHGu~o(~s()72o1P-la$wiI^B1g&6~Oi=G9yJXiNv0!BC zK(E1`twr8RAFIQhG~VoN?HrXox*FVzlG-jg@3b%H`>_aDFnE3cyUF|V^CDuCHL1{A?=b`L2?`Fv`flOMvo5MJvXdiwO>?@&tR8a zkDGD5wP2SVkJ6qkSBb6FNIj78XtRoZlAo>$yJXI5uuJ;9_pnP2Na10Z6c4gA4yfI)dgANZR{fakIDKu|^fU~NOJMgq z&%bq`xfPm3Ww;b_w-{OqC90HQu9)<-M{@WIk6he= z{vYXUs-EyJ?wGm|{U6ZROP`XW6NEnK#x59N+e{o$gSneL9nD;2iS}-gnz`sY-5tH* zcjjt9Q@P{zX0BE=wWb{U#(R0HEpz{u6Bfler9Lxv=6eg6J4TY8%w2l+Bj!$>1pVc0 z358)ZX+HF;H|MYqceAxmVV4Z3%iM7)!>jpz**oSQtk_e zVX0z|gMX8c>Wxi&3--&nX=5?>?g=r_Q{d1b=B}KmA3E17imm}8USMunzG6m0v!a8% z;`o=?9r~>ob5*3N;rHgjKRgbU9w@t zt}F`v6X*Ltju3UzKjh-vRp6f`UGvDZ(;bjUHkEeC?GuVi%IBaHWDKgTv`eNfggsvnsRUA5Pmz-_oWJxGhYvA4_p;hoqCGC<0C!LqN@zBh0 z=(Jt3`;C2aZtH>Rg^Zt;N~F4Q`P@#ay9UiehfdoibDnUql(bZAF8u!(k!Mf;R?JeIZw zPAbFV5o<||b|}rtT1n%E%5s0{a*o91tx@l`$-+x?VTYiib*ge2nc<`(gF{u>iZ-^8 zO!MB6Myj-3@>K`?qO_o~7wDCcsD>5d?dF*XWg;ZjLHCF^x_U__N|n>4JhRrZKCX1h zqHT3iPY%0esdcjaI7fL;QGM&fv29Gue}f~56luHU?mhAaH+}-58yGxJGIV}2cFB|l z^Qh;)5XD&N5Q<+|s+C=GLCxs$X=pkqvpdwrE_uD(GMTXqcpZmEEu*qaR%o(93cEnm z-yt-1$-PfqQu7b^B8NsM({{;D{@0~&CqzdaLSvUanm|2(zYG4>p^?dqU9!Rb?sx@! z?gkgxCEMq{B~n{y7UA5F!L|pAGqD4krqZY7e7*R8y7#7#ru!H-u-@d^kxYcXB<%AZ&KX{GIwB@&Nh);Wmo zVbHH;*;S3SOZF^zfD&H|NhK3|<4PzF2C>NE{VY*Jyr1QLrr%x?*Bxj{aV`i8YO#1f zONhn$S>Bsw<|J|X%*&;?5rl2ESiGMl#Pa>D?H2-Ag>F?D?+?Xa7{vN`*d^uFJ-u$& z_h7y#JXZe~{3Wiu{^YKby;=WP+AjII>M7R$wWnS3EkA~4i1~Tsyh?eG(B*=(OTOdr zE8jx@=Lmn*$kQ(Qo(J6v#~I*1JoUgJii-Wj{!n(wuRQcdF~)0l;cP(mO>y?rCo9f&?=pb_VEA7E-89ZH+D&SCnTM*OX3S2ZO~1CJL`Nj^zyJi{J@`)**$+D zT6S5yG@QAj;d(x7Lh*dUE?H<3?vG)YJh0>cZQM)cnXJYq)%ckjyEn`H#kR=t-feRH zcE21aJb*iyEm#QkY6I+&KC#Izxe`k&USxn>^4U(*RoX6jD5Zy8^1Jw=?2r)bx`Dyc1bz+%M?*| zNjdkY6j64`rJ~e#iYU9}DiMjb91&%gTrVQ2D5C6=TSO!mMU-7~hlrG*h_XxW6_HvL zQFh5gBGQ^7$}V|aMEX)h*(J}2$Y_cvyW~X?nN1O8m%Jt-Ybc`ZlD9=>@Mv(*(jpyl2JvZ2t|}# z(k&v@D5C6=F-4>~MU-7Ko{02B#MmVhiO>iNX}e@{5t>0EZI?_fLaQjG?ULz5Xb(c# zE}2ZOc7<53>FdJm53<2WML6WP7!67l$o zWhN|_T-hbRs{N21T;V_^kHdc1YvoT+=s)YLj4YIMa zOLqCQ8{0#RHVtTwjg?)pPua=r9N{fMJ8i7&k|}}?vIm4O0o^cI+a=F8>d%_dygvec zx3RKI?rbuc^&srO29LimsLi76l9OVjWq%RQ0~Bnq?#wP=)Nr)j`XW0;d_7o%&9z_l5uk@$MB2%BrWWajukSR>-+ zz^>R_+a;H8eaE^Ge+Tx(=Grb9Z+&C-C-L~}u>Kg-`fI!7!bLAwblQHo!GdgV?2^GZ z*%T^Y9jva+wOumz0DrcWcsH;TYo{ zuR`EuBWoH7yJXy4QMs5`Q}7N>jkZg^9>1Qwqj?PnpAbo-?2@B1&t{2m=H|=5H%8JZ zyJXC@d6_q9PJ&;Fq)~Rs?4we#jHG!B{v(n`*(H13JI+E#lW+qbf?*K5fZ9IFE}7Un z8LLQ|VDOTWG|~#$Cd-NgtR6NzZwTIoG*sSN*cSQ&x{FdFv6oX zl6O(YE*a6iGn)st*1@GHpum@K*d>bxbYu0GC&g|L%?%9VX8vohr0TcJm5~0ii_vxw zv;!9V@b0mapxVPNM|2EAYh9z(jOh1yL`@(0`nRA?6rTlM?8(-)#%)4I2=ic2_gqq% zIWY`h;%)ToXZ>+M6&Dv7nJiawa$#o2jm*z3%msgYiQlOUQqirDS7X{6lne9niRi2y zzK;c<`y;O|0!kO=>Z$8Q$>jiRZ75xseiv4Xl7|84j!Ko3F3hUWmb1zTKEOb?Sqe%Q z=3mQd2^a;7OZQ$1N*CtPo-P4X0t6c9vBJfXF05RVo5J+9cq?wvVD1vPbQp_UI*i3F z9mcf2!Bhe#*I${w{tY`S@3hBaRB59QAD{NZ|saXKN%Bcwzrmt_yyt!D(1E9yWLYcmH_4bwUF2G|O3e#8O z4M8$DkHG&w7{tmb(^tq>OO{Lykj6k``ieGk9kU7`UWnLVw5J-=SCMNunN`;gNmLF{ghLi zzMB1WQYx=Q^~j;LO<#Z2ZYo7y*o1x<>~yy2YvAO6r6@fFIh~>+()1OWuDz6$1+J_m z+VmBYuZ5(oKswk|n!cJ3?;+_hkiTszOpc*oBZbeT}52 zsK)fQM10exuj(W>rmra%=$kfu%@E(T>FefoV%qd|kG{FO(rmQp>#-1M)7M-2rc7U- z#I!VhHMvP~Y5Hm@rlslY^eu`@)7J$tElppy#I!Vh-51l+^p%gE>m`$>FBzAnFBzAn zuMnY;rmvDTtxaD~P9>E)ZMofe2?B%HLON))>8s==)g)sZpiVYcrmqvHm5*`+&{%`D z>1$sDIB^yryo%6jeG)aMFYliC>vkX5IR}?l$hwcbSMw&wJA~&DeKNwWaxtapYuX@R zR*qIH&K?~4805@$lSY}o{=AZ!Rid9bH*k=aXwz4(v&UG9U7%G#Y7-TkL7Tox<%-I9 zdxX21g39#eWBtv1sNfV3`;yNRvsR|B%mIE}Xf_&+2R@trTO*m`6k$oE>Fdy=4=f2K z|4hU-eUU~Awdw0|$%|4MuvagJEmEehvc+FYO;OT_Y_>+5zS2A`CPht1*|K} za$yIX8PPeLm&d8X#Z^p#?HEV&u9>Fe>(qf&c9YvnJmO({d z{)E3Y%lP7drlc6ejw?-H2Wj`$edKkl(n<<*LsZ-d#o|h#GJP#e=awF<`Vh7Ml~9?! zW^EoNGY*4jyb;P|%JdcTHHFkH1>fM*Xwz44r|wd70{ooT7}MAFBgG|t4n+T^sWX%^ zebqYoUT&Wl_=Ao9Wb^p(wdt!$r>jzvo&JP#YK-aYuEkjv+H-3_P>)3NOsGs>e=S+Y zYTNFZ1Xv+`Fy3v}57 zOVd}Cv@0Zj1N6yYZThNL>71;^;vB+GfI+UlF?|)AI)Rm;-!=zWKEt)?E5U`EESPX* zpqhlmZ(~efr+YMJ&53sc>tPpHrmvc-YO`8|#{x|@#kJ|{S>t|e5aA6#b`@bvU&Bg` zmi(0Fw&|;VS;dU$t67TetSfEoZ&1fLtX9<{tu}ov@jJ+d(QMN}l!=6LrL^fQ_-k)A ziFgUHaypSQeFZ(k8xD;SZefZl)7PfAcshl8n1_Q*)zn@BdrF(W$^>0yF{#9AsE<$y zI<#z^J*7=w1O11|dE9~e&Cm1Drmsb{%gW5rkKojgAyQ^-`U*|COXkZ7O;OUBs}V7C zZTd=*HB{!S3r(9}j_=|+v^mQ-pbeVBEMB9FqQJKE3H#;mdo`>lE zuQDprSE(!`WX2y5#XS1+I&0I{!yM_@6Z(bILzI(*W~Ghkt4EV3>;q}af!A~-Gp4Wn zJ)+1w9l`rV%A-tQn=Y)Dc_xC-ij+s0zD_S=GS4RPgN{7%N6@CPBi1*W>=s0?9LbbW znZDx1f6C6#(!249I6el?HB_drf*ohD8>Gnso}V;k=QF0SfL-5Yo+{vBk@6_h*Ot2j zWS;Ke10&^8rmyA0D#$$lf-iC8Q46k2UtJsIlgai#bjFcP3bpC0V*6-p9xeS-h(0(n znm+QPp*50~q=|JL2LT3;HPoiB#nr2@2-4&NFGw1DU(kKzO?HK{1Ei@1-o%+lo4!T_ z-DXMXQ0@yp%8^H{p)!5VjA8LW5-xyfy(5_tD%01MKCflQ;}BhPWHhF)y6b$HNcI~1 znLA$@I0k&@MI^Y@vfok?!{Ha?(F!b$Sq@GZ<_imslF%(x%q;kk zMI_=!M5F>mCf>=xA`5sUI6NXLuOcEtC{pA$j)G)- z9kvU1O{Pf3Ha}QIavm-;izz}6i6R2{W}(?a5qgLekwQj-re~VNA};Xl0$(DWyL|~3 zG1fXLB2N$r$bC16MeKc=U>e(tyjJ|Pc=V6K>tzgh1~(zZ0uFXL%_5HOJ3EuncPk%o zC`rCR!WQ%LJPM2WaeXk>r7FVpO=~hiqmq2(Jfez!9bS#RDrC$J+3-K$mTt6o+g?b-rU` zc@~%O8=y}%u8M;+q8(rNx*JPNILtqQQk5wMFt- zyj-=}ES&IiptT+tH#QNA`9i#nG>-65pwk9>57;=EMXcwAGxuln2tNUOW#h6q!XkF^ zKzJe76Lz0R`?na>deb$2#8I9q87g$b8Gy1z!e{xbF}>JP!li&J5T;#*1$O zsFx%@#>2{=VLal56^NLuflkvO>Ed5%zyzh@hk;t%?65Dxf_*r!BOizT_>&(ekbxFfq$$uF$Ci ztDSSp9;!#_(XmH8dKd{sJ<3Hr$~@}P4?wCO&5agP|L1x%%|#=o*Y*GBdbF}Fo`%ix zKi8xEZSia){#`w~)D|x=;@{Py7j5wpBmP}I8ugM{!Ieh*yLvQ-Ena8DzpFt|k8ZZb0Y?10di1_6PGiLX=X#Wi{jwf?Uc{pwy@-7Y&EH){^`Yv~ zsMz@2^#?^%J(@#Af+?cv(FP(?fg-9N9VH?SDWdAp%_7p7BB~y}FCs%IqUzDOSVq); z6jAkPArVsvgaN?ZRExDWdAp148qXBB~zEA~e<&L{vR0 zBDx;UDR4@{svZpyk(`LAdNg&btjre~tuVw|V(>bMCYLRSkgi9I2j*t<-5LNqlq6@U zRc2j}=3WD{;xvR8n$nJX^lGW-oC16Y_&!ry*Q3X}MCWOdonHsKYhzW9zHAx;tqTBu zBXm{I+*{S7nLeLnr3ohmN@ZhJj}9MQlhq|01XS3@sva%AX+LX6xDHT58>@Qse4#8X zoNzCoa2u<7w0Bi+K92AdpqU2idUR8GMmCS|Mxbp5>w5IjZHuiZd>-hk!MYxelA$3x zK=>Wd7Y{7!(SH9vXO{@ayM~rnMz{)4EgP$P zwAANYEG9NL?*!B%5H zqYyJf>!MVThTUpF^=N@9aoKS{yu7vz!h^pN|Dqnn{U+W|n~M{eyWNv3%-vu(`bZ1R zz8?KwBZ<33U{_W07?r3Sn+0dBkraPOi)ID3v_D@P_b#H9jxFsofpXDl`IZhFCkL|X3GfSyz|1CL z@G6Xp2dfc6EJqrj^=wP`BFDNh{vXh0gX!Rx&p@PRKYtr1_sM=!M@O;vA-cSU8{WF@5C~%l!h)J-Vff|1G0^{gQ4{nbz{D zJ7=!%w7E;5@0!|43jar&oBpQu*xbu8gP)p4Dg5ireREo3+T7pd=+8pf+^IKU$I_d7 zSE#+Y+kooL-6+>_=JLbl{)CxD!Th~G;+qu*A9{2D5zB}3gh1&HHd{z(2D}R|kN01} zEB~xxaRs!9HyG>Imr#KfK30#>WB8F_`|<^xU2U z_TL$f`#>e z_;BWa+!)Qd{Ly*_bGLtw23F#%PRHC0|Lefq2b&*8`z`4F(LMSKXYOqA&~!`12}zmz zT>tXSy{c74v>?;IKN@UFj0bOPP9Au;>!pyxXUM%ize?BI67j$o8 z?usD^&}a=>xN+BL)ttF!_1(bSCnllsnA=HeVKKZ>>~U-~1(SI^rt%*9!rYDgI$}o2 z{$uVDO{+0?k{Apv$c({P*VH!5T|O1&aczkgT7fBj2~E(nOM>=q?qc2Uo@&Be)oH3g z@)6h>-=Nu?rubUBbH?o~VS&b*pV{{^1)B4*Kz1uIWVb~7E&tae`uiT`=>K$#=-+aT z=wI<*dPmu`0u%SUKVA2({jrS|Xt5OyDsk6G%wM$vBVQkib`Jsn&gdDp&vq=TZUyF` zn3k=;923*B6_^V&ty(>)K4qJ1^`t3sI9h=@9>0bp{SDDAtjtVR7ytfJ*wG41r^0v% zW|>D=wgU5L5V|HgsKd@yU`j{Bp?25F)RL8-kwnhl>%LktIk)ngBm8)QF){YOk~ozU z>t%de_#oq<#C~oC=F>s=c<_|efie;n+g-N;6PH>|D1>k&jXV}Yw*r&lHC}sa20=%M$g~0z z^)ebP`x9)E;T|onEWD2%73=YQH)^5(KM1xMk$9uVqwSWVe9ZaEjGutuhEpWoEz+&P zjPqIt{|f|B9yxvkk4$rTuXcC}ln85%Dqk3B z4BpOYvSE9gR$$ul{LC5zHe7Sl3d~TymCTxf@M4Xet-uT^Q;%8Ozz!Oohf?cSVAgd! z&w>%KZh=2_YIG|wlRIQ*7JrPN9)sK=Jr>Vxy*QN$ExLf^FHxthDt!`AwFXSbJi$Luppl`fz=WEH_4%6Z?=Bl((`^4V8sg>B0^{MJwdb zK{CU6M+S$gvNf=qi;HFW>PRD1x)qqZ{)1R3EvWw!y%M?=nCx{fu^fbQ5EAR4TY)LK z^@1!_MVIo-TF1KV9YYrFtc!Z`dRDIC2W0tw9OXSl^{uJT(PSmff2$*j6zNuA4pnu_ zUG5x2_b_;zWavy_T7fybeTWo(hbZn-hfw^uQmtBnxxOQge7h_YlzAO$(+W(|zt!te zmB1T1G-?@DD==-|N-GcV1c>CAb#cr(D4J2WzxZUrXBsX9`)AEHwZp=kx? zMy6F#^BDZILnD)!R$#hrNAn-vrC!~kR$$Kdm8q>iP^ag{Anr`*vQKW*Np#)n{d92# zYV{=M)y!fZR!s;SYw@a0=+|DH=BHf2#!vAj$$N$-W4=XO%dBA#jmH2>73KU@a?z=L z?fH$+{uP8PF^FUyt)xifReQR;iv9nw_SW%LBvIGy?hc$l$RI%j0|W>Jm*5awg1fuB zyK8WFcNm<(2Mg}*ZXvkKz~J1q%Q`3I{eJhp-~FRcSJ$&@w^jFPTUB8JxZb;2pInC^ z^y)V219{DUy`NkcFg6fYaj`hdarejKOJycVZ%IrM$f z1`2KZ_8DW(*T8F+o}tiu7N?Wg!AowAqR{-}%3uc%%Nv723tG1x z#f1?pc=Prb6dGi;&frVg?cn9}-&1HIF_Zmv!JsZd6k5cpbUiWI!CR+dqNvpYGq`Sx ztFO>1f9~Y@k3v@Rc-an9Xw?r#5+P$YXYdQZ&}v*wE!S$!n6Z8Wh1M(66)oi@@ArHN zg|_LJ)E7r;sh0~WwCmyrcogv%x|bL{@_fghSY-*+w_g~L^#MS&zlBs&U~VAR`U+-12QHh5A~{s~sTTj@BZe6%Ky(^$!a5vx582raD}D zFVG3byk2VICx#ZI&;aZ2WkrbB#(Dt$RBNch;b?;>^rRK**H!wCTpM*lZk1iO&$@LK zn!{Rq@eJ9X-zwV_+TSX)bfuhCAcVy+#OSp3gIF;+&ohsUlYJ>Rynw5$)U_5<=(Ov9 z{sr3$lwJN$>MkX*cjnghA!`_96EKK)s&=14CFPBWyH-@ohCv(f2+GgSp8O}iR>F9n z%lH3kTua62uEy)t_@o*?QR7r3=d&l892bi%$6x-C>7_ek(03S`j}X!*6(@3)s^wHKe7RLDdNu|hI7uTYx9uP zZU1~64ha`r`hpv!dWDE~wglxx_iT-IwbEd%p)(?Y`U*IVm_twfpiw|cW{9xYCUTS&qlo3wJh;Dx4is! zeZWZogU22Io7C-g)U7jvd{Nj+3zW&hQ|>gzb}i>Me-a(VwzEnCm2;- zbD*{kR_%6#9j{DZ84m**?O@ez$A&A@=|1BnKr0zP6^o|Y?Ksx7I{jk2ALyuqRl6OY zr{+*5Uh;cDj~L4pQ|)%-S$&BLG5!e@?O%gcyB#kJ4Wi17lLMu3uxhvC;@$JqlyMMH zaR;k*JFLK})SYpCpr#I<6eBTqblq`>3Q+>yFa3Z_JTh3a!OnpsDgv}RY)rPRr-`jVVeGV<1Vf~hZta50M0a?zZrFt;^Za~1;h!FZ+z@{8 z=1!xV1+6CM%8-=>**O`>y4Y&^WJ+!Cc~j^SjpaR20jOGJe7O9%Pc(~hd!Vk2WnGk| zujYL9f|fHL3p7KQR@Zq_bN6BB3);k*4d6R<2&wV$sKlqm=+@V5B`G~unoAIb8xdD5 zdk^pNvUT>nq|1BkmsLO0-@K+dMaEh?<&)tuBf)?8Lv-$La(3$KPnXkpRDWvI0WOd$ zDjw+Z^?FaqD{D?=)Ag>+PtG$_6N$=Z=8Uo)MbEZS8G)Qp-6LRHTb1F*84W#lXQ?kU zd=5QsLTT)TR?WuCD3I4|J>qY{Ah)2;j&<=Yf4hU-vt@D$VtxkflHs21at)))E{`hz z#Lqy3k+rV6=U=-3O@|2tGQJrdg2+^k9ko)PIuH zECF8^Nt3(pXWE;|T9jtC)Eogn@2>HF)O#+awObZ1Q;3T3ws{8rhBad4h35i)*H(@- zv8^sx11shi9RC>9wr!m=6tyb9b-R=$H(my?Y|Q1xJDn(y^1rvN@#9GR<(C1ftE{Or;o>8~#vAUly?Z!ivS->u&lRF!%>M#g=kUFK_d7e~J@I9q)dHxU!9I>CBzY4f~$N;^5kOCamJT1)3Vr_QzV)2U%g&;;^cKG!CN(od^N zz4Bexs7N)s$v8hy5rYGN-nZyz#*&9)TUK@CHfO>|iX98J-;ReLD&DeB7gXxwR^bP} zbch#dAXLLm44+#uUAQ7XVYPLYqBG1FfUVNpPRv1kxG^U``=nLleYg}Igy6Uqkqdg)wgi*2dvoI`;-YZ{3O=MlYBT1Dl|^ zJewAmq6=1?cm3%ji&jFg*@%YBLN^&%3xA%3NSCe7-LsQ@9Plg)#OZ0EWY?^AU9(d- zvR`YYJ~o&9x;5_cAat66hd>zQ{wjdlCq?2bZ+;R$uKBn>%RDF}?!tB?kNpd$0=@~~ zk&gc(Wcw{ya$7URzep7X;@c~acKo-X8h6QO*C0O0b_C#iE{|RU%En#J|LP@5js=+P zK-sv<_>iBXurU*&zoHVV#$8_L&qu-F);|24 zi%O^(cS$-gObVYu^f@Y_YTTuNZWS>e?s@sX_qSzKjk`3Pd0Iv+08uG7p=sR3_n$OU z(+Iq6B#mm^WnbeQQZo#Eg1e@$Xx!yBe2|=6^+YYvgw{%p7Qu8+VD18rrJ;SNw^@vg;(n zgOg@I(jKB%b_;&G*QR8l!bo>2a&98cLaa9aJ?>(bZJyIkPAC0hVS4=1TZiOy$B|nwJ;g5hP)y_5EEl6z-Q)tT zTY&`%v8970mc6MKCe!5Kfw!S)Lht-xQJP8rZ6iC)&J;87TYdBebSG1KES6KR#NXUt zv5Rju)tc-I$GxzamP@|J@7gLkE!S-CggZaQr!;y=mRb!C*%l2StD;dF zK0Ap7pPod5&rc$eUngo{`-&Vs3yB0D!6LzjsYvj#C=z_gi3A^BBEg4J5bq;AW6_qJL?#;UzJ!t|C8LJK+nYF>-G0pu{XWG5FKY6@V4ufiHR7&0MO`Z8CrE(oq{3!0X zn7Z8?|FplP@+wqeZc3-!n}lnpNYOV4T-c0GIH%p4$JhEukskz^+(pG@yEhYKRgjVr zz-6^Ww|n#WUKL53g0yz1Z1-mT+?tXO1{vW{+3roAtih5l09j^e6i1C}_h!ydURb>dU#lIC-W!&n^Hn8W8i)9y{B z(bwc3Q#P>N4%hA8yp5Yv^2%T}9j@EG$+4z|EU zEUpAF7FPlo^YO(xKD>C$|KU95zi1xwKQNE^sN*poYdq#djmLbX@t6-Z9`mN=@kgvL zj}xltnrhq=;~?G`*bu7S8~FhG0Jec{_eMT|zQj4I-5YV~ARa&`w9lO8OBK@y&L?b4 z%k>Ll(+Ez=B%I|F16jHe9E+bKn?`W_#FTCXCj-k(BRDz5lx_qkpP15(;1m~Ax)GdU zo^ti&+2}@aDhPpY1g92HsYY<>i?nP6r=>{CMsV7Rv}^>Yhe*ptaQce0Yy@YxNXtfW zMvJs;1ZS#9%SLc!iL`74XNgG5MsWTTY1s(QMo#NSaIQzQWeu(x)0b*v@L0r0kZuI0 zR_}5WcLD0?7pU;Y6NF`yb$_>3oZb0E{$z5Yt;x&t%?Jr zW{=TCz?YL8nJV#B#*)ZJa3()UKz7_1w?nHsH$#P5MVJ6JV>liMRuK1+;;cYCQYh>9y79NP!E`s+q;b_d** z!U7PLGeWVrQm7iid42w;6gG#bdsITz2+pqb9X28K^bf#_-=QN zZUo1bb-vVG2EVB_rV*Ubo?RvW0K{)F)fq}Pg41GE8M%FY@KTdsY)07mx)GdH>9$Hu z9&mmc8bM7b$=6pUhjo_4-sUA7r0J>+2>qcTj@V1ZPr( zGjxepZ3ft4%_B8}Q~BUE5-*Td;{oS1l*}FCAHhyCFe@~8R)0M zx)Gdr-QURnp~P`f2{6djH;v#-49QQGdEe#*D`dEC1n1tr=cpLtT0jjLi+y7n!6}s? zCbehY3v7T>Ts4C8$D=aTkns$ld8W8-1gF*g4m67KZXo9`!Zd=DBHaebuWIfzf-`bb z8Ocl|IHijop*y^>?RdWAgF&ongs{31oT8_j(s-V2CWvydP_C421n0}3R5X`)d9bQF zkZA63#lZit6#}wQQ)daBlx_qkNzvPsfJPB$lb?zV|ZieV!R1sApI3;I)kP&Y|^dhQ= zsu7&28vNo@CI(dOd~kn z#q!8FJ;8@WilZ9A8Q0^nj57y(d89b15uB{+3d=a5;Ah<8$eo}Y!8uVimkjn8qEBwY zlu$K-Q((*`y3R`M9JS!85u8L7hs$8cA-e7sObT@)IBTmmrB%H2 z?;!f_7SS|<^X_P2+RB=Q32_i$h_Hsb5uCB%4QM}W@`IOTjZ+tNBRFM8jHc79X$aoN zJ&tY!r&qSLVC|agu?jV~w+hx)B_|H-0is5%6;EaZDpP9kVAVy9r<` z9mHt_XJ_W*)F0U+HHy>-PBzb0G!Ja88<(Prv+}p5%N-XD{F{>U3H&-VqUZCtIea3X z4FCLuPc+RV1ak3*T3)q&W+B%Tl<*o~cL>#;ws;*{x(MPp+7E>u&GRI7e}eFT>e2l9 zRP@n(Immw+`sl7Wg8S$$UGFJg&vfR_=`Pp)pL;algr$vZ3rFDPVhKm$Gx)%N?iQuX zCC4;92>&YEW}L9LfM9oi?XTzWUfv!x294?WzAr!tuH{J|;lrrLV>U=vuelx5)gSqS|G3?4(SqZaTh zH2di_>|$?z0T$CP<$LF%+{ectI>W+o5Ry07fS7i0jKb+9ehl=|!CVDm+T~l$u!zH1 z(Xk0)VNj*H|Mr-6m3u#P(M*K1{DCq?#x-Z+Vs1X;5VU1tyT<1X=`aLC><8L@d?8xcm>X+zHDI5(Oa@u#sjkoORSN6#PFYMqfq zetQeOr4SG6MS)H5e}eteoCXOL%StwRJ^bIv5DtSZ`u07JW?3|zb#M7qdinSCTls;e+3?IqMXnxe(T3VC4PR93NQ0@62l%kB1 zceApdZ%)<)NN*dtSZ_~$%o{Sux9WAlEs>p=MGs#kX;!=>>AnW5uUfku8~8G<)#{lZX9j?p)RFPZ=!9nZ=(H2s5@{l z-Vf^Y-s+*}#H*Ebx8vjcd4!4P-d`h6y|LUnY%$AV$m{UY0_wo#kPA*?gjq8Qp?bC27)hjQ{m4#D>PM#)LUQYdJ z+YUkJcfi@JD^8B(IqzWXeegeWDzNzvay8~u&(bN#)s|Buj{ifh?wtDXyoco)$f=`= zaUvYWspwrBlWPj6_Ho`kP8DvkoLnn7Rn!k>&9VQE!wI-peri9l&u((_73cm{KfVEX2egCP>vt#V8jn?Fye*7y&LZH$&z zN=>xS@!q+CWToP47SJwh%;OSNVA4ZW5i4JWZ0W^38IDfDYv^ouFXrWD3t;?nXKKm* z>#$2M*(Aod!mt&@+>{qH!NbuKZ*a$Y8D9nC#m`9-*=<3`HjialkKLJ?Yu~P6GHi4| zJy$m`X1+#fSt%7Wj%Y{pVqWfco=WitZTW$VVDKo_@cRB1>e|%k zwk4LnGc^6&blQtKq5)BNUaG0Uv$ce@7qi06{?u2jKhQsn#dgW~&xwClynB?||!fD5|`D%&Tv&Xy6HxkYeORkg$S4Ul0*yM>V|?Zr&_`3#-p1zn~? zk@jN#tWcBoGTN)lD^$m}W>t};?&?wzqt>$*j|`GUf9j$Uc>_E4{C{NmG-)Glf{3C< z_UPJb{$*HXHiHytFJ`g@{bZGE3Q<=K@^})vi_Zkci}^g(87UkK(IR(Y1hw*FE{nZa zs&_zn$W3j$n6qPbk(%4!FWoe18MPPlq_-4C$KP*U49+qdFJ_Y?x1}Zncz!pH45q!9 zR__8*SPi0vZbDL;4S(&wD>c2qN4jZbFyqC1S|3NW>Dqo?ezG@0z8?d=h2aZNXHjj@ zwY_jl&O89K`9+BC=-3h5lJaKuE3SA31Rp<2+^2j=TqBIoeabK9k19u4QS~XG^D3U< zW(QTY8W`jmg}9ZFe|VQm55>#os#$}enzHe)Y=-8DRy6C;s*rPUZ2<3Dgay;>Pt zXmp?QUp9N<{V!N*&E-b)+q*8D2Box@C&I4D3szinn-|OUDWAT{T=_p_GAIlE`WOS5^_s#j%T0SbS#2Km|RHCua}!XMXcf!Ff&*ozzf zge{~)>ak}x{3&}hL+XWB{!Zb~I6XobX~RqKwzgdFd4_k|%%$+>oE$B#yu*u0A8wqC zzLcfj{E`&@GGQmQapQ;SRo3fTGby}!uO#hI|B+DzgU8!%_)p*fl(J=(wiG`2tbZ~3 zhD@ssa3_{nd?%i=A=AlOLV_e62{PWH?1BwH)O^ZkX@Xr2vc{oof(<_#bg~V;a7W~W zAZM6Hm^pi3!>=6se42P+tVh5vw1f(Del>@}n_4IKj38b?k4(N46N3mq1#ss>;hn9J zPyV8wrUJ>Vsa&@Tg@<&&x>=`YwWgv#HQlgq!`eQ)niXcPOitlTt?^fbs4Yap-G#ht zb`l8f6hd9)&uA2W+VTi3M6;mW9);SU)ft^4dnU%l{5XhA0-e;q{;F&EzBwkVvP zXXUxKUrq{7YVBB+M{Y!4)W@tCVr2UMicV(0)0??R%TdWWdb6HCUX1LmFYypcczsi{ zJ2?DHn);S3UKvFjb8%x17CXZ+2X}de+H(B%RI<84HUNXz+P~R-*)HDjNn054Ve|DZ zfUlk~UR><|Zd^^p>8!@9)%d6yhpTb&AUU4}MdUbjSvkI0Mvi}C95f9JgEs`j2OT6o zJNG!OiRH?c1>aWj_g8Qfg{0soQpGrjt?MuVOYeGh&QS*7qs3858-OqIgsU54WdNR* z4k4oS{^qaA+J&rD-rvF^XCvn*@9%L@T6uqehzaHW4GiG8%KKYF6nw@7mG`#{=V`z6-S2l{$?!Qj}oG=l?o`p!OHtv!M;NWvF)s)K&2h5yuZPd64N=xje%M^Sb2Xd zgv_B&j0XXQI9PdqTZE;i+l&_gEn}QcESmEEhPN0)-x%)!I_O~K{S90C4+Zd&-vSC_ zELTiL&o`l3OiVNfA_DbMx7bg z25RVF<^2uVbA!h4e(41?RAW1bSUctYtyQ=VO=Hbm@D-6X%KMvn`$`(hv)K!NB9caV zf8+W;hG7o>4-dd!v4%IIotNjOyuVX7#kR!389fJ{e`AnaN_l^e_K78F8juWzYVYsN z{GHL47XCYn1C?>G^8W7dZXj_}pwAF#SCM<0iKsZr`+H$N9>=~#?k7W(_qWhD4=aS{7dsI5zZm3( z(B9u=`OxTQ24rVrB~7oMcOzZw3kM4?AdlGkiC;{T07Zb9Sy9iFQ%ZDM``?404+`^|-NebD`<#Gbi)DKQ3lkT{z`dw>7RyNu#{KKHuj_%>nS!?i%g=tvMh$ZRc(C z2>by+2t-)whJQk_~@{N-S4obuZHJGH|h zYR3F9*h#0n_Ws5>IF&jue+c&6;oAGV`|BR+#XMRb+^1lWtFOJkjgxpuoCYX^!N&WW z|N6f)q!x;o04r;__WmBU&d9CP45*F4#{1iCueUX}7K#r88*RAp{vI!pl%_LZ3bxAO z+WQ;#(=}Si{2C4k^Wy&>gWCDp``dhOCfdV1 zHCTGXwfEQC;|xvV^FlG8UTjTC!+QsME zMEQK_PYiOKXzy?OwiD?64G#QypS{1Q&={9h8M%#_@R4Gd<)6y#`|0Taa$?c3&CM6a=gC}!&gau7wn6{An;P$L#(;-p*M?{r1RIRV-TON?L2S!D40w_S;`C&^zdvTgrF+PJ zu95tFrib?aCR+QNeu2fo?T_4Fk-WeBh=E*ui<3Fz@mKc#dKJWzfZx2o$5MP0=gA5P z#P?brTls;H^8TJ$_ez{(+XCzoNPzJUl-}Rid*X_c%K-S6O_h}1 z-wY>RRz_s*$H4b-3QF&9fn|Ra!#f!G=1xKB{jD~nfq-8D287 z29K*;Q;qjGG;vP&Uy+~NVcPq(MFemvYR8ntzqUs zi|qZ4gBrTjO14QHcbTpEMV0B4E2MCr@*yY^d<=>NAA};2TPLa@h{)kXO(eLQiUik1 zk>Cm^5?rrDg6oh-aD55l1;K*^ZEzKrc*fxRFFu{Rje23_$3vpB7(5=hAJ4|%`gG%R zsca5a_o$TG;M(hEb*Y>H6+e9XEv7cO&aSaqD*u7%pqtV$xIQoLV~It)4Z)L0B00~M z)(ih|8Og$S_Qv4Mla#?Veecs!;t!lrOSHkYBtCBxb14o|#-Y;S`aIQDNt=MQa;P-8 z+P#NJItV1h&?u?~KV?U)*nUmaiU4~ep1xsE1=y-G1lX!F1lX!F1lZz~JQ5Wyg2Au1^_d0fmO5eCJz!F6s&`83$d4wlE^+Tfaf_)l5B3Ro?N zYlG|Af`ugS0@lm$DArgST)Fl)Y&)YN{#EP@Nvb(tD6+xz8_NIxY;ffRhz+LV5h=#v z?+#<}cZad~yTh1|FV^wl#bf@X;xYdZ@tFT+c+5u~kNH^RF&}C?<|B>Ae4z1|H#Lv1 zVtskcyN1WSiFwSMGKe<@HiR;`$_K1V@zhisT;&7St(>C_uHyeu8(jVP8K^P124G`a zuKN%hgKL%Qob`dTw86EeC{t^~0XT|BTRp^-Hn`SfxiPr55L4RV+Ez?ygKKv&r46oq zc*<3;1ZJZRt^l;ejP#g23SMfsY_z5(AXM{2N*1>zFG`QBhS(+a6YJFy2O3y3~Ym~utSbaaL$&zHiskB5JTmue2Bo}s} zl^>)CQ?VJe!8LEv5BLlW+4W38WpF+E`53)M6|)9`IM;u+n6)yvUVc?mY8Dtx1bq3= zKbuMX4`WHB!8P;C+qe%$@cT?0gDY#KP#auJaC;T3j9ywVh9go2SKrUkq$UGvL^MaE z4X$;+W{{$?EQ-Lj!L{))xv*``jQFvVF}UuD5g>Vp=EmUq!doG2a4i?}jnr<_TDj-7 z!L?gLwPDU{ZVaxc5-X$)uEBA?k@X2WE7)!CYlCa;ZvnCvB?V6#Nuvy|6aPv12@)vZYBGp28KGEQDO3j6GFu*#^E_YmC7)QL)Vu zUk2iLcIphJ46div*>dxJ0OD79@;t-qMcUxnrt>$cNsL#2{Q56~#u!{b#!p8H_z(($ zpg4=Fpj=}Zw3Hr*sKiJU7e6tnUCYJS)`8=>C%=vt146dto zmXy!cb^+}-#kIjT#hQu|-vGL2uravKD?6U}ztj2x_RDZ>aIICix-6cg9Q>~s$i2J^XnzFUNf=!7>>DBR4WN4lYlG{bwbWa`&pzWq$KX2CPcdU~ZN6zcK9)kXaHv1<%($9H2&)aQ z6F0`CjyzlM3UI<=P%EVkuH|aSr2fn^g9S1d^<8xzH!ef8w>Xy~yP_$o46YZ`S@etx zwgefhsj~!5N*i3?&KN}>xx_4}H*pE~WsX=P{po1dl?KOJrI7PD0ridF=b;U*T~4o& zk>5dMRs1coHn{p#=r7~>LX&}Y=4wRDTpL^;9{4Wf6@#W~6!EmdwR(#6GGIH1`b7~? z8(jap+d)R02GO#pA}WJx!8$)=#61w5jw+%uxO&!HCL=zA=wnn7j}65)vm33CTZYgD z-t4g};n4>MXQhq7b>^VHbcZ#8;DuOYc8xK(HuO9!YFBkVmT~fdmtc*l9?Aqe$M)$vOU7vc-a1koWpK5d zjg@hRfKPUdqZV8lTq{oMFN3XyXs25+Dbxnnp2^eG7+(5|5Z!T$Xbi5iKX;@Vtoa0P zRdHKGZE)R?s4FdDO;Yf*tZ~**8(a%L+)nFRQy9FgdmL?WjXU`mT1JPa8F)9hIBE@* z!F5Bge)If!s=;03s) zY-sO$m5&C1jd$ZxRPodHMliT`obj2;^M$}pXoSIaN)`0TYhKRU^W(#B7q}74HC}E1 zwJn|%T!k=<#oxw{MNcj9)KZ^&1f6G>9dYQY%Q~C5o&1mXz>RQh3^8t`??8cg%pzAY zdt%tP%yS8H@%K(%Niy~!S8|B!j;c(Qqo^*?mRQuwnKKMnM6A zX>e!%|I#oUST&wwn0pwj^rA~c^f9LgX#6b68OJ(a(|lE zw+9XrF59ezGS=YRuy z!~ccJ_8D{3CNDcvCvv@DI;3qHa`DBcS74JF^{hzBQoLrZKRwhozqcDtu;&`R|U+&9mD5>}5whA~nXJAfiFnD}Vl<&6+ zulD7CNe0Wkbr8biEcQ&C&+N1z zXD6cn#-He%@zg-e^4e6O4te#RgMJ==tlI}mG9GJqrK|rIT_X<7NnU>+=|!#(%-3sN zDOmm{a;nhbM&z2!saOZFQc>}!+j8K+j?PD`#2 zoXWfap3EOe)$Mb^lg*HMnz@-FGvGa}V}|7KQDI~J|2*O+4k*Wu05IYke2n-;K8WA3 zlGQo=t2$I*-0W3wM(U0!KeB(^H3jomW=Qq;lQX0lvLF^!n<0y};IuSDmKJGghOEMA zW&YbRy{R<+{Xh&iGvxKz$_$yfjwae@*y+|sva)ivo5%1>mvZ>}J3_WJL&lEhV_8jg zw!0ZJZ@SKC_}iVSCChU=t~6uLXZ)KPvfkvoa=~}IW4(;o$5bclnu+YTpaFwxll8%! zsks*PDj~!A)YWr!GecgThhCzxGW*R8nXFVys*mRfR%zf07(ANt(*$LPJaDcG8odW? z0n(0XH$kNtvWcsYJVOlw8SPMMh8&nWjiie~{&J`^Lw0!9iUxAzy&z{bb*>Dw8FCJK zH5IzY(7bcgX*1;TEb(bLhl*Jbm;M;UDntw=&5);ZJ&?K_&;+^Zv>9^bmf>=4HGo^N zgxB}CP}fqt*d}!Ypc&<+(`Lw=FZ0nDUaCdFE40LzA@eO-Pm{#@107~8w!1b%`c1~i z3OA7bOrr=3q0Nv3cZI|M0YS|A5m(xnA!GFEM^*~3tcFK09x5}W-&=h1QUZeNMkFrJ zB3KwlT6GV1g#Q78KJFs%I8>V3^m!*|or$8a|IhYcr&MbQdi_hTRW*gu6zYAycnBNA_H>6^2JxJTH4}jp$_W0y}58 zb5$%>_JCEfX%{LGY_IM67Bh0E%~Zi33T)i9bR=G@sWf}5(U9n1TI3^T(mj8theWQ*GH-5S@lJYh?NC%*`f< zC~9O^nC~Hj)N~6XMcNE`C3-CRXu1*3&kFmYGsCe zgD)M#6YnEXo_A9lGi2cDjZ*Ur{EM4LEu%6+mW-B83Vj;muN8x{jK&Okrb<4k$pc>6 zO(TP8Gvv1wHKnjIMD5&!#tfP5cp|A84nECIBZC<;WStl|Re7el--tV=-1e}WC}tl* zk+T@Y<=EWC+0_ESX@!ebze;{E+-LGgb2Wx#e}L#G2H4wJ7M0%fTGO^1yzR!xGPqw8 z-1cG+;#mFxDtNr)2=00PPzM%gnBH27D?(UDi?hZ^r^FTbdfYG18ZTawIrA%#JrJVN z7_cN9GpgWz1zfvXpD$}%%U%!d4yos`LLVu<=lY?OxeLzQd*jN5xe5Iv3_{FzVsby$ z;~PEC9xL|nl6yZIE5)8oam9;4h&zAM;ccw$Wm4`$jH8PHrB@&%PMbLe#qLgYelqL{okj=GuU$+WcDRWEU8} zAqvHy&9D4-Cn||FzxsJ^ok|4~*opae=@xX4b?W>dJTYU=-gP(Zt ze~`=WH>G1jvf3iQFEbO~-Vg^t#wpdPx@~5`{|m)(ca=Erxk+aJK(sN=D)`x0T0ODL#$sFCjEoNm$+%OB*# z$Z_ff@y;L@-+g$sjE+XNf>6{ef1!Bf^(1R4w10!iy1jGPqN2C*$7zLADmMpptFZL9 zHU$h$*C7Mlif?fmw>y94E>5?qajmjkLm014orG>BusEH>&XbC9Y%4){VhV12Z8Y6V zXe|OkC$wyDy_HC`pqo$jAA75;@U04i>#cIUJ*?!T9<`%eHQCT;C0}_k7Tv1NE=Ma5 zd-QI_5k?<$U|Rnc-D+{}<6n6H(-L=l7(Di{rS%doW6HkC3ec@BBSH?*F}Ac81TMys zGnk^3Isc47x2{gjwv4VbtqaoFq2Za@(yiy~b|0mCh-LK#8EB|yRotTAa#>|g7NQr7 zX9CSPxOISMO}drNs?s=!_8`~3%ggkTf1Zn3Kk~o|&8}V|y45Qun#;HY%~K4*jhS$( zpIV6lVALfQ)^WqDDP(}JOQ<{5ATjM1;$?e|L?|oRGb@X z9KVN*mtBo3s`03vGT*bW9FHF+$0gOc4aPw~`td!pwq3^klkbyvV13+emnS(#b+uY( z05+}bHs>g(<>B-wrJa`CK!E9GHO>Uq#%K+#a#|)3IY~K3IW514(#mO>m8(-i<+N-r zCX~}Mg(z5^3o55&8qU#9%k%#EviJa4%qnwtdMb2H$QBKS9oTHtVv&CX7r)3pEl+*GbCdO%5laX;+))PSk+u*w< z-OH+*(=s7irxyod2S~bM@JPIW7Hv{!J}-zuX6Up|PD+tetXNrXRbRIBXwvT38Mvno zL&|A+ut_&bCxA>dR68vvc7H7KI-t!CR!+;DwH8Ty3h07^mDBR{a5d}aKyM9JPRlpG z+vyoj2v&^txVpk1cVSBDw0ybEwggQFlG#w@v^>)RA6*qiZfPc>;wYzO*?|FQn*q5^ z3{g(YTIk{DHP5dP$RMVo%4nzMyUq*9nuhE-rl7ZSTK;>vE4}4Cu^DJbWPI4Qp(Ooa zd;#bhV_6rK)6()gKwhZ+)?1)&y0p4!QBKQlYfDmM)+FeF_n#PKec(fvjMK95lZ(`c zD@}d~${G<@EO)16TzplKkQYchEn7{WCo}q?l)QKqp|#U;@yGcTzy;<;#REOIG#e!O zHqDLGGIxb<5^1Mp^HtuKh*efOEua4zO=T#jW!-_FWD(=Eoa0l1hVh!k?}#U17~~c- zPRr6=i_m!HIl=N9uAP?M7ax*GK{cQ{j75#mPD`|EAaPfqp&Ccn4BBb=<3~LC0n1#7 zR(0QsdbPH$oU9%*<0c zEibJOlA285dE7PHY58}OB{XFMwoPU5nye8kZ=9A{=PaW0e2VA{)>FqI#q(P!Z`pSGf*i^%{)AIa7oU!RhXwmd}eEAb&pB4uNu{R-0Z{+s_Q3qKp>-tuQ$7=Y4isUfk)A zj{=Z;f{FOEEzReM3Ve<*y{!H%Tfb#l0NTE0$|L-NsJ6Ad>`%am8g zQfgkvRbU$oH%`l~@t#m-=EuR#I$S#~vmahUd6+*1`=Gfzn;NHO*_|(_D2x8UeMu4w za!a^7Eprq*M0QrdTr3c$H{-N?@@fE;MRpC1A~`Kb6iG{M!TP#!DH5Mr@NF%*5}v34Zyfm@;9ot7Vxq!Z`K?Fhs-QywSz>8WyBwwv-yoMbNn@Ew-NRRN{bGFk4+ zqU2kEPY#q$%cXZ@$v-etz9&;9rPDH1{--n@B{Bl=jhceeY5C@HVgZ8z`0h9nj@ z{+fU-0NNQCVTDH{Y{S(-$%WJMMQ>b%!ci%13NaQpg&2#QLX3HRgSZ6lSE6!S#+n`^ zZ!<1oR^dFm+gN|+05nd^eXA=<;dh9aiDNocAYt0!jb^x94MTY$;ywE zuqi-m1C7%%&MOz52P1ztvj<#Ljngtl?b&3{LH;6#X{Tj_NpK==L;h}uJycH1zt8+6 z`vUT>IZQh(?@!oA_ABInaF}*lj_cQk?3i5rFsNnGPRl9>&ybxK`I#K1otClBfE7c2 zu*0;|G9-6GvKu15xx=*6vY%@*+Koj1V25d^<((irnVo_Bc@EP~%YQ3*TlOa8|Kl+2 zw0u1pPx{Xw|B_+mK#T0O?28Jq)VeV*9(Nj<*>d4Qif})2g%k-s1Vw_6L6P8tP$U-N z02GN`I)@K6k;BzgB)Be$1Xnnb;CdwzT!%!0>q`(X2p%M8r=_^WGfvCGSF6%f)C+4_ zA6)fd@ObThJR7HF#*?H7v88a1Bncb9* z)ADNFY*JJjf~t{3+G$xVd15JQ4?!e*P>YKLvShXcSdLIW0RM6tyD2{w!-nfUPP+fUPP+fUPP+fGtkR zZ&BeQI4zIYT_Vq}^$?&529JOF;5JT6|69=|?*}%-;o50AJ^w$F&jnlTaP72AIIytf zyTJB4Tstk_rkW!8O|bihN3q7zY00&};p_N?@ULQLpmEL{40c+!!~@SX6RM%vL?l9(!%bbrd9`oVFWB#M!G5-(onEz&Y%tsxM`B>vIA8I`2BaO#= zpz)YDHIIv`aT7IOtj7B>4&sf04WXQt@|mhPo|?KlEmLrga$1Ui2ko>ho|vB!F5bEt zpSZfLIM|q$s~p6}X_;?4XEo$3?X(=p4^d55qASFdc3Ku^xp7)n5L4P|SyfDFr)7OH zrJa^dc*=E{XQQ2#ErmckEj#m+a$5EfY3Z~aB+}ApIb5Wr({h4HOQ+>jk(N%&`64Zy zmP{IW6n;PC#|I;8PIi`p*`#R!++qSvE?I=U}ag zfG=;JmrvqUj3tpy%b2ZZP!^h}29o(IN** zV#Qk?%@VWRq8CQZNI5NU58f;n_L7;Ae6S|?L2Kam>XN_K+&C>01g4WnJ1qw{KOr+x z4$<31#%gh<0=g!$b8WjVc>&Fh)AHeVg|yT1_OW7U{|LJF7-UrwTT(kM&rB{MYf%XJ zq(~a&v>dvuw$!Ww4>cNICb1FZme5Yixby2t^;IYz8@01ZJ(bgP{Di7f_zR-wL)GFL zr{&8w(Jk>rI|Y!x!P;qAE%7Q@x)4wa2bbQri+t^Y6T8Qh56l_>bzsaDS2`^dbM@Cw z%Z?ALNZ|;GW*DJZTq#se%OU08NZ|&E_C_UCPRqq9%1Gfgh#nZB45plxA6}?n-@sjX zlO`8WXtdLE)x-iaPD=2!T4S7+JA2iYxG)gElv8IY<+Kd1utjd4hCuwTF2c^&PD{TS zW29y%IKSVEpfOHM-(-JSgZNX*Xh_3Vb;|S0xgN@TNM!v4}fcYb^ z7m@j9tJ1QLbccEL;b{L2gIEURv<$BMR6bYp2g=A;%w0PzW4*~HaS5QZ1{b>+0IhVea#|jonor{WKt~NWPRm`v7wILh z+I_GWnn!Y4ZY$?c*?9@0hhY6N$Q3Nyv_l8<6oTotAUj4x)>UT_fC1bBfmmG$zxg7@uzN`19_&Yvjk2`J1y6FZ=uFq!W!vI$uLA(=7=Sv)AHHD zfh6XU6Y3IN!dyKFv36SCIDAq@t`AN7-y>_MWsHo^WW3?fOp7XB$~GV9%Fay_6UlgM zq1hcpJngh>y(z8?cp0LHQ3TXZ%jb_D$cR56`eW2@>rS4^X_+zaY8f#dM0r>kX_ck0 zxmEPS3K_97M2(}0sGOFohSs5iyxIFeG~6wsaatCv+mnJ>Gar1VTQK9ajF#I&#@P>k zDpDNfw9M9gv5fN&{7s}d%4yj-O-UIi#%MhH#PHi13SoM?ccrc}SPqDau~7V}i9cd- zg&Pqxo z>%ub5QSb|q;wY!3?~Z9Q&U5guZgFI_^;AyFEayUGu=rze(}yAQ8fvFy2{cV%Dqz z-{KxeJ1tkP-%9OSa~k}%TO759%4s=ra%<|%!jBL|9~*I@lu$V>b61KXBc^~T0}Gus z^c0#!9&`Wnv_!Dt;1%718K-5xq$_2dR^VMD#VPW+HC+ky2rM{FF4S1?8SZh6)ADHp zw3D_LaFY(=I4zr_4Yi}lzMzqM_^zFn4QCIa$6%k__-_y2`Ew$#?pfE9D?095>z>ZN zn|*FMaaxbybF2&$@p*voIa*PC(Fjvq>Wf*~8`l7%ps|Ou;=bC==eX({x*M@O2XkMY zb-0(%7gkH=kp*BUwp%Z z_>jd5Al5#|-p!gx`W?i^3MwkSao#=tk>0qZAby6r+u!8-3ckVjin%5;`UJgx554Mz zoF%VHL3ha&jACAd3jnYEo9B_M7EfMTjjlR(tV~N@369qwS3AyoU06}O7wUlxkmHkkRWs=O3ka2YZgx)nm?GlLg(O%%fEOs@A@T}+kW($w~Z%f`=dWR zk6`rmc^H%Jk7r0jUbo`4BG)CRU*mX?i!b%OE-Zj`?g^(R1s+7tl$`3_C%WbO#;Hep z>SO=oZK2o7ZLi2{Oeus@>#!m`()$W-*D_wfO~aP7KRJ|Nmp17Ck5g3&7DoSnoVxL5 z61fI)>RYiQg2$ZK?xzUcpt^Pb(kPp%c5a(%u9|0kzHC)Xs`PEHkS zJAzz?IJMydQfD|dpjb01?**sYPB}uZk0NhTL2Ub5N2z_|(^ujD z#OpAx{sSt(|H-L;|2Yo-C#UYD%?sZnr&e{vN1r)3m8ft$%T*Amx(io6V)tC&EI0RD zYarpCv)J&)9})gQ@O3I?vt5?+Of zp`?2*WusT+YoZD33r7Yp~{VmkB$=e4?-7aX3xaqWeZdU1N)=*xm zJHX*uV%&2R_avlIjK2ffQ`JH%<6B~@Ou0|!{|VUv8bw$L?Vd|k4WA$cK@jXFGVZx= z4ZO)}0M^0q2u?NSp4w1no_lq_7TG$_TNT7aI&;AKx%WH z(gwJ)cJ6P}=pD0C%(y~nR^BeU&?U>Y(&a=Q(t?Wid;foA;ZeG&pY%h8&i`A%--BZ?Z?6WZREL8iF{ks|G$`e?lVT3v#2)#=32ei~ER6m@;;!MftwU zzt800X;>2qjj=nGPI*D%AfVy~8@to?oH@y=gZwtkO!!E4r#TzqTGk*arn##`MRm73 z4IH@+{hvT~C<>{g*LJ6|rFPRkSgWktkUud+&a>M}+MV97DhmG#NObHqxrBlWyA$u+ z|IzNmmy2F=j_e^VB)>U*$cTVpjls>F?iTTb=W7t5e50JFMsh7z7 z`gpK>eM~`r`lrHf4)#3eL1BMcSHG3?;Kr*xsPRl?yE*A6~? z#goETTfE*$?BL|PyHeO1G394x`JAy7h4qUb$A?@;FxTX4R0*3PTu*`4uVWOpxZ$j3 zxc>)>J{PNgihFb`c?;(@?gxdWX64f78Oibm_ct2u`i;chW!TmNt5gS%LBPdXa#c{i z_6pl|;af>rJL-Wnap+;sf)sZ0-%?}gJmzlo0U55TJYvOL!LSQO|41P^p0nlwFVPZ8 z$$pTqYkv*fL{~V#PLO>L9la$Lh21Z+ZunXf^@3JmO{@g-@clamxp{a)ljpr!^(bt#HKk=csmTXkB9dmvt!5N9(Yk-9s@wt% zz?-o~Y#+~*ysIWzUALZ+xIfTP2cMWXox&DcRZnISbFk+Etzay6lIV8Na}(Eu<(6;x z)Z)>*y%+qj2@!bl#v}@Rzr4vUeC>+duNYz+oj#k`bQdFVbzF<>bz*7koV?RTGcbX- zyKJPeXZPj=;<67lH#LSBF-vw6r5rKEsNe0rjI{gbTjEIRf={23raPo4!zbzS z0SUZfdsgFn1B^>-`o9~0RB?RP$T$_$xUCwGRO9_?B`^B793R;s#{<=P3C2NrurN3= z^7jqss&7n2zB_!0_0^uS1|FzcuAiKvJY&5!b57g^$WflLYMHoHYR)-zZ64xub2E-D zIK%~tF;>R0r6Q*~=P2XYC=QWO8OQdB31u96Cnl6}Y^5kTo(n4D*gDS9#<5KTuVt)^ zW7|beDCa2S*lv+?j&qc8Y`@3};~ZriJ0fyEaE>yLofJ9I7a~U)$IgkI#GIpyW0yHc z8^_XR<`q)Lu^WOY<5(#s#yEDDkui>ii=gch)ELJuaC0}hi@vloHpwGp1te=RcpT-< zE46X#eT@pV150fk20H0rWgJVJ`Xsev91ir%!OA#R;Cd43#@Jqj`i?;bSH`i8Q?k$; z#;Je;9IT9EneMfv!HkOnm1cZeESfTorT=>nEo9snsHKCIam=?rI=5y#2q=WHTrp)F zE4jET-DbQ1XqkhRaje1aIM!>%dw>o)SQ*C(?X5(F)wON`g*jLm$0}|4LOzVY0?}eK zZ)F^N+GGR0;{D)?COT5R+!jFJn zI9M6Silyu(akM4)E61Srf-;UJwDL=w1}KBU$~ZQ6;VMebJE0gzutTMBtakiuk~Riu zX{a)eU2Hs;tiH${%tTZiWgKfhKDK2|L+%_ylyNM_u-%l6=eG&uAEu(pXye%8&sXsL zAK4d8L2Vo><Nlj6Ghq&YqWad5;~K zJcKIonrh?N^Ne+6#uk(kQDtat99z~TB{ks!m!jf<9=8{kll-;j#yA#Gv#CVdIM(?~ zOO>IFW2X(Ah)0~j-9`khY~XH0M^ZLZ5+FL z{VIv0U>wjC#-c`O<5=H`_a$Bfv`ga%n?W1L+OBFL-^X8q=q?MnhS>iPX@3D-MbdWf z!*_S!gd76F9fAjUC%DVtg9mqa8(?sk!DVoV!3Rxn8C-(9yW7Cv-@eQGoDjbE`LAEr z>QtY)c2##*S9|TMyL>bm<5;>{(WU4=7A)}+Y2(mT7Y-<)@b8cntn4W$pMtjDDVla5gTueV~?Xhr_R^{YX#U^=Azmg<5>11 zn`G%620LleYvb6&ZjDG>H8xt-(4v>9uj}_1;dDoB2qv@ebFV8xcD6LlFLh%w2nGsdxl z2Xa$&PM!`dv*E@#c5Y!(YQVeIkP*6=8#kr>e%cgk*D$sZqm4~3Fw@4euj@0i%d;@890Pm(X z#yHmZ;0@ZI9C$3y0*##mT%PRwm2qsbe^e`k&$Zj3+^yBdIJSJ=1?tQA63`8UbA1!W zv9K)|v*8V5?G>u3+b>bO?SJvlF^=V~v6W`~Ska;jz zInC|QoQW}xtv|a*ikd>uT8kXx*qKZZB_9kn(r{xO`w+5G@`Yf_9j=XIZ(r4td@tA` z!;NvQ-@5Ab7q8@Pu!n{l*E(jAQd&EubNY9#oCzDS%WUm_!ZqVj3MdrKL|;xzkPoMioxlpnKv zdI~6wWB;a^EK+6!$nHRC99xm}p-5R4fFI0MN@*NBclQ#Vz_OYH@Y9-t(l{17TYLcr z0q`T7g3>tlZPPgc=K?G?P&DC}8@w0UhHR>hp-f;5OS=|NdI-gnAwuzFh)_HkBINB2 z<`j5DQO2;Y)cs){<)X*dSsfyUmm#|6B{asd z+{1QA%~$Yft35L#e`Op?{$;V$qyo?4t&zsDs-eB5q7-Natx(3XN(0g8f=i$YKr06d z<5=9xgC!gQFw}v=%fC=dgRqI2I7E2ioVZ!Tm2Lm8Uk2eO}^Ac6!8TahNua9mwiu*(DKQ-eKA} z)@mSLt2RP>3x{drSn6X#(f=Xh2RTd|#{zdGB6~XG=QvCo$DZw;LiR?)Z*!P7j;)=$ zhwPJxKj$!Q9Lq8jovA%R{40lP62>D}@+iniDh{myv*rSWAE*->im&Gc! zUYWVLLJC(GAA(|rk3liR2cej`gac5_ywx#$sEHV^recQcqL|?dCuX=_i5ad#VutHW zFs}$+BxvK9xWzNZu@Jx2G!FH`x`r)!##=Sn`*=3Su}0e)OQj1hjS^t`L8*;nV=kdN zD(9I4Dt^WEgHjvE=5};TWqqhxdMO>_*r_-fr091D#zYWl<5-iv0aCOCf_2^^WgHvz zn_8_yz$dgs8^?HteY&TUCZ2TUCZ2TUCZ2Tbz0> z8{^o$uD0ZVgKc-XHjWj%Hc;}jV3!@PjbrcjW|jOc*hhzJ<5;spszdR(*nq^Cz#jXHiH%Mc=KPxF^-Wmjx~|SG5U#dj1M3- zaETY82*u?Np}5>3Qo!YpqT`#xZ+8&r9Q&znCvvyaSz&7hB9r<5*HLFO6d< z#k@3*WfJq!I40wzaZJWb<5+f~k;butJg<#o-7l*yrO*G3mJpbH=J64vjbk}VkB|qz zJD^VvR>rZ-3%f`hcN6MACYf3r$4=g*Ff$t6~&;9W8GGxMbZaEe>Dk}ajfd$)HI0`rrPZJqRAGER>rXpZ+l8jaij6T z=kk{GmAF1*NtAJH-&|V4nGa>+7{^#6h1xh)?`3_dT;a6{&)lBfT@olY$4zb#GfHGp zy;@TAOs|YukTQ-%58f$P)_;rV_L?F3n#5=>d64GDI2JROLfSYMxFw;~*40|M=k*YM z1JCT2yu0ScIJW4bLfSZXutzbB{|?;}OtPwplGMhrX$eotTC@}Va0HDqj!k{9YT9k^ z_eLYW7CR-SjbphpWRW=rY{jQPOwLkek!j=D{aop!umD6wwa^&H?2(rwt^*Weur`hj z`W9W{UO@dFtc+u;M?aJ=%%%Y?Wy}>ZJJV;oz0tUd9y)0zXe$Z%~OD;)11nLG?=uY;9w z>_hHq5?=wj_8KUp&o*Z&7hX6JAz@3C~Eb7r+688rhVz4%j6&dtWUWfh!T4=B_ zj>XBCp3d^Z!@%|$u8m`1L*vmw##exDF&6vA7{|iqY@nCSKY>x0-uJ%BIF`8C0=msO zF;F05kz5yZXs|N`P1Q%16`yCCp&Q-SC&ptQ|!CyfRZlHAG*RY3ZpU zul*E==6U64jAN@Zcc3<`*$TeTD>L#{L-fVDUPk6~75qVje3WslXPyNzpYP!A-QHWM zjAN}2*OB?80ng1EKIS~Cw>FNoDDhclRvDs(UYW@))W)$9G3HYiUi+R94f4v-7{^xa zXif!KGYfo)S7ydIc4OirD$Sam;D;mRql{yhUaY2Stho*T%sU@#9NU{X4=rI$)IE4E z!}P-zD&tt|`%`H>3$sB~l!c~3sC}r6W3!r&C336-Q8TX`%@BPb)~}G6{RTe5D>Gvp zOP*k&T(kM$t0Ls1jAQNzV`V=3!B2YUV~k__i;X}}*?>=UCXR8eP4Ec%j%YWYB;=MC zf}4YSXyaJI92Y1MEV~!~;pIEGDRRHfQJh>wA$0FO6h`h!*-OHt&R`uRg!SH6K3yP>Vy%D_KIZ1kr8jUUp56DG7%_N;h(PRW;S-`U9<}r0nyT*2tAItF1-A1sS4rvhj^b!AXYBgw*Y_Q&jaZn6lx`#rG3X= z`uJZnJB`%RPpjBY-h5aXUrp?cHl4}!AF^_v$X=V=WqUm%moKi#?(G}nk$YFhspLw) zKX+AMLGJN?j3ZY%{<&sQc5;WrK25GX_}MH?0^1wapM+p_2ap5^{bHkblsNZ8qGhGwO@qs7kO^_Kc> zC`W9|?fx_XKDQ5>$(`L7UG2A>0H0f@1gLF(1>KgrPT(1G|C7z%a^EVl3pTL3nep$1 zkL4~@sRsr}v**Bw);%t{9&x7i59}k?8=mV>6c(~CJl9}jW^%dkNy~kpGi++HcrMMy z9ppZB5mvp-uaA){Eypz)afn>mc<$)*aB>w8DUK%~S4o~5*Cz+LD)U^szi-3;$8*ou z9wk>3o~x1-MznT3_kiPi@Z5w|P02No=fcyt$vtMSFSS3FzdyMqb6lHzBgr*~=RQ@Q zL9S&yx2|b1a;@jNWj-;;70Po-T-nKW0CV-01^hyZ3N<@&f{!2HDBO`}p;p!_AZHji zZkY%R+5hK&pGuLA9}^MqLm&cv*bCG|sQd2Q2GOg$7g?^U{b`Tg*!%S`(gE#;ehB8%g8U0puY~V#eo%@EO&nR>&$3E;Gqq+l zuRoJ()|~MVMzlWbLM0yJjrBSv*@dAx=9!$mR`hwML1cw`Gqu#Oe+0;EFPm(=jA+e{ zH^-)%q@G5!pl`V-BcJkO976w>n0&JH*-jbJs@sFTKf$jrS3o09QM>{BifSMG3C;d0%v9kZ|@ITUA#E*zSNb1rizzN z8_|ZInM-wety%$h&=O-rJJ2R6g)kltG?uX_cRh?-*|UF;wE)rUHS$;qZA81iE(O|u zKycbiWQ=Ifat%lSFJS)~?qT{;MzktNTB7~i5p?~F$)n^v>|-OWHnCv6%nm^@Z;^OV z(?+y&PsJJ>m`c@V5LBC#Yrj9a&wZuuT$ zANUEQX^!$VMznx#&&a+5_DFMMM2lPX9@$?J9qp*zKd_Acjvy;rYLTOgXZW)?FrhBQ=d1d^IUGmd=nK;%lmDo#A z)sDBktIQ!E3wX&MwNM%5s@t^^Hp{S!v6_PW;9u+ zSE#O?aQz{fYNJl&nQMJ}`NqvM=^35Wlf#JCKbcJb!7II|sFB?^tclDd*>TTekRokF z%X6lxta5oFDuc=6P~r2KF`~sw>MMnfAnNWd6nj{zl@Trb^NvzI4$2u`YGXwEyW&f! zSr5L)OQY6N8PVb`QSXK?Lv+teXpCs{JC&E2eFcw!%e2RKh+|9}(Na!rD~0JH%IPIE zMzqi?xum8dczrL8Tr*=tn=(E#jA*Hc51~Rg?7yR~Cwn~Pi!jBkm4oi%7A0n_oFa^{ zK5~#RF(lWPDK=S~kYu-Bl7}r#wv9Q7o1Ffy@+G1~18Z0%amO&+a+T{x18Z3eX5auH zZhfj5P6K}xmZ50FE$)C~U~Ta$R>}{n4$#25R-;3EaQ}Z2CRj{97Vp}D0@bsg9Ki?` zc@bS)BV}L}ynz+}#%Z#C1#4$`gkxGRq^Xs%#sRW^hiZ&b`in}$&mjZbTC=upp*V=J z7K5+#*2p}1SoV@~WbFq#X?P+hkAYUc@D(zThv09#H7Vco#*Vb^-F8`)?P#yT0(zjy87&LH!6?ex- z+JJp+U5D~6tK}LAywHmM@1Mj~!TJJZqk_mi3^!!?t`?>5^fi^o)6=!M89jc*IdRS7 zSJ2JV@)xQuTA}d`ue)ddZREbxEH&=`k+a+9C?1m@v`9s+2KX6ru4ZpS8^RoM@l?v@ zpxO8T-$H)K<$U-lm&3&>+@r$lDol7w@)>t!nB=((&peaidxXK`u`=o#Hq1fd`Pk(b zuD)TXv#v!U6naTIfeGj@fc$2Kr&9y zp0RQY9T71DI7T^z_Hq{5DfC|aP)?!D*_h}drvBrsws1l{#1zM9r%(og&okCTOo^C> z9HWPr5-}e+MmdH0edJ7|pFxar3jHo(l5>o53Jnu6**Qizg+_~*5*(wPLK8SfJB6Bv z)mBcSDS{}c(Cgu#P|WwGY2cD(842QC==tT=g|HelgeBM}tf>R5^vl zzq*d=A7WQB5fw){g=RO#v-wWM?l(j^h5W6pRF9W;734NkQDwAKXiq-$^YR|iUra*n z6zZLP1l8m{5&r@{0%KBDRgMpJV04{I)P!*!phApgT~tF%rOvyKIx?;a)JUh6_dwby z^nCsz>c^Vi;6rp4Qe&J#{!Q9b7+0D(5Ue&Lu2|kqp?E>}sSj_db_&)0G)G2UM=Fm? zsCEi1-$K?HPVhA{p3CRZh1n!{qKhiMaSBx{KTjg<6zV&ns)|rfp;P5*sR-p1%6QmfC*c`*PQz-M^zvWS|87Pdgs1e#Jl<`y* ziO&Ju)7YaJv{Pv8Tw9pQt*;P8yQEgbPR2)*aS9Djyh6SxO$|X-Z;^Hi9V_lDGb#&S zJ%UC#g|baotp?hG_l%%XPNBSIw##Kr0H5Wp(N3Z2qjS?aE}Mq3^5f0A78|K?Kfcmne^Hzv_DmJ5|{kgmlIP$OlsF?r_iYdGbuF+$jS+p zpSfJTb_(Usd64*YWK{>N0*@5yJY@9+dAGV@Cy!5JIzZ!0wLQRT9r6J5agY|T{b_%^J z{*lHpp9nV1;o2$G=@Zd(=Ig*VJ6t=3;?sOu!2A^0d53GKP}e;hX%+LAVE-DfokEM| z#k3mnc_HRijQ@p6ZM|{|6`p*O__oi=3Y6PmGsM)y>?LR&=l%;=UCkpng(@e_Mw?jF z4T1sQBJC79o3#K2l7?nF_#CYVLit#$ zjZ-MembkQ-v3(6E0Zek6bA7wTLrf)phz^yKAvOyWuBvth{+A8^9H&r%dC{#8Tx-fg zRoUcWhM217*9Gk?z*~WJ)!fd*nHZ^cRm2TCcxJGi4%beh z)fj*yka;Dr+M3I=sc{PV_4t)CvZxCLzZsFYQ|M;Z8DviaoWTNdelSj<0${5Vy;Y+K zP9Z8obR6uO7ndUcg-JeA0=sy-R0HHG@Eb&acr+3tf79DQwTExsMkgPly)%CqBUej2 zvSpbN`&YIVMY$Q7t*C2uviPK07Mbz0n9p3k?N+v;?*|r(GjekPen9hCE1@$2*oocLh($AkheFOQ{a9nGFwrhz!>7K ziq#xN*Bz73c5J_Mv>IDcldtLp!Z?WLL?%?WqQG(Us0g^V8UGGOCRDbfo~sr~;SGph zL?%?WqOSSdOQA0wkoh6`hjmo8qOPxdNMR0$3VR8Sttf6fAE~JY-Z+9r+loqlm6|@_ zL%lW9R@C9dG^v;kx=?K4{D;YBH`i2SD>@wY713>IN~olOxudq zc5a99uMq#%VcJ%d_ctHQ_T%b~No~8f6s ztV;;un;T{hw1~DMKh)4gR+eUy__)hrO~0qCK3pM%=Z6nLF~i58nBjv^%w*Ry6_JUE z;X_T#a5WV(To=U*S2!`l^-9ce9TGEKUxIl>@YX@wip2e(u@&`xk)IBtURb&D5~&m> zpJU#~v#}K=NxoewL!jyynNr(|sy-egl_R0zms3CFscl88mOhip4N&dyQaZMxYd*82 z=mG?{BZ#!EXlu8rQuG-D7s}dMCMjFd!9<0nBn5Cw`3LsI(QeITcOPJ|F`PjihQQTM>nevvH6;3UBAIr-E!%8G>w88G>w88Q?fVWe6UG z3g=-fDqU};eE<3cOMAsj4CjN}*ot^-I4|AKWfJd!Pzwj!?mAr0fd##P16IN@J!ThUvj_iO;9`jZp3qBJ}n zmE~b8vPAFHO~hzaKQk5a;lt)0@d6d0xY!{S7dwRFVuz5AF4pnE#UWp&IOMAkhkTLY zkdHYI`AFlC4>S(>IOC8HGY+|+Ipo1zIpiI~Ar~-*T#&(B6etE|Dv~c`XX7oax2b3~ z$0$>gxH@W6(Q!8U8dK5x1h{azEM2KQQ&AOu#cE7N9mOwgDq4h{;h2h6 zi(lGQv_bsRrlK(MOPh+yiN(}-h{b4A(HDD*7PirK#wPn3tv^*L%)inu?-}d1)$&FXpAGD2bStrlPbwuT4dt(GM?w z!Lc$uLjA|&bCHi9Z7S+qOAV%30jR2jm8mG#Ak_e(4Nxb8wW+AY(3>#CAbJ9$>-v0Z zOhwrnPR9E$u)n>ydeBj(q88z08vKR6p{7_lLGm*d#h^_^xduH%|1XHHVG=4+QSy1PNpr$p zAkN*NEf%dzMQe+0mYQisWR)RVn&Iq{MYwOQ3)1#aAhibe7>z**{00Rw?AVls<5M@dtRH0reUmfQMQLQH>RS8-xSiOqT(~qtmp-FA2G?QCQ4G9 zifVmcENfAmr)ZOf$y1|DMM3pvOHDrTN=73#(kTgTD$0=lyi~VkB0uKwCo zR3Y&RDU6GcVQDZ)p;%ohRHmY}(OOAiFhrFj6Dm{D1^diUzDXD9h(55P#_N*s*#vs`ZU~ zNKF7f4D!c84~;Pu9UtUl`Qt2Z<$<6Oi{zP5nTkTbRHoc~im3@y&tPLJT3tVwiZJgE z);A*GXx)obiV85F0yc{|pAU_x$ohA!d- zzf+&e@uqbG>#KQ$(Ws)WUQXhJ>J$iOX^}A%1-`8!_wq)dZ63IjFct0ZpgNlh2fApm zHWiJ!zd&BaUID!~*qDlnHe5~_c;Ci)iS5Uvwm(b2Z3hSDx8GE4)|8W`GR5W(LWSR40Xg>a!vo;moyAf077yET$N`*#jHquQIS zmdtSzLmOXU^wYlL~4Q&HlevofD5;PoQpqei2;mSYf!e7b=Th>(vOjq0dxZkf+?@MT{4h#Fu_MR6vT zm6`2^=#*DxN~lalbKm*X244F|5WV%v(U^)>Oejb@S>yi}FTpT*ZlN+2O>OD6L_Rsd z3$w<#S(V14S@u7Jx5|8Kfj5qjk1`b%@gE}Brw{ljuYA;stI?>ICYUZWTL{qxugs)S zn~L6Sx=(|7?TQL5{+lg3-FI#nHf{j*P_E|7Hi_X!~G8?k1doVRyFfU zaW+3KWlcWt60Gs43&JbZ$7j;GF7%N#^}*YD<)gMxnTn2NEk{vtCvFXeXo^>6N~lal z|81!%b6gG4R<9gMk4E+AR8N`NY4EFFnHf`2j`lBQKJUQ4N61H+ib{N`BlAgwCxJAW zJhsr7iq^;Qwd{g`#aJM&1OudLsG+^e*Vn3r=*AkU_w?FS^nH2=^#B{@#XU?#^3^-H zMRIScunPVU2;EiR^~8WX4dBBFq}AkF&T+kq;b(z2f01ho|4fwUF}ZJ~&5NGD`Dg!f z<;i`nd0}#$0OiXo0J z=Z82J|Ge@C{{4OB5xD~Kv;F#btH~W&axDBGOwZ?tZn^lr#T~OfhFdDhbHis~9Hz=V zm++}Y?l-B*q5T*CeAUHmxmsc_WJc?eRNQSBiu#}PhQnyiHF!qvN=P+_5`;^54Y`N{akJrSe0X03xi)5Y;il(?Y}FEZlbaYYPJ9{YMw@UaXmf%+TXL8VS1X3PGi>OFR*1nuB>r zF1KCTDp8Gik=9zEO%8rAAGRR7+W62I)*NJKod7x;5!WgPE6^gw&w$=A<_)1}-CduE zOG5N|FRNW=-bo)Dqq&|N`^CMt7V1Deo@>8&Ai3+6Tukn%xvRryGvyqGJX=1Tiu>95 zd*TaV0K)5?Qj0KQ=hPG&b$Dv*4LRaj{HkTc$j>hFl3RG4vbqefieGgbB452v{Oo$g zv>-#Lo`yi(hh|;71HJC&WH^c4q_9l_+y3s%33O;zO8xI{u4&!r%Sv)9<)IxxD@C zGA*NImj!wYq6aMO1EDN$Kf7Fy8u=yu4ipvZuP~RlpIzx=`V++2St)?hI+)Ab&#rdk zmk%@)*;z$^N=3xKE~${8Ml)^*)QmB&Bt?6T_1~K{jx29>_K_2>H3=7DL+AJm=R0r-Lm#mt|)s za_tdwf8bC(%5#60f=_Jxhy0+suaWBp$93(2w2v^?KIWrOIQ}^1>GpiV%aHJN{1y=bx90rc0)EX1 zCBJ1vz%LmQ@H<5WiSb$*0Y8Ny;1`4l`28RPem#glydC7PlX$JgBVL3T3}6RiXKv>l zes~*J5F_hxGw1LlYGgfbI5>-6Ck#cu{#rC@~Ms$v_(1Q5_s<6q6^5%0u=0pZ-<`J+Y&2jtE|;RoO6PeJw|h{j?yLDN84jm>1?FCvhY?IM>ve(^UK1hST0l(p=l ztYsHPE#qua%lI91_)V@XmMg_qR2fn2?r;%V$)liKjPQ4*g^5;Ffe)>7U!{h;lN&?Z z5|d9e{F1h)@Q?jpH=&M92Y?J^+Fekwx4z_y7TX%g^iPn#G!+FXOVL;8Y^&dIgGdMu zKy=DWNCU-gOK9~Tk{A8og1t06JLV{*;EAlkA0OlS55*M^lUNO#xm=JGCAQif#b7EK zAt?HzNUajTiVaU@MRm26?@{VN+03Yi@#cx$dipyWWAp&{-5W--Tg3+;*Fo(5dbRgw zfg5`E`tR6Tp|g1{f;*zLwP$%@p1AXA8yDG0pv#=|F8s2O@M3d?HuRy;Mf;v6BkMWP zSA#t~%R;kw#I2WP#l}L?W0F}IjoeO|+0q)d&!GPci0b`BDAY1Z7tT9-Zn!1eL)^*lETr*g!8rM(a{B*l|uMs%1JWB}ee%7jX^}jynnDZQ?+SUIf zQmYX-K8qi!U44!`oUdwEpSmzF7VmycyZRuG(e3K92%MF%YFD3A#1!Kg)vi9Dh^fvo zs$G3y5!0MwRJ;1(BBm$DsCM;bM9fHzQSIt0ikMj(quSM12qXi+SS(xfLxEj(QKB#Y{L>{C!wsEd`?8=+o-L@8c~3qwc7}o zLy*`i3sl*`s$G5W`pf7c3f*c6)ZW3WU48XW6X_k}VL)RXtlHI|=(2>8a^{PHRytU< ztMAjMAUbab-UoD;@maBIs$KoJxK$`6{qClk`tlHIofzfLS;}D?c4p!~z2cNh|QyKRM8scEpuD;K& zQK=2@mp_4)X>8vRTc_I9-wySqZmii2el&tcwX5Ho<~}Xs#oPsd5kaHc)sHRHj9MaN zSmcvX9897R?R&f|)vo?stE423)J(uRSR$%GV6y)#+SRs8f+v!e2dQGHZdYHSet(Hu z19fz;YF9s_rLV*zfW|pkwX6T0bGF1wf&MaBwX4tCzZxy!>a!o@h(l$&`fgiGOL`mR zp`of>{orxW$@+{~E2^$Is$G3q_e302h)rsUYF9t+I9^Ti@^XU|WGV_mx2x}RWIWz~ zBf6GJsN2<-ID*yZJ<$=UdqjNTWQ$C+jqy03$&BSerrOo#ygr%^GX4u_i%u;sF1lU) zr)HVx3~Nq-U(s1ejcHeZF;jZ#&z0sK1W{aSIih0O?jz{mOOL=Y<<2xZEw)q)$?=z+ zrgv)@kr$~vu5G$qeXqSc=ng0NH8P&d$1iVE$-8K7+SLbDiYAe6SKs}czlu=p>aVSg zts+#r`fAsFWQ1u~Kc{h88o^t368WFQBumh=tIrVDlKx=+0_>gPx?TOu;4$(jh~b-r z;$o7g65XyoVGFm!S%88y_9zD3uDtB+N?yUgbS_-k*CZdZRJRZMFdmyJ7G z5{iXMZoFw%pTBxS>cyvsOkg>fi`uDpL2DEaGjR&32v*Ic*X`=71lpFk^tT1->?GIi z>dVxeO|Lln(O?rz@;JI(ed~NDiBCt?O0acKdfl!*f0KhWn^*q`*eNHyZdbpiRdHIv z{4v-|C%qnlqr;Sn6!s<|MgaB0tqUf#dAePFvSXjNES_khnZh6@yK? z`aQWX&{|%68?a7>>k&8#*Ym}_AuhNhfyNtb+SO0|Jtke|r7s6tW4LKozy9K6y370! z*a?U0cJ&K_hR}2755b;0T(_&gKc+2xVD9TqLNPF@t=H}96UMqo)?4r(u&fT(?dq2- zPfpR9mjnC7aNVwcROuYFh0hDEfI2u>wW}Y#Ag0B)f7WoIu?CxV^^NB|qgb5#Qn2-! zM`%~?@BfbCv*;)U=eQ6mSCq;K5c&tTEyZSUA zDoXC-pM?A{$$f9y)#L0bc^a^c4%hAKA9r3Zc`2|8hMRWv4Sw^d%r9||_w;ksS@xGk1-i}_-(wVKPbscBbVIj;{rVbNg-&Ki+-yZS#L?jZXy;7b;W z+eFi@e(0?o6eR`@eN1wH$WFlY2pn71|3zuR@_2Duh_?A$`Y?r`zg}C7fSc`Klm`zk zum8%Hh0>>KxrMmbp(x@pHkYeOH0z(P|9!N``VG=QFh$#wcO}J0mr5F+IozCFEM$qi`@QPA2Xdt z_LE2bi<|wJNhlR2u|maWVT4FgFE`oVEA)Qy1p23I)J+X>+Y5Eg|2xIf@?ls;(AYm< zdw_blPH{9v8nuiBGs^dB~q|k{PZC zlnI3|H^e!PH-Ezck}FBf<5)|@zlK; z&+l1IWr8DRTk?dla8Atb-bdTg^CG0{A#1hdE5-G&9Hq+AccPvt75v_w4Ed7ttl@&qP+R98@1BJwA# zCEybPetuU_S|Y;U?h()z+Y$qlgdQ8587V@_9YvSfuslqNivtCrcrAcXycR$xUJD@P z?G5G>xP?}hh-+?soKz#Nj65(wzBlcKMUCLajpPb%c95||Ec$D{6wZfeU1UOKi5R}X zvZ{ewhw<-HWI|<$$e*-13E^v2tV-ELD%ODhtrf}=k^SEm5*`IO?Lc9P z7{20xgbx9pJ5X36o|kSQVU##Y$c;&CDH%(|$`#4TPKo&R%*Jy~HI|4t1M-p`jQElc z)0T(}`vS?Xi}*$kyQeG>dymH^y9eU?IZRt3K0d=JC4V4(y2G?3;$`|hWUog2Mu%xj z#PCNkE&DLyPdZFnA|56}{kn(vCl1q=h%LvOkWHx4E=+3sv?XFvqt0X}Lwst7X-mY# zPG!k1fcT;g)0T*q7t51f3-R?GrY#YVCjLow7sU56%p7PDEfL93OBY$WZ;0bAi?uR7 zPPpui;0h^b_z)B`d<=>iJ_yB3Nj(#SOhgPHYGQ_~shHuqC}z0Ai5ad}VutIGnBn>o z%qxNyM#d7sH><`H5kJaDnu2;^mBo9&+L(N1c^}Wl67lRsMyc!q)u70f+7hvSMoX!j z4Hds%{2@c;0)hREfV~JQ6y`~gBhTvTUk+wt>=~+mMVxpWAV{(?MEfL`p zVoFI);QU&mEfMWA#g()w$gd8SmWacCi6rd^(%qrb5^+AvPtvg^51s3)$DMUzTUrue>y5;xnHQZexkq z7fX%1n;a~S!?h)1>)E9;eG#xy4%e25EnBWi9s<_f;o1^0_x(l52Y?MVJd!PzmI$u> zA%FD7O#z$%C)49u!HOD%@4$GZ6&KzN|L-HM{1280K781MAl`u^6c;;$;$nwTTo$Va6dBG>3PwwH*4W-=$R89APjQ z1um}I62V8KYYj?3TO#B;_1zq!ED_?Or!5g};v#{uM5MfkXCBv6h>azp!X=LS#!=c5 zQIi*9ED_zrFKvmqgPq}6A|_|$U)mBeL;TW~h;n(DX-mYXtGt+&c*Acj5tW5NTOw-n zFJ*~nAm*FltHAkySNS+zS|a`x^U@O0y&%U+OGF!l?^ z#!E|tjF*;(GeRRR5!ZNLTOz(Z>ZIy_V$^?3K1=!d(Uyn_U*<~O5U81hl_g?+MKw;* zZ$N_$)|QC0&uYN`jp&7p*6Z`Bu|&jcjSdgDfc@je)ibKHM3gOorkzM?-Gu0g5r)at zl$MCHrQFtS-YlOaNhl^Jxv;&gQI?4OUB1zE-o@#GvuKI7L^R#@nPT%tn$jQ@nTlf2 zmWaK(R^a<5qFb7T$`X<6eSq~5Rm>U<;@th&V$sSHao}uQ5}Fl8}HYKE{$L zOGN)O*M zg+=mAs4NkecR!-1g@9WDbuidiBEs9uqJNo>02>#PZ?u-x?m(}YF9Tc6oX>~G67eeI zD*5*GAkZ-^4px?k(>q2<+!Uy_!NwBtu;qLD&YLzEY@Fs1EDI6*wa8c^ zu74~m_wqrYV;)#qBHnGSChCkAUvM4yEL^4qRYN>l<&a`TNPqH4$5RG9Z|8nBFp z>v2}DJWN4Z8J7eq&sgjmV~ME0xGvRU-VCgblU!LMp11V1Dli@lG}0v3mWbvVPf~Zr z%YmFr1Zhh|qV$_3->11_iMXeku|&KKIZb|rk=qNXzwyGjntEibEfE`|{vl^=iRfH< zzRWKzGbTP6Vl_g?w;3=8oD~Kq~kK634ED_mH_M&UNqY^`umW5`cjU{44 z@u=1#))WCR@0FRcL|ki^T;|ghyhDV1lqF*A{az&U84mtOgnX1GBEy;?GM|;;+r9FU zJ3$V}lELoPX}!$s3`BRlGE+ijiAXrKI33`%{|u2Ut@joRO;dY*zGifqHG$xnSYs-m z8E2*A-}PlarNFC1$VZK{GUD(WnNMr*ZV~cPmWc6arzzHFEcl;Z`KT3FmWZ__ddSQ+ zL3F??Gbz-Th}TgjkZ3)09im5GIT}mEme5hOfVa>}hl2o<#}-PvLj#{VIWN*`)}#Z^ z!5XJ7XiJ2h$W7Z=Qvtk|cRqTYl}r_fl0P5H9l-~9<)gMxSt8m8bf82moDR`4ugsKC zSt6PxEFyE<4bf4r9E~Mn+_FY8v%BCgyfQPEi0vb*%Y1xsmmdd{#}@i3OGM4B-()_S z!Sk`ksSCyu@yqiDWLE~Pp)+yDSy}eD0kuYSH;rt5c6Y{E8QtOqjRc$F#ii(%_gfm# zxsLzFnM|em(ewZ`(K5%LLzAlEMWT6eY|n{{`vUUDa{P;#9`3isRJrcu3z zliyN-usNgfTzbM9T%s&lVau(gLAbl&4>w_}154mu(&{+)GyVI{-->o5?nLns0piUA zI}34nM_jk07I&&pi#)|E9-^OKXF z;!}>ewGkIi72+ixTn4Riu^L|-aR(#LGIfQQxasGyLYy&!DUGg1T;*^FFLCQl^Mtsz zBkpCyQ-czDiIY^1E5t(`@oz>Pd@iGx*h+y;EwRq)9q}L|zLM*_m$>xPF+zOZ5f3-w zS`EF$w>q>CVs}Qffn$s~ckA08IVVr?EH#BKUR40EJ<73vBy76P$f9wfc#I+7B zf*&8Fust~oq8b+NjP8KL;#gl$)ht&qw1uDl;!k05t&Avq%Tt?MFYI>(Iao`J#=S#E5#9?2nRz!jf8(M9dA2DYYt&6_(7}C1PH2OvyVq3X)qB zQ7)Ft&V-oE?Y~o43hSxR#N!x#KNA*cO%4?8PFc4q^iH-YZOD2PUL$OgXSrdobe0Ve(mluh({3L{Z@3?q?|Mc&0mhiGSNm zfLF2PZ~nl&!urLELSf&BU)YNFZ-_o>QnwTjZ%K>#QJ9Zat6y~4aOE!eW0PE1n!|Ef zFJJpu6_C4SXXaCi&fS;q-@}SnE5`a$1IDRm2XI&gYfqvK)RA#^|7`!Swo8%&jniSU~U!{Hq=`G zd=zbFyaQ;T!6mx)>_}k~tn!D(&>_ZGfo>Zto{GYzTc5fVpv#Ou0pX>ND%BEAJ0SD< zR^j4<=qcmGK!F|@&lF)RtbD-%)>p;_fQlOIJ80`r3fpXDO}d%_P}Ei(pb!UF!Vwm> z$Flnrqg0H00rht<-(H6ux3V`_M7bGH1Nt)pK4*Pf+@A_C-UJlNn5zs0e)y{^T^_Nz zPdL?JdIsdWPAn^w@3+UTDXgU(byz-H!8P$c_!q6Al))KrB(}Hzi`NaG261^vh)HIy z?(C1ZX>|<#2Sn#GNcFQgwMfBD^oU;^It~%vx`<8N4(yMe|FIt=7={N@y{+=8ys<{5&!I>b;A+wHsYUM zw4!G>8+gEoe|FI-;E0bH@y{+=EgkVmBmUV%YqBFgYs5dhXzg~ymyG!TzG!i>NH1FZ z3wvC&HlTV~uGi4&i`EShY^1LC2YCkbBwxZ6%a8&9HTB;Ek#U0j!_q_$s(o_ z$Eb_eZV?m0G3uiAOvH5N7ZBw91N@DIB9NTHQs=QjSpZ0ybxBU9=u@jJ{|+6ZjKjbQhb9};uX`jiU2Z}&j-?jKa<2dj%#wNe!*HRFGQK08=lv?gD4Qy#|gawVZ8 znB=Pas*Bdvg`KG^?69jq=|WeR?zx{PZ8)pfAGXw^(k?HG3j>TR&TXuY~pf%-H4 z18BOz`l3}LQ#YExcpcDYgUvY}w2?#M@sD*{!EfX`W{Ff#9R#%+N*Gv+FzFItW7 zwj^Kd2x}zBWSv-6D1Ffy_30*k=9>5y_y(;p7p>+N8f5*0=;Mq;=K7-b=C_aVKOp*{ zLHeTAYlW}%nlmL_SX`LoHtUPlrrRATF|Su3P&$JnxoGi|9J%;gpF29n({z=D*d26w zCp_!>F&toZ{H#}PT3u=r+In$bG-gy^ZZVkUpFsbU(;K5$cK9oZ2eTY413NG-1&=)( zgfF3LFw4N?c*;t&+)a@ri=aH3!_e|&UF9y~xnJx7!-%x7Eigjy4*xxw6a+_Q`ZU7qka`u_(X_oK#BIMy!# zh8bM|(e9rJBNpc7JGh1cPJNT{Q_QvnKwV0J&dn01uyvGpijl$MWcbH zkr(FndFi+?FUX+zCluz@o#~vy4EWC}%nG2oFhA9tK>OpOW)8-}#$odLHy&!{IYjBg zd_6K8+Yhwf;2&z{o#35#DFS}^M~zouj*X3R@Sa2Dk8PF9GMPE$D3gd`Ru_y;1^+w5 z8BGGQa*ur7TiA$Ql)1$b0_YhTZstkNwD7E+#JgVU6 zym_$(pg)vQu}ztUOhzh`idxBYAf^lTh;}j2L}I81+TR0j^`in z0IZJ8!f3oot=ii5`2GP=$)5I*jby+hX1$chVF7mg^#Zwl5l7pWG)gh@jm)zx(FF+?OXIGK?YNrz9?!E*=^wt~wj@(1`U?kqEZO@adIcJsU!Vq$G zImn znvm;njteL^h+I2)?nsK5mg^ADT`gRnT;V)-K4(#KUFEqI6DyMIKIZB@Kl741aA;8! z$76UpZu5kI?Zf|Dz>T7y zId>-0C((fQqix?_9aHtx6F~x=2N)D37p|S&qnspaZVy1;bDrxFbaa9Kn z2{!bQy5`Vy^3v%J9ImB|W{Ipu08jUl$ipU3cHr=+_X?TST4=U==}ZR>FQ%a5nv-Cc znFnG8ZBdS@1Ba5OF`Vdgps!w79i5^#fK@l2)WZ7@)QI$$oGd&xE!UL#6VZXgh(2-1 zE&)+xOz6OYk5W;-vI7V69zJ5L)|XuK65Z#TcQHkAt_c^peIkM**bfMJM)*V zX!x8$wGI0Wr3-sOY?)nyH!qSs$Ja1&wZ#h6`@KmF3*9gz!FLjL!@vs)4##1u?`amc zjT1m4xKw^cu1z@SarkA=;G9)A3>S{!rF{>eVFu^Eimn<&dnl<{+-M;NT$~BM=0}aE zaA~iueq`;1=+;k!LM@Ys+m`j)etv@(;cDX1(?S~LUhlw|o>V-nKux?o%pX>uOf?bw zjv#mqqI6G3oyGTpYUkN2Vt3}=royU6E5w~miP{-fG!Q@JjZIk5o~2MRS6B@z7o@Nf zL9zOfH6A597n4r|eyt#GNse&giE~<5neBrH$g|dFXu??6N<2&QIW4SQytO+dJqvQ# zq1ov#+hjNccVZWpr*ok;aRsc38J|>xS7hX5Yx(@z7#O306v1V6! zr9`(;eB?*_x_vg)$A^%JuQK_An)_-H2BHs|)P>yc?daI3@7@XIj&*kuxoHgKiUU0rw$AzAQO^grWT z%UaddMNtv6hhtP%7Y{^g)zw8(y!x}^tFA7pi65$~iv=xtu^&018bWd@$LOvuRtcP_ zG_dOGVx5S|#4)O?i%lXXm}68|7u!Wl6^>C|UF;GuO*lq%b+KQ>bmJJ+)x}{EGmK+Y zR~IKZMt5~FT&%Y0>f($bs;i47OiWi77a5tZF0P48FCo*&ySfOEc}pHXampm2M3{V1 z^1-FMy7;f~X-bF0R!*S&4pv=V{Boxmok7`I)qrX{xa>j83b1R(JC~MjGVTo2)4{5% zi(B~$l8ZB+05sLXGWBd%&kppAQ?CK~n{j%vYO1S?9c9K*bWVL7=!}C^R~N?)HKP2C zp8~yREH_Mbb&+qvSE|6+T^9atObV;6E@BQ_P7N4m1j_DU)z!tWXrHMgLfp3nWQC(dmEU=p< z@nTMbUyh(rU0v*6o`+8HDeevUSJrSL+WC1|s;i3_yg{0F)kV(p_ay!UXu83wtBZ`;-_b;_ z0Bb=uIaGFav8TgoNsoh^F;sPRF{CoSd_O?!GbW6sU0rG_=BBHQ zWvi!4q`SK4nC7X9P+eV&J*E;@P+eX4mI#sx)78bo17j#kD=dFI^52a~mZ0hC;zr}D z6qEU7u$zXZ0K1$+B%} zafm9hkawhAgpVfE)x}@dQZ*Ss~ltBaW(exbNrHvfWuW{uc*)73?{dx zo$z%Rv@(XQm8FvxtT1y~c*hguqJnR%3uUs9xZ2kOs_!J%U0qzhH=0VJfUF*1{Y-Mx z)kVC6Ux-gf)>N?BPI}$dMeU|DC=svzCa_Q^z3%EFe!_v2n)x}fD^7ad)y3TlzSN;M zZW!KyeR8<&>SEm7bJUA@yvq3ggGp|_?&@MoSSyKh0~IvbbafH$SM6!>cZaDn8xtZCxgv2+;nxZZd4FWWxf$?o5OWi7soQJrFqQHfL(I9 z?&{)W_UE*M`5UnR9Im^%$o+Z+ZDbzj7hL}_shzL8x=0f`j&?B51y;at-PJ{`vC(KD zpBJhF)p4-u>SANU&BS+nRu`aN2Ai%f9{2oCdpY+%!2Z-cLRS}Ex3-{vShN{}J>DYS z)y3HfS&8o*t;^sywZ?RHv835T5?x*V2Na`<+DhjeEp^*QSRui&mSi zE{=xfqX&%3097(rb#*ZzdULdYL2PFxe5BYF_+M50bGo`%bR>$Ek890ns3w{`Ojj3Y zd)%Yq%vXYK(%k-)GciL*PTp}`icUgsPK%tbE+)l&EBOnscZQp;F3ME?E_uwVNhlsB zRr7UM7xvAMl4k?UW4P(+qJ8JTsUojr6|h={o31YQB%edIn0Er};c(s6MX@KDsS)!D zV6!xrXH(PF#k5k{s11w$hG3Twd3SX&q-i#ML;$?P0&#jWU0sCc`;A^A`jbX>A%3>+ zp}V>W$=8np@SqcjN$xM^QY2ms@betG_<1+WkeZvh3xp(i9{RBhgh^j3it}VcWW-Na zKIi#)QFVc^HEJ&6lWboAe%$i8EuicIp{vzTq?`^g$APj7gcS#FiIjf>@B^AkDZ4-j zNYRf9A@VdPeri)tc7c$-NIC(Z1Ms7qg0c&QJlQV@=*G6h!X%-`24_QxkZ%F_tbi^K zCh?OdLh*!%P&^?b6i} zpj)&;b%79i?zw~~0M0s4bb(NM+#3m>0K9Ub=mKHb=z9|S;(?wY>O~(SzKp|k7YMUvEF!xB;+s0`p6UX@zsobSdn0~;!*mx2A?n3t~a5@KGuzAK4&>H4lF=B4YqKF@2{_x;EH{UZRRwzk@gz zJXt1{)I#M>B4B3);L ztKo>0>$~saO)|GktP#068twY-cP2oJDzeCfE7y00dOJD@i_F zbL0AsT|go2`d)N*i_~t>TDj-7>$_p|)sly6Zd~81S}UYo-`A22BI^U|>U-^d?fMQc z-b~h_q~PfzXq4-_?5HMEQw+S8(TMj1PDyCjckG*eq`D)N1B}{3s9fI@V$0h$_Ox=$0s-cR>85LY`-MyGXmfldgUx z%PHm>i!h2l|n=KaBj zMC2Q-axHpNC+2g&7BT1Zp>ch8njXUvm%uQfy(YPKeOLSUjC{{<1?ZN+#`PWeVFK~B z)A|HPA$sMt>)R&`pELPtml!C}!OHdh=kJGP?gfB~I+z>a7TjcY|9(y4IzS-?8`pQk zOiyV5Z(47#A(}^UedqmkCy6gYb0AoxMaK0#vmeQhU&Da*dSEnmO=7ooeIFnz!4;re z25Z;%U&+tQ>(ED_?*<#!_qHkXC@1gR#Er21nB>0IuI~<`Vp?e!7XT{CSnM0)`hL}- z7X8A!E?6TcxpIA1FFcZpG42gCz$DkM@960gQd`Dzft*W(aeb$(onP{8nmexVFWoyx zW?bK&FIT6LT-f)Ze#Z;rYU+`#c74}vHlI52Vq-K$|G${jMrqe~^a2y9Kl7|$xtWXl zu3g{R?U(UEeWNzht4mid*0 zrbZ;X;j>JyW*(Z==tAn^yf!J6FQMOkBZjd6W9P1sQ8QwO|R zgnX3iyHdHKGN0eTM?}a+xxW1h?3DS;2VduvkK75`^}RH93`?xkVTdkyWu}D6^}XWv zu@uT{{~Dq%UOAe9@UArZ5APSDiQg;loS7*&O0vTz(kbG$NBLgo5?`RIwvaWh1FymBl zzQDXdAQ!j1aA&9V4MES+R+n=`j@Cpgo@Dmy>H@qx~#rAs$LP^D#L~^U&F~uvDw^(EanlX6Tk`+v2mezET%|g$N`+u^j__%>C%$sm`0@zfm2g9b? zQM(WRTMwJ6#W~niMasdZ+Fltp)!`rM$W^icY^sqC*i?DT!lsIP4mMTxd9bO9uYpZf zx&rp4@r_@R>&Daak9A_X4Wh1<13ed>o-ffcAvz5jRpt*RYH-*)D)F*Am*53=SE{ygMJZK@`(k&{N>zFuab9Aq zl&S^+*mJZ}<@WTTSmXIxnAHYZrBuZgmA|;6l&VQ$YNb>i5hF^e`X)w{QuTfe&$bdz zsFbQNT+vF^Pl1COE2YXYmM7@X6{S>pi^@c{dY=Ev0r-jhnC15L zprH8Gz8?DKv+1AW(A~E2S#-*TS@paX+9THdad2;>?q2KjYaz3vH~F zs=0@z(|N`_f%e;2DOHv4b*2Jifv*BR(Ae=*tesM-z84RrlAQSo9<7~Pe3em3)#OLn z=>g9s6?hhpj8dvj)(@wVXxJ(ZUX3%n5go62UP`Ij`}a}lH3b28(9Muis#cymE$Il5 zafWK8DpP^^5-$Z>ZDXZW%^p5M;=@3pHdad2GylF4-v@eXuu`f{tj|FA_#?w=pP0PS z$(JyNRH}O2w=6+ZfcP7#l&W;)|AYU8YEdR)$5BdEaQn{iA5g7lh*GMuuW?zAd48Qi zdNLKej8>{1kHlZlj6*rZOsJKrNsV69Q+_2@18wxghld@?O`jNt0-a+l_eG^tJ#6@z zys-OQPk}z@spa=dtyGQKmz!d9CPoLS59mY_GGmmgV~3(sW!`CWAyC4Ec*k;As$wty zPBD3bv{KddNe@}*im61avT3bU{SLfADS3i_BjdTe&Mxqie4XY-sY;i#u0&d?3dxW~ z6_irtGdqVWD5Yxo-PE#Rl&Y5Av8_71X1*QqM^NbG7BouLu&TqTDf28~xeV7z)v>FW zafHpFm8wcv{N#n3e-WC;L4F|}ANgo9O4V=tTqTsM z?Fbxl4{4=pp(!nRcK3`{s#+ur zr&hde%7Itmj97W2RK1@6iTL}C6$I8nw?T>*u-<(RomZB}pTZ6SXTq{+34qFnB02*ho zQL47Kno9$D_RGN57_OD7%^_vw);R)n(qN-h?KwY_j`Q3ff;~6fC{=NmKBe=_qjteg zfKIKQR;p?hzE3xp`-5e+xmKzY4XQ|wn3o2tXmhPp#r@ib-Y{(eVsn=Tjmm=RW?>iRpZ00iNEn#hk#BPY?P`a&cEq5w|*b&mF6BwRlYbU zDar(dqIJckKXmdq;3v0`R;sF2JWKrD(aHjzOJ|HymGOsCswx6C(bzt~<(r-Q!}}qH z4s@bq{9fA|$$>g;l&V(~o>BqEGl1q9tdy!muY=&fp?Z*s_^`G3+{T+vTuQX;)d}Ch zj$5NTwxH3x*W5tro@v7+;F2*9X;!3EoXiJ z?3m4sQWfPaZDf8I?1kp?-P9;m<3fXI7l)iUNr{6_zWVM;)u>VX$&nr~D+k2en^CF; z-mFF?P_C?zy2zoGs=D9SQZukFZd``MbqhYJBPXBqW*IsQf55jrS$mup{i#&l*!WJo zPp(Hpd}ie}oFP0=%}NRH{mO`H3l=m?@v2 zsVSvWRog!YjmH#e0Qjs;L8(+Fem7mfVgP(9r=V1-{;gk1z(9cJ21Z!n!Du!xUDyr0 z^*B;L;4@A1#Tg>{;tUaeafXOKuWtZPfm4*ol&Zr?)t^P3!mMua?3Q5t?E}y#RsSwi zkDvL75TAGc5mZXm&G|8{Wyn~`5y}=>P$^aUGk+ivEQ?T`$bw3#I@&9qY0a$q5HtV4Z^%^oPF>getSOe<9zM)iajiFz@cX{E|$Z9?svVAN>!RM;yxI$_&ykgPqcZ9yJ5s%Tn;xyNb((Gzfh{I z!qs#6p#HsMC~mE5D^+}1j}<0y1qgj{e4{UpZ}i3Sjs9jV73cWSD@MRILRK*&LZxGHr2pgp;|2Qs{<&svalJT`6qf`ZmF|AZ(#*1Mq zRe8mjR;mh$F|AaU5@TAaY9eN{j%TBls`4VBm8zONrj)9>Vpu9w&BU-&s#=R-sZ@0q z!&0g0A%>+=HAoCgrE0hsmP*w`F)Wp;DPmYERrAEKRH_z>VX0KD~542J>_q0=9KUxa3+Qv$$dOt6p#D{@G4c1E4jjo;W_dh5zY!k&V5~);OO51?`;l}eYv6U*$$e>oLrVrXCll3?$ zBp^Gal&U5x56Vn`)0&;pN>$qhC1q%?UKlkarBtO%l~XS49y231rRqv)hvea!8>K3& zoI+Zux^Qx?%tjxm7h1N};&dgtSjy32aWl!&YHpOO{3{gFN|lv$8t#9B+&}2#t|qpm zR;t!Toi6vH4&c2#GD@l1@UX4Sgn%zM8IP^0m8zFDXUg<`B+r?&y-B^5Qk6DW3mJTh z&}$tuN>%RH>ij#}Al%6TomhI(N|oP$mvZX#Kv`|9l&Z?ND$A<~Wq@ik<{eimRp)v4 z*Gg5aO0ngogpLReG(oYrGN_cQesQwO7H1%|BC?=Ts&YMPA%h1HI%R^gF{MhW)Tc_AU@5d8fMIyrZ(RGm(gTjH!hxeYc- zRmk6&h(9~6%3w7O*GiR@wTYa(9Z(k=E2V1ssG<^&1)6MQrBq!!QA^@gKpPA;O4WrC z-qtx@wNS82ntLc!!}IxA;uoRU2z=Bbqg353&|JRCF^6LP(aH5M(zJt6s@B~h`o<@^h#XPz{5PQWY)vXd1?^Z9A|ohHItD6>AaoU_2IRGGp=D7^Q0X9S1F7 zz8Y+!J-Je45MixU73r5*wp<#SfBtM)D^*|92Fdo?Bhx>!_EH4Br%OAk_*9eaO+{vD zB<*RXYFHdU+2CG;&P39nR;u33&m>!XjL_%ET2xBa*4r;-i?K&Q{Xyrs%HB$;Iu-In zwpak6@*EUz`Ql?re17T&X>?rkjr@7DH$$ksTZ=}i8kO!Y<>br=@X2nC8Ko*yjm5H^ zRp47a+EGeXvW%g!oipH9J=#%9)v>q(WIOM`9U~)ILlMm2_;21R*;o>UGIP*#4V6;0 zBi4S3!AoBXp{i~z8l~#OmF|>?GeO{8-5OK6REXoo+c4SAIPmEn?WhN7?E0s*Y-a=b zE{}GUQuT56DcR0N@CR<~$lcakDOF)$de)95K@DuDmv));A}%30(ZedJ6B@ZKKnbm`cWE;aMIbM-cU5k)2he6D*tTB-WE zJP!TCnQh=l-P%!WsFbSgZ>CdI4&FxSwOeBihcB+9l@MuRpNTbtUf7wnq@PY2_7^Ny(3tS?Y3OHLgVk=c; zLtD`Xly_<5D9G2TyJ@A$(f1ym1H0qKWk@SkPFE87aq7U^cnoy5QYF?Z{xN(nFc%QW z$>xRYpIt4;nG|8y)Q9`Xwd4bgqYDc=lQRd`+Sb76&%3zoUQr(X5VryD`tu013XksV zWLd6E2^)|zkVh9BZVdmVMo)6KA5?vir_MuSIRi~+ytAe#D*>6wO*y7)_u%gU3UoF{pxnolZnUgDum z+u>>5<{|IxQL$P)bhtn5tEps%(N*}|21@=$J&2w=9*>$?(esUJ!q3H1|;)WVLG`To#<5z=+ z4z0l51RL^DuR$N7ke!`Fu4kX3TFy>fEBJgPIs0HJcxT!N=78a|$! zGk7RQ{x9TQ#6zj?l_2LD9vVD!2RXO#P{qfusownF`zZFV{HeyTjDNLZ&3v*N zV79^Nyp|ltNkRM1xXo8~4C%XBW!&*Yer+0x%xKQ77gXNOYQcqNk}d>UZd2)BeTkWu zcu}lja<#+4ky=?H6y5A-*riO^Dmg-w)ux)P7(iB@&B~> z>6lRA3ZfTKb|+t=`ky!dk&+QM{|$_o&ENDgo+@(u=eAshf$V1W9L8x%t=bizYXJ5s*?gm7D+WlXb*%vKoRkGgNH;psaW* zO*hmAa$PLhcU~y>&7S}(<9Rc&Qdkw&@fV|U6U+SA{Fy?dFTnCEaRdaTjsID@`bW{mggikH)nI$g@98Y;>HN}YX%tnb3 z<(YNgglU{xxE1A@_2G*4%mxa4fwA(;hKb5Ut|-rJw5WU*3sP+x?y(tXf~Z8FgpBgc z{uPxZTv49c3{lC-m1ygWQ5=VtY`G{`ti%&gi85DYs&l2@q`as^mGf%Om7bVa9EVfR zt2sK*@`Dh<+=1UX-kx@ScyfcA(y@tnT%4nl|qy{ za%pJDC6umOX+>!WO4?q`C@NFAa;!i)`pYpRo2V@3%28R#Eh;;>QoO1InT7d9F-^HddbE!M)$8Ame60K?WCT+N>*H<;>5X_Ml3P2Lp|a zfV;E?E>La60&2u~0njpoeFtUO2V8bZvdq+p@jjp<1{YxkB95c(-Tukx2IE^m4{Y47 zBRAgW!?CXPit$fIQ_Xru-#rMp=ag=@iEu<%Nr6(^c*A1GBQq~KOn!_D0Ts7#dE9_E zj$=m87MW=XH(np8iH+ZN=YxAiofPe83gg~D18w}^_eS9D4d3;rWsGM4%`>=2^NzgL zLQ5=2L}_{6{{ii>F?cZVp$yMtfMF^7Pi){~{vsXp^OU+DtTEu(`*eshDe^?g02%gwglD0740=CoUEAUr? zaU7MbE3Rs^owwaZuxmDtAFnNVeQSOBVswu)s@E%sb(_85o^E_Y$ZSGStD%O9Pb-n8o`oX*wSbdvs&+mijL#(;$Qd3O4(^%cW z`q;e9LT~T|*7DjHDJAnMV6$w#uSgWMzs?$%^(5tDz6ETj&F9}ZhUs@(ukJmfQp_)c zU9X zQ8;IU!FzaQT8nm8&Av5}j&f!q_$-f1^rcPF&gPW<_(M<5YzE)!k%<<?3uNj(9Tu0(1DRJ`3nbzQ4JTfVpa3=Mb!@Fc=Eci5!42zgC z9peMPI<0}+&U)~zIzzq^PwZ6m6Y;WHXMip;mY;L1iNGGCD40&YKf|o~6Qfg5s$!oroD@^$1mH6t1*IysqUbT&j^?TW@ad3(QWblXtBZia0DO+5 zpj5?9&ub*$D1ZqDMp)rBXf|+aj9)?(i?sl!Qc%LgsTca<)C+xa>V-b9Zvan$v!BRR zv0l3l%9GyDn3Xrq)4bAPeZ}jcUX?pukUKowhv`f_F&c~3Q}SfVMl$*~9ZLpIZ@*uXlM@eC8x zZ`(|(Vmr2{gHw;pc>dWIO2uE%QbY9u{W%QG)^4&UmJ+?G}MuAPRx!gpS zqef2UcCG+hXLGr_K8}1-SIhQ~gPpOtT;+IgI(-RN$}b;d@B_*|&}3q!7WL_@AH8*&4MA!i8_jo+@=NE26-&=+rO=!>^C^u^m6 z`nRxAImho<+~;=%?(_Q%_xZr)KEDZYpATa0^P$RpJ}SA-2O#%(Lvz21>UU86b*g^` z{Q%w+*bK^$lUJ$|;_8&UA(x3O>ZW7jeb7j8ADbk^g@p3pMv6<`j7tr}ehNTo& zl83bvm%7PYxy#O8jNiY}dFACpMoV#@Hq4iJC(wQyD=BVa%%2ip1-fmpmg1WD!MXl` z@^41P^oO63;tF>ugzx`LV7;QVx%zNaQe5tPt>ibh!U&Z!!HRM*r4;9PwhNWx)oKdf z&Sa`{MoDp5+NYu2yp@LmkI@k=#dXS5h&tjWv=)J^U@A6)mg3HRtV-4%lnILSIG5^71blJlw8j#rWGso4;u1zFPi?vJ@=RAN?ZvI~<76hpwC34RLTiX)lMHRr3!`SFq_}ur7RrS^Z)PM#Hg%t| zj{?rouP$qQ(1q_~M$-b$pUxMv%1$JEBi zwM8d)C9x&76nA)n6OY)!m-eCH6Ff3XitBuMl-$#ngYPyOVH?<6N=tF2op@9iw|EK3 zhbA2%sHC_}r|=*y4*o(Y%5t@MMvBX|eXPXEfYKPOrMPW%ao)sJ2LP3@v6A9ap7W8m zPy?V~#=PT7DXtENj1*UPQ7IW5hR_rf6pJf^N{UOcy`>DUMQBfCK_$gqh~_IbyUPgO zH9^^!lHzLioG%;u1|AhZNyx<$87;-N@4jAUl7pw!8FQbp&=^N0E)2xKZm4%CCB+S$ zj9)Q%`!odNA3Y+x_*#nF2V+BI27!-t&loAL+xFJfpAWXB2(0Fid?!>=T!q}7sRqBr z90m$C*hq0cBW6%T<`2N0dGbxx9N&3Vhk2BhxCnqwET@s;R^zEO;!`gTP)5dL?plg# z{-e6YC4kBqY^1n)yIT`~Tw2Y*f(+MET=u*J<>Z5bM%q|OaXC9?lz0KqG8-!?Zf>a} z67K^#Vz80odS>oPt$5XLgFVySLyAj~_a2F#o1(13`lFL8ScIPhpV(2oz*S4W%4vWy zM!-^v`?z1-+`j}+IfJznH#+?{`8m`SsI|dHip#KL4b9}uGZ<{7;aZA2KA|>^WxN1r z8DsveA|u6}uGEjVGT#q&)Sg^PagDmCqvecm13fg8YbowVrdU=Ol96cVKKLt-c9ayi?d^Bjj`up8^`iS@4V4tvF~&&QSPq1W zaZr4yi4S7&4Z&MUalN0-qtv|g^$=>|)}oQ(Zbywv**Mc5e3V;bMvB|k=ag(`A@~}P zc9ayiJ;bs^J4e9Jd9E5I)PsW`5Q?(l&oz|7+jOr3tqRE&lOdFWgZ3I~ zDX#aOrn0f(;Fa7OGg4ffG=7#?vXkv{$X?k<#QT23i6q}k>Z+0ZAA~kKDu!k(o$TJoqm@1s84{?k<{pHDNgL>LW=X= zTXrtrlG+lQ6-a&qt6C27xGl50e^6#$uXlIzqufNAwAldDo7?uC{t8WwzB zeHUib4o?@fdi5h$%op>q`c00KYrsz2_Ui20Lb$QpKi-yW_EuPaoh$iTuF6yDk*ndT z+n9Op4CG34VnRf7o4x^ z87|}Ya1*fv%`ZGgqk%Dz>xiv3;aNg*mc_3Lu5*NqU7d$!47rC}xB26zkR}+d_u~5j z!lQSSZ^MQ3Fn_)VgdWRD|93sUNQ5L`BSMca5uwLdgwW%QsNBPsUG(_!4tjib2R**H zgPypy!@nZniiUjj?jClD)T4JlU;*LxeXAKpVJB96j}5=CV_7_2GAz{X(Yx|$Q2H(A z(Yu2t;(bLudbd{JSn`@)L-1zkyoU34w-o$qKv;wNLpI4ThJ8Q=*;GDyx8bYLG>Ok0 zW`NAIDPQsqYklT?3~L(GZ6HTAjrd(fWwYkKUbA>jEwafYo9?2Mg#B+fhAwxA%g0@V|k2xncR{EHkSn zr?o6=9QeXNGcq{K!B=0B?!(n^-U8c^J7ltJQKDQ6W8zBuk%o=ulj9c9Q*`((iGMee zEBCV-9@g54pY`kL{TRRhfjhAi$|ar~ULnF;jOXRxw!Gu|j?YAR{%el^aCPtzb{f3m zyi7Y6ru!A!y30#d1XG1UAxu|RR(PXs;>Tj?xLdBN{_2AbL3yYF9 z8GPBF8MU=UV@n(FJ%IaPA$0YB2u64vJMkn(=RU;We<1wHOdu9cJQbF$&vcIpwj%!E zh{Dgi{U0A@AMvTMXvsA_9MWy=tM}OYoVMM~`s{3cO8Y-;MG65OjKcUv0>te}b^K9L%Pj~4S zF9WW}7sMjE4pf448)FIN&I5HI-3I2t8}QE_7=2Xn7}fiGzL0L??R4AxUoofu+s*&2 zc~W+s^R!4x0mbVi#eV&NDcw#BjIjCBo_1MQ)g6hcF*>hZ3H0WVDBafj&`56np2+m) z+)?E8=1*AACFxX<**2A%KV$3Ra`SHn*nkSm6Y&A+R!FYf<^+6S(S zC9BJ`b>IB%(yiS5JFpd9S*}C69hC~(yZatUx83_fx@{A0FTOBLE{ae7lmK5t@rl{K zauy0qo9LF1ZXX=QPYjT58=d^$^^+Zw)3XuH?R8WA$*R9j_1hnp{P+pkAAMf-*P@V80El>)tqxNh&h!N%4E*2xovyE{BA9Bv5yD*{hZ2h>RJ=+8V z7hg#ao^4){ z*})a%*~)pHjMCB(}lxKTXRATK#MR~R-MI{wi zic72ZoT%jHit=nPiArg%D9={5T!$;lv%MxVZBWskZJt|AsT}r1YYK|9(0LW&zev!Y z?eN~k=_3wWYctRe8%tBR_NoQl$iY*e2MV{b@@(JEA59q$J#*0--xEXJ|% z1uH%}ui|3f%Cn6f^qaCV&JL8<#>%r@)i@E=XIurS7Gt^O%Cj9+e+0E-+#aZ_jg@EH zeBlThz<3-`h>ewJyX3|`n#6cD&_)|8&(<|>BQ0Va3Utn3?b*gYT$r{nehTzD0+ya_ z;yJD9DC21R@nsR6T5{#tUdvX7!WpLr%4)FoY>O@VLZx;CmjS9|W98X~&g((78Mg!q zHrQ8rwheb5r69(`fX3KZdA9rhSwnpoF9up^W98W{TolE6#*20k=(vrQXPaqEP5Qz3 zF3@8eE6+A>+maNM8>a*K5{yo+xAtsX*7-u?7^eX8x3ThUdwrWu^B5NaDrIBk+15>1 zk~T071Zr-u_H6risYj0(_X8SYu<>kbB;8C0na=@RWOMD=4h>yP7n$z{J7{z5**>YY zlD;s%0d~*k+OyqJI0w0Kj9Wjz90&Efi(9|3XS-mSi;^-=3YOaD+Oy5KE1H#(+YbOM zVRP--h8|r`*?9VfV9ji%?b)7xxQj+H{{iMWWY%AMwlDW?qFKz7f~B^(_H3`V%TH^V z2Y{8Zx%O;tews(Qc>6R2Yi4up*(PmXhxYOG{lJFUTzj^c^W~=V%;$hDGTeB!t&=>Z zhs<|_9W>l{wnvs^r!UNJfZa1(d$#B2o}&jhfWHGd53AL8R1)uZ%CmiXB|g34ObYN! z9vS7?rWslu7ekOK30}oLqdnV;rS{2rwFd9vnUS9Dj7w4FyvBl0bI)kcwnDAyl$7VS z9(<=qMtQb=VGb(BnG4{zJTl6&E!Ma;W#i0eaK{n%byuG4^-%ndz?mfA={z#Zvwi$A z2esf#QSb^L8Rgj)$(DwCaHctU2ak+&XoGJro=&g%Pvu5}hj4~Jb{sXtYauh;rhJYi zGpoV3nT&kBlxO=XtG6ZEISYQxBcnW9XV(t0o%i6sJTl6&t(E3G)y2%M1o--%44wKI zRGzKR;+w?FX8jEmz*v6HDbKdrfO7Pn_nLoz8rV}S&o))eAo|I;8&DrJwf1cNdg3LS zi1Ji3rSWW!cEKG$QQoSNyc}RW+tO3(P$<|nH!efM_2R!C#C17*eaKQd8g8ewJ=rCk zIQ%KkPVN3kY@`IBeCpx#k^eeT-Dk07e1GDmfI2pm z^6aEzr^S>V0Qd|>O)2GB|ABtiM=bbQ06wizP|C9%n`I=1D**UhM?opi?*92iz#{-B z4UDkDPcdcS$Cc}ZJX?uR#UROwQz-PsDHQtR6bgM_-vFKhr!vyU?3sWDhV>mUH1^@JOOt@t$hr*~Ek9kmDQb6l$23XRn{HM2`5VC$*WDX9sWewH&!n&u=p= z&mMk@$J$mwy_U_iJlnDAQF63Jy_3zfJUgcT8gh(4eVonuKP~|YJE3**1Mb1N2=x^< z)ADRk%s1rNi~3=kX?eEekT&GFhWZ_wX?eEhOx!Q=6Y4)~rsdhN3Xp^SaF`@Sr?#1v zXG48@ks}-Gc?>fLn&;KhYdDeulPt$$!5~?dzV2?3{)g!!{yDh1B*^z!9GHghvuOQs zpT+<4qigwZ#@Xf+mq^eT$2a=o_(oqG-{>d7-oiOPbh*!m2lx5F<38`<+~=c#`@A=E zpZ8hr^X|!g-V?dcFADeh1>in!Z0_@hi2ofwuD>1Hu3Ez&(=SX!h9#jvzUPl;h^k%oz3X^~#%VQrBvDwRaO2j9gC zJVxi0klzBdMcQke`uhetgD-*T6jl~#`lqMl)G2`c4b~QE;C|fRp&-ho870@B0>&au z+9eJC{t>LL8<(HQ;%|)NJF+J}X36g(LlK%_f*IvvN{h79^~ZFFS8F-=CX>m|8D){4 zUfG#yaU>M@oQ`OVwBG?AYb*8?>j}s!reZT_i?qQk{2`6kS=|2?omdf47HMdg&oq}O z%nD+E#yP~Sl|{O{O%9oC63yzE(0`K5w$NGm%Il}q(uf|C57gXPr0d2iq%G2No6o}kLv8~)xvPmS zsV&lbzU|~*bOQXMM@Ctsg?g)RzAwQYVY(e5uh?5kTcq8Fm5?naK{B&RM+hp5^k+ld zPmjO6mqMt54jPMe;?l*ko#sGo4AvHD)hs_H9s)GV#>yhyp0kg%?-l}WWXwCRv`F*v z?yqmHSU>$$84N|}nhA=(yJ3vPdiByeGHMA|SqsAK}H< z7U_&D$7JRxc$j;}SfsA>v*{2YY|jyR%OUwrs4UV+sSeUJe*bV?NKCQONo*|AMVU&_ z2j-c;a(MDhR@T--={55TVAYuO`=PN&Z$A7=;#02;P)9Slwn$5_&MxsNpa}*Wi}b=-i^;V`8h>#zN`OyRt0Iv75n*nvnDm{)61 zwnaMfqhiJ)O;~q2MdP#M5TqCJ%)|k28+O_v-B3J;lJabKA#{L)a;3CI+7fpW$;A9R z*j?R_u}Jr&SW4C>lz*5>l||Zf`%Id_6UM!aKX^tb8n#!=9?}-+rI#OR2~SZ5=_Wjd z`!YwILRzG4JGGSa=!NvCKj)z>(q2>F%9a-(v*FK{wMCj@d=A;(ab&_HYfoCFCujOv zVoBd1Ls$M-QqmUbo&o7(gNYEz$U)w^5mrQ7q@5>ykxN(tp&F63sBWz|$C@l#3`VGL zWG$*&D}GBAOD^LSgqB3sqOwTOZV#tHyxI34blj~)W0BtYw-Alv%w6yoZjBj>v`E^| zvYn{mcgs&W5yz#H~y|{=P~#@k9L$r zn)XF&*^bXu{Pcq^;u_ z>A{l~$Oj*F@zKdOFUSUju}BXe8%~+Q3b}EI2${#E>4nw%97bnWX?j$D24 z7;;zP(0=4>#I;-7F&eNFqwRUrXAf-0QkRR6vmcMXo!*~Z4+|_M=U5)yHaZq=UFee! z_i5nKwdwH7&7h$f$hne7=ii0Tn7N%VIk)p@tU53j2gJc`1&{G)*6?h&L*Y~0jqox? zgV$c(MXogsW0CVA(=lhGSx)}m;>z=T8aco6P=-eTkkbpFL9X9(9I!ysT*MSt@y%$! zx((!tHu(xf%#^t3f3#~?XdoxT$TjCMWXjU@0&$zdx>w0HF3bmV=IANp`g=eta`oNe zv|NL;;!(5}3t>si`j3Dy8lxc?&$-P^Gm57OPyjGSLE zT5sd+NtE(x;X=3INnS1Nd@g#$&mK^N`V z`G>^Uzr8*-E{(HIoUw=lRUWOK?lpE;XC7q2tBgg9hfc;qcu|BP#FM6*5!jM=XP0_h z+wpni*l+xUGmNY>~BUtpbi#7U44T1vlOp`<-Eb`$=8~2x4lts@N#Gis6?3v7En(yqAZ{_VnkU$ zQ78#oNqrlwC<`b$SF{BbQ{du^l?C*dsMO?&vVanbN=vRN3n-bW^yG@NfKrRfXs##= zD7~o6=8Cd_WXo&0qAZ{+BD0Sx$^w$}3ge2hfaJXHb46J|ImJ{TMLW_0l5_XIgN(9( zWemMOi?FM5QoSlm%2wRH|}CSwN*lr72gG1yn&)x^hKXKvhL$I9HSf zR7+H*b46J|^+aVQSCj?RNK|%lMOi@2MddVClm!$dDz~|!ETHzH@|G*g0_q|vUUyMZ z7En)7iN_UX0reA=^juLE&|pz1z!hZyjS!WJTu~O#SWyY&in4$viAqPVC<|z+s0`+c zvVdlZ%D-Gu7SMcAS&E9WfR>2Te_YZQ&`MDX<&w65)``+hE@=yBvnahmNn1eMMaAnL zD#`-dBP#K@qAZ|;qLQ8~$^tqjDh0TrETB`OQjsgl0+KBUaz$A{VItEJ6>R~Hzr2E~ zU{ADWp|}8@*Li*`(iYIM8g1x1zlrVu+Gk^B0i~Q=jH2<>;Xt=+tSq39F^^Jq#-D+H z+E`gY*xV!pK%)vV;llB!^X-2YPo0?O=G+f=sz1P3n)dN4YY#sIiSl1YYS-A z(k!%-@oS)u5wNs?`u+HaPBD)80M9=_r=sDh1^1@t`WDB8xjIZzvewFUGl)qQ%wcnHuagN+3g@VGu5XTAt*h0V1E)NpTF zy2kt<*m0X{3#hv@CH-Q45A2D}wFMOaRV*tuj(W@S2;ULV$#pjt(40O`DK+!dU>R(# zEueYhK2bVuzXVu0n`;Yb-c{*Z*b|#;3#dh(T{MBY<1yABomziw0d23ni54(V z4VJ;?+5(Dq*qb&nF9BB0=Gp=Z{``*e^Y&>57G!g60gc<%fR6C=L%>GaTw6ecN8F-t z=8M2q7;Y?}u9L3NbLI!ZjvH<)ApiQYtY6IUfju!?TR^448qjrq^R=E}*GDH--*I2O z-zf`d?vO_K8#HA6!E<=ozseqH&UxScrEvgwt$YG-7DwS9=w-lMp{7rHKNLS zO$MLip3xT2#tTkL&GXs{zTYFGETE{ZqgZ7)a~1r7M@CsdgWm>F9?tv(kM`7k-IWE@ z?NcnO%b8T*Sv)ez0$R5+1-0c&Y4B{P@mWK*{m2GBK~O;8E~hUCv9k zqb#7ZS<29BUY=y&X>`WiZEtG6o5agz1pt*`EI;Rz1ysMC%X-FpO#`5&_SDJ(dRBH4 zePG-NXpos&TR?Z(j=}Q}P@Zk3G#1dRE3;?=%DXg@r!d9>dYouEoddh$#$`yHr1Oai zIr(fZONvo>*#f$bvxq+}prRA+iVc|zl+Q!F#_>y`ETHd4#u1+#6$Idu6R#NpN(-oU z8*edX9e_X^N((6O(D7o*ZUB5bqo$M=(3$T^={pvDG60|BC@3wUDuLGoTnE4>J_4>0Ig#N# zEua+>@YK}9sE682TR>-Xe#4hP)F0VQTR_d*$0f%P)Ezh+)Vga6s8NwiUzX)gxXe5s*3uv4emKM-7F)S^h*iT!~x8>}s$hns7VRSe~djJE1e0b>E3NmBsNe*^2}#^vX+ zwt#l{<(J=CMk6%E1oz9ulorsAJ9p^{uhv@d?Iv@SGs*&*P`Cuu=g2wW%Q~Vhpq(KB zvXt#H^JCRHH=#nWdA#o{vqP}8VhK#UoFWCXl^W^;qevH_mVqV;Hb>D)miz< zYYXUU?HG~|*W6e@{Xh9wVzX-ts8Hw-{QVPh+tA5fO>9YR0d=0{q7m3^)>-gt9vNi; zMK2sCGw;EpebnuUAK2|Jr7fV=_czLPDkO87bcCR?fHt1!FM|~js-}a+0;+QJmc(s< zIvT7kpq%Odl6Vx*1RE<0=;!2-(wfClLiBG+bK;6yc+5$RNaf`$gfTkF1ETBXAZWDi8TI;~J7_Kd#4_EHW$xj1a zu(7g$_BY-o@e81LHdYqU^tp>A_W6Q4VW3m1t}UPkH|NnuUbW0%e{1ex0sUu{A@O5M zH3Vwwkg^!EkK>UHZ$te{QrZGa)p9oFV15_uv2Ms%K;QpbgTH@6+3`(Jsw^P?Pq}CwPnZ}a zkEZsD*+bd_I@Lcvt>P&vA>E3na9`$#Q%DQwTvDf;#{i@!{5cP80j2HwRJObfnQecz ztSz7?^WVz$&LDFuvi76}WZ4m0_)}pb1vhDRI(b#zK8E%ak3n!OW=3h+c6f< zxp7bN_dkF?bR)I})MVsSii3CGr0C?D7j(0LS~oaOIl+p%afb+*%K*6D8BTd!gD<`! zXEg*}HODT4gmMlyD$CwBgq$t7R(TgjZ`QzQR~~)-U@o~H2i7I$5FV`Bb3KnPJh&Y@`SSxM2q=|>i?%H@{4_vR#&NMcXbb1Uaz)uL2SsHxSCs7{Tb|7oWxE^`nYCO|wu_wCKCUR+Mb0aXE6R2` zC8oMB+L5-4ocl+vDBDHO-P;QlWxIrlsS4 z@=#Qoaz)uL&qSpwSCsAYT2zK}McFPNL}fZxl{*yrQ6@Y?lP05|1m&cIlUnTTagvWxEU(l>%H*w#x`n zsmK*&yNnf;K&~j;Ws<0L=kE6R3} zEm!1p5h3$mIJM|v9evN=j}kB z7#{^XWn*Q#JWJS(l5yh?fu7q~*)E$~Z6`0rQJi>JMCa98%v;$mNwa*S)Qr;rWwf!f zU3!h5M^zY?04m2=F1fN@QormyOhAArMoa51T@0N%69pZurm!~JRfMO zjg{?Ecv&D#W4ssWu)*4P8Js4JRxrK^bUy-?w#%X6-)Se~A3zRov*gNlDVHuMono8> zD3!t5b~*T8FUpUj#VQC?%*M)gIo&J{RbX5XsIkG?c3E~fh#E5P1vJ3M%65sHvb49fP&)QuT33y2iK@P!EHR z?NVb>G1|s_64*4GYulySnHhAP`3A6UHrKYxt07b91@m)Ymu;?Xmn*sP*n8%0z&_br zKU*?-vuIXqya!mZqbH&G=;X@#Y1?J>h3FKQr_TZQx6QTfGIKO+8J@lxSZ$kY+a-Fy zI?BVm6Ic(MYum;5*iQ&fO0UF zpL5D~nIC$e9`asO9;m84wX$8_cs-}rjDvtWn5nhx^1FU0IfkM<+DvI|m#|7JXdcQd zHIgUR#&)@q<}2+5JLAS>NSutG!8rpt`Lrg>`!}&I*e)kf`O|g@pHM+;Bp*;d5An*t zFNLyQPPQLS*)W~~fKN`m@(3txmjUf^iz!P3RJ5VAU8-!XDW+@&z^5~6N@=@n_}H7C zV!;Oj@Hvix(st>PZKr^90Qkg5L20{OD0Wi79RT|bjIhEt(QLicahtBiYy^Qz^Xpc|H^B7S~R#4u0;eB$(cq-|2kh_LXw%YNc4eL;-6>Ue{`UXVUK62v8 zRu{%2TgG2Vdl@GJN?~vczRPU*7_Wab5-*9B52Uc6op=QbTv|z1Rn+QpT`WHDIPzZl zeAXP3w-(=QIVNu;{xchL@;(}PWO@UkCcWg7XedbH*!$bw2u z3SUx#M6en{O(F{_HEC$Yi89z5q0x~Am726Rc~u!)gwR^Ipiz^`Hn}G=N5R89GD=Ny zbgnKl&%i&rXQY}`e1X4A_~N31A3Cu$l$ta*b0!Hh0%W(LP?PFy%qC$OfJ!zLYErrN zDJ5(Uz}G8ev)TB*>QNnWtPO-GY7RtwIJ45cs~9!uly_9iF&p)THq&a-_+k6V@gM4Y zY^K$u2XE7p;{xheZKl+eC7lMg5Xt=3UWKP3nt%IxyZ9d?>K7lO_p`wW3Dh%b4*T&8)g{ zacqz0+Y$Z$q$cs(FRMWO{>y!Fe4{UpZ}i3Sjs9*d6>~mxxzC3O_xZr%KJVe&=c9r9 zyf<^7_gU`q?#X@L6S>bX3itU1;686`?(>G_K5xVT-V}I0QEHOBX!aXhz+Fv>gG*;x zO%lhshnkcF+(S(&$tA5OE#UY0|3OXqhV5^wNm0`Bm{yabi!rSx{UyfS)udHC8?7cK z6alR!rRFiECZ!j{QccP!hNYVHw-}acQZX?s)uhs5SgJ`?#jsS9YKdW~CN&bnQcaR| zsV2#~RFj&Ej8v1_^RQNv(nYN%--Cz5PeP;6c~#`M0IepiNUPMOg+R+~tkk4|>6^=` z_X8a@SgT11S9Qhx4^V!@sJi|XFly4H6Yp^UOE8}V5xM%5;4h)LK~ajBTjZC=v}%rJB@lwJ&wy)hY*G(`1@)MyW}@KMK)Deu;yDJL`y6lb&ttM78k}TBAWGG8LOa zt4W2<;Ww5gD6cXTsv8sycvqi_@PubT?9Vudn6*-qJ~c`%GcWB7FPX#_Qxv@@v3Ejl zLJ+AY)h@S{s&nHxnAmC(XJk;TNk`fR$>cwxjT7-DkJ#FaniDI_OmDk2kA@Oj7eBR? zp_zJN)QpsxG^p7;xv)Fz8DVZlP1^7qXC=JI7d1C((i1DGL|RSy`?ilIvQZO7+;*hZ zq}JWf%L!6yZq%f%y)+uMM;3KAQjZ*UX3n96!e<7F@yp}r<4 zb|o29YSOOmQ)O@pLQ5hGDm7`)k9{(@2chF8C>zs{xh!2vX6}N&aL;Hp>EPQtG7}ZQ zp7@|sZ$aYb{3{dylO|m!Zi0#lZwu{ zOX8QW=Lo#jA)_YwxU$Jt*_90Ik4~q)8H?A(s7Xf(G@?1omxHafCs#Kps`z9zO<;T! z=#-gUt4WRhanjHD1(5v_Vbr8fO%sve-pLiW)udr96fL97H{m_NS8z>HdKUW z^$m(bI_9T6Jllo{HRGUMDXk`Lzu$pQGVcdAL^ovAq*OyX;`%qrbIqhmO`0(N7Zt#V zwzU=Htfux7*h5-P3jW=mO7j$tk+xF&vCI*tkZMxh)ve?_5+R+Dr!e0hL|CgyuZR9C zTP}`F^*>wIYSNq*XJvbBkm(&+ds0pE3fL*zn~coDNZQjkC>n6|rfhI0LZOi~sMVy7 zWAe%t?<4d+vKEz^RPDtW*`jaCB$O1L=PK*RTwWgDU$&SRq0$@_Z~3;I=B?DEtm{@# zD&Fjk5NhMrqEV9;)Ot)=IWq)&yjx>NP1?Hqfox|P_(qR*)MGAP1DD8lLcuS2w4)w# z`A>(tvYl7pzuel9FRHwgQ3gjbr&BhTAXO4dkM55(RBBS;cvUDmFMTnDDss^5CPq!l z*Oo@ak@j88xZM z`4{w-Gi|}Ud$gm}q#=$~^pi6az-PL*qt&E4*&9-I-kO`h54yFZ)=;TQ`A@8)Kn`9< z=($^CDyY% zlNy|yDHo~}cwhH+jGFZReNJ*r2Ar-NvDKssZ*$Tbl>gI6T1VyvMa$}TrBh%x+;{{v ziLbPglNAwHjGDN=&~pS`+2i9Ok+VAEhCQ90Um)jiuGQ<-kX*HHVl*b+?OkQZA0t=# z>bPG~G9Il~Y#^QhnQS9Dv+(GlVK8E5Z@)>-LOePr!4GoH%|879VeKpfqt>Fey)uQN z9o&n%yIXOWqQxl=#ogTx?rud7?guUI92|TV+vmw9S{0a|9d|xypIosi7$DoaGVFD#_SXkC76LX>q!;TW~9hrXDCYh#PzSHlyl3PDZ!Sj7v^ zxS9#&X#S5(KO-dzT4EX~OWD z{y=`Ot75*VR@lQWcvX7$y}o$<17=>2!7Cshep&O)RL6P#=@x_Uq5C+>@7Q!l{`feC z&}j}fLy%(dePAC)#k^(nO8gk;rH%Pku8*T?kDzkI%~@X9G#?CVZth^n$5FFHXK$+m znzPaZW%k5%hx~3w-58e!s>qmElDhHw7mgVffB#0UwXQqDc)h*D0WItT(XSBSn(lk?H9C~4w;1ozM6Vurz^L~`Xman-*;CPE=^(BR9fG$xMl5t5)iE`cxRZD= zXRgW5U~?6Z0`+TS0UW7sVXFO(@(KNE6|59Is z74}~~93<$os9oXz-8d5;Y-ooMHXaXA;{|HGOO5*$ko;0XIi68cj(1}0*BC3IZg9a0 zyMf(rIqze`v=uh72p@$Vho+|3j`+TO6zV6T`HL6I3L7C_C@XAJEzIN0m>I1oE9@Vx zXe(^Dz~vb$D{Q~0)aQz_!j6bad#)%e?4+m+Il>iXg~?@I;fk`tTpF_VQ)pH4Of&E_EA*&az$BT-$Z2`SCkd@TT~WsMOk4{@cCmo zH*iH+VLqaAfGf%hizO--xuUGF_@eTNE6NJ<6_t-%QC3(AQHhon6=j8`6_q4hQC3(c zQOU*?WrbxImEv4cR#+ZUslgRxg%uQ)7F6_pxXQC662xdm606*fp@dZMDOuz$WaquMwUt;Hy=z~Gff ze6UZu(+nqRm253j(Qll=);^#kHda>H@saZ>2G4yP=%J0371r!yAy|GY$p1X|T4!l8h=v`x(Cn z`WgXCD{Sh74s?NWyd25M7lT@JWrb}S(10E?&I44)U~Pr9c@R$3asF5}f$G^m4B{&;1H0+{VfZ8@i<~`7(Cp#QhHpa=Wz^wz=9Tn$0*1P%axQE3EN>x3rpZC7|jy zR#sSrLKA5Z;~=2U25T#9R*6LPmhl*%i3S@h>{!}kbcXrgVC!wJt+3HmJJ4O`$HC6n zTw7ry2ZxXYXSMYdEX?NG3VZ5Ph7vG$=EBK`L2kS01F6e|nv{`wMzHKQ*H&1edOImA zFTVm?6$!u)Tr^)}a5SjVC{ zs0;JsU}tQut*~!TVp_wPKLrc3xwgWJPESJ9nLBf1`!T5P*H+lkL2+mW^Ne8GZLY1b zjLy2WgLwt8YBtwa*o$#D$&dF>Td+JeOX$*h(M$LmmAA{I@M;Y;Xr>w9? zt}-;0Gg-j%dt{Uq_M%mHO2CWp2XEk>(N@@=^U3A1x`Pk$%t$LNjc;$ctXbeo+%wt= zyNCaDlaZIT8~mt8MpkKy!TWh+loj@}$rHNIS0mHF7jlNbb{v(& zd!ei_$0>)*YzIGRGV=XWR#-3BSDCp1{@5dQ%Vo)Slogh+%qpsm zg(~3SbonbE39*^ax|+pwzwHk8+&eLh2?ktO~H(Z0F5$p zYb)&jo;T!}hjOr)(^z4bw!fi&P(GlMyr*HTu)?u-QYhGCH!ed$2jB}Xa`GilcGvMY z+y~M8U-&2}t+2sCO9ea+ zaK*p~8~h&42ELs#RES3P___>2k+`11SX@tGEUu?8=I!<4IdDl6nP^l!u~R-Ly#y}2 zs$=l_iA@qaS?*~q8hx)8MP7mjA;ec{e*~3il<_Qnbbwn^@z0XTf=VXA{R(S}1;Wu^{z zQ}>J%jh=p9BNM$r2kL|pjeM3glW;n~TpJ3}sCL_J5^e(6ZbKm&HEOj|!ZQGT2`o0i z?gJ^{MOtz^NBuu$Ui^t-M5B6J?~)@*A>10kpqLhoI=-n-j?}1UwAtfPQy?!Tuu8^i zLJmLF%h*hdMju;1>TG~|Q=4hg=w&I39KBES=AJ zMWYLeVx#{j)JqsH|r9Ab5yI^T0hsqxD?UqS05rzwryl- zB&MZkRI?V>rD#-FOiR(InV6QMQEM?RMWZfaT8c)pE=40*m!eTmk&&X&V4l{Z(UP%= z1m0{71)_JMi}(uwHIleM>0OsQa@k^7qIjgyx!HD!H0cG`f>(F^%BO+5*1U zWHN9@iAEVi#!^#$i$j5L>WCJNTr)G%0URmTJCH9-#ct4|QNZW)WX1GLM)5I-4bgod z^q@zaW}@2NYUu_zQweM8=uF-7L7O~ zgIYA&e7uNE?sr>6#MZ)Q7fmEH4^3;H4f$HtGnAJhM{%_>YC%dg%5!IlT-mhD?LThn zC!x(4h(E{kDi_z>h(=ZM^Fkmk8kKGzOBTB5tbFISX!K#dzg*Th&5dXjbBjW{52VF+ zkKp;o$nC)(4>hqTwP@rQTtFU0m%;CPWRz$$$H&usT8kI%q_r^<$z*+!?5+!CEwWP|=cjBG7ajE77QR%*oQgSO*ls zm=9bj8fD|dU-yBOVUCXsh9dOX1jXvgpc0LiZBtIiPlRIP9=U8WLQsiD%}R`sEoMY0 zj|s}glxURd1p1tb6&ruo0I%zw(V|h#Snp(}3wSS`F?}G#&-7B_NkDw>UVQ{9(Wv&? z-E#k|2jW}$5#D?)8nrwSEHf9tZ@FiTXw<#ZKsw7u?neZ^b4Y#?D$%H49EUZLKVlM; z!hZt7Ah8jRa=wpa&1Rk-tf(j7YW>VeG>v%xSR>~Ad1yqVoL9S$_}1$Q)ZfgmMWd_T z@b_l^@|q4b*I*+WWw_Lc`0LWz3bxB|EgEgUqbQxdNc=G+0D(q2WJIH4#aGF9xhGKn z2v~|n&6A{)cskHrgSBY%uwF6wJ+uXAr@=-vdeGa4UhwX@2zJeIEgHq6hjfeaTcA&j z#d~8!qqTisQB-_4T5-zYA^?Nj0nwCbwD-g@`pmQE0xG~*%&tYFsvl=i8lJl@P=t?6 z#p|C){aNyEn%kmLsdS1N(dgynO0<@D_CloB^TNalZ+{YN(Wv~ayOfa^dkmq|9F!ZS zMWe7zQLOyTpMbs64H?m>a`(ezQCa-{#UN)@qEXvkb7&dQm=dJ0ruK%}Q(82-c|0F& z(!MegdIO95m}_M5FUt&(dtpyaNBk z8S~Z{(Wv#OjIy2B)u(io%-NGZtaL2XZk?; zwfMViY#2gQ-5OItB^o`8{+)X8+OI+AAGa2bX!NRXW*Wkov*6d=8Z)BNjnc(rJK^9z zJlavB(aAK`WjhHg;7>moB5t7)jmGRaBiktgUYRpykE<0|qS3>|g=Awb5$fUAm<(#s z==`I!REF1n0z$LhS~PtiotS)+s&i%&_#U^$jA+#HzmC+1Gnc{ddbFcNBPtn}+H&SI zxTB)`77Bl;pI7#LRcQ}rl7VOAjOP|A(P-+J?{u7lTL zxLgpMXNyKRYwo3lD5uuQLo|BxrUexMEAPf5h(_`TBU=Y9zqC+)0uXfVDqaH5CcE>F z8ur~B-6|Ebkgq<^TEk0MAS+~*wG^2gN0#NMko94>FM7=CJp4O-{1C(PJ{4c~y@T-f zArM0mK4*u+O}I&2@iSgDgJfUez5zbuMtj2c}j`GEF3(tO> zTZHS{VXC9oxmcP&xA5@t>qK~j9gb?k*=MeH3%B?_L4-HiVV4P4KiSDG9Q4m(5x#AQ zW1H~IOula6q_yIUuum1Ufqnsco&7?yxP`5hb49qI9WHIcH}hU`3zvH}UW8lO;R+@k z(8N7_zf)@wo@$4ynsC0L2N7CMkuoeTg)E=MHdV!pow88KYzNPV|C^i3b(lhy@y`J( zMZk;G6msw_QjTI>@l3Cfc-9EKBE&W4{;XY)*kkY zz_~dx zoPX7?w*0Lq6!N>niT!x~1gEdEH-Y76ES3@ zH9GJO6=PfmsFJ~@d-m>3A(O4QQC^Zi;}$?c28*kmkl9vQ$8T!Jco@(agG;yQgvNud zNoVd+cgDd$D?AH(SE%MqL4O@4f%bn_IxA`0w19>l-e&d&cu!m|0hB4|50AVNHkvK zeb%&;+;Qfw!a!S5-epjX9^;}~`5ZHQHV&d@+~`H1YmCKV8sjIHna^=_>XjYzlGp1k z&?kevE3|eHtDPB(|9(RJA7I4;4k4)G1H$Ef>>aGa@R*j<7vEN{brT+tt7Bhpa%SR} zd-pA(hFONMqvm^p_(o@;JwdIH=HStAIU4pOKKWI?nFDuyQ}La?Jzf9V(vnJ6Doj=% zG%y^4*DbtqRK-7(H@)|E+S6xM+!W{#9B8G%d_Kt^6f!d`B%43}{tJHY&rHPNgaHL! z;`u)aSy(^0EYp|>+W(OEuh=otN^x zYFMX3V%`gUTNj(3`MKB&<>hENp+~)uVKVd`I4a8I3Y6J(6^)HGSFnA?TR57A!%*Qpm z#*-!{jo6u&8g2?tLN!AQ7s5wMp^(D0 zT8PmEjQqNwq@{219N3VW{WF-pK|*Ss@Q+KC9O76HDG|3ie!r}?np7)7A*I_#agx;? zKhlO{@QNEBr?oiX=7kO}5oa^&PgVM8i*PL)&Aogn*c%FcF3 zmD>Xo5wD7M1>}}ZS@;g||FSkM@sh0fAYTpb#_Lu#$xpJPW5W_*kZZPvS4xQ5{Q2n3 zU0)`_mU(_q@^4O8>jVkOMQ8rQI~mrFTxB;p;A-DSmz)9UVcIqQC)EAwCvkk$NgB&? zExpx)0xQJ#5~g$k>`^wGH?{fSjk~CJ_#NW*j;ZlOHU6!}`&&w$q_rI1>?Fs(F!o!9 zl~8}7gDEZEI;X2HZU`zlx(2_QT899DD_ZLa`Xf-S0b)hQjV5O&&(AiN6V!b<%*J{r;53%aYf0|vqYsS zSCkw*UsSqrMaj{@qB4RjN{(J3Dl@sF60iAs8|C^>o!($bj&mN=@jE|pw9+tIXZN0J-Wp>P9uB? zV34a;qJ@;BdsdHWy=I&XsDQySlpK9#B=#la>OcVoYdJd8mbg~Odcd85dfHgY(G~Aj zqrr?P0!=qq%h9)cpP?y?*8y#@v67=J|J*`L8UG7(!Ny9Ce%qF|Ghq&BnUR%<(?fF~)6xI@(yt z(Zv#OrE82w0gX3U%h89c=A@YQftLfVG1$n_X`N%~1Q^51IuD_-DT$Hf5WLP^Ri%-ZLa0$X=xf! zMP7a@u=Y0Ba&(+N1F0_0KN4)5&9xled&pc0V!j+~jm@(937)YHfqTGXC&A-n`=2bPpo0|l;>X#w#MdKj-E7sE`4Qw1niXI zMve|{|C3_i1I~H`_QG%@N7vdIg;Fv1YKra0pbq^h-ih%c-|%sb1XQ3ea9W@o8asZA z&pRbY$I6zNN^+(GcrA~NlB2h0O-FfnF&)5ryJxfKexva_H^E@+Bj!u>^x?I*) z@O|zXEl20to14n=vaW(Z@W?1RI%naM6vUZt;8B~Y%~so` z&hXccBPw4RhzF^~a`Y-0HL1*80>5K2^8HeB^y3x2GV=-CYOdRn86`*0uQWqul7eUO z$S65FU!zJC9SgTgfS1!5BS)tg{fKzotU#bvjOF*7lB3^ribCc1s2Kz_!k$~n(Y3En zrRt0q04+6hYdO0AzcNNLnz_yaUwXN?BnD;KX#0!oegZMEZK&Se0rZ74PB z0Y_sK&v^iVuXWU%QloZki)U3p@iqp&08&tD)IX|kBZglw@Kuq5Qlk#&*<8Rx*p}oN zB#f}ZMKMRl zQLj6J-U)J{UVzy_K2nWF?bm%FZeyZe%Vt`m9#ttFIf78{Y_rEoqwZ7RpBy7mA7?YI zQSbeGIyr(-UuiR~QNP$Uj~pSWAF`R&sN*fqM~-W#-?5q2sLMOwk>fq;Uu~u}>cf4~ zkRvt@>4X^6_GyiJUV0b)BN6I(Y^F8pQdMxwRz%(3W?G|eyw^dFR;ahPnbxRhB?}hhRR4<7T0$74Ri zdCX@6kNIfkF(0!$=EIZ6d?fOi-xMD68^B}U**xYQ%VXY&e!MHN8un&n2x<=jIzaMx#zzj$i3V$*#rzw>9d2#4D{) z?-sALMtwxQ(i-*kg}j(XL0F8|s85Q3)~GM>E2U9i6Vpom>fd5oYSdBsaGO%2jwPn0Mjc;FON}~(n3fuKS}`p(>g+tNHR^=bedPan$=eQ2 z6b7&3{1Kr0YxHW{Mt(%s0;+FgrBVB@EG2O_pgsm`jk@RL6YxJ!p3Uft{uVI(HJ00Q z0oQ+EA#PlLz3WHG9#0%!{&ERL=$;8)ldCB;>TGEnP#)f_FU;HPh27zd(x}fzy+$i} z4<-Xnqa#|Qp4kb1`M_If6#*&9RO|+=QTvsTXITL#H!?G-{u<})pG5!R5VMAW*xzvu zv1p}Hk2_XYW)_)D1RUCJufN1Q8A~EHYVU$y@PBO4_C5mT!+lTBGil6uasZa#lyTcVBDN zUJI7eBJ4IRDR>5tjMAu|-6}6LCBW;LjQBBW?+L9@w<>*GraK`y$fP3#l|~(Qz)tdRIJ&qBf?{=LP-)cj7Iu`uatH-P7E~Jb(~?0l*cqXICMX+I8uj=R>JgyRz!$n_ zv_?IDc5&IxcJL6LF&g!$=jw^Ip+J0NUwuL;jXLx5Fu8x;1M&TS`8mVeMOvc{-PurP z5_iUbeZmkSV>If$=XX;AKH2;bD8nK7NvJgH8PS_iG5&~Y4AjD4qfxi4*pbRJ9|$(w zlW(+JzLXlBlI#cixK>iGHUOI#1AiNU77#(J}U zQ4QX-K48N&_t2>K_D)Zic?}mJuvCYPMxA?zmwZ<29-xB}u+*rBo~SL4ksCnw4AvTT z!G%hr{sQ#NV53pzx-f%s^Ly*t72A(NZGZOIP$xD!8V*L6sf-H&6=y8o8>3Oj+uV|> zF|Q96XwR-R>L+E&QVGU=fCib_wMHG5AwRWayb#F#iZJ~(e$UWZ@|~L78nsUr#f(Os z?#=^h$UFNH((id;e3(XPR%_HBPd28`yx17sAOT@e8>Kbs`2_~jK<3%O@-i34yOJ^{ z%w0POiWbWLW>%$9r#e`PUhs@KMc(bPdf?IzgT2v4qpo)KG~MA$Uhv|aF>eh;6N>b6^vhz&cItt* z@MuSA)cbd=mhB7xAMMeO(x?vws&*EGZ**%%z6rX&#*N47%EnG0bj__X6;vAa(c*pEfk9MbVs&ciDf&5!OL>S93B)+Y1C;N9+&Mj z0T1$MM`_e0y3~;E3?jRbQ8!|1 z)HUm$pe85>Y2=|%|1+`+4Fa3!#v^Fd@&+R-39ddDgW>-m=<3jD93-2q{^TlEX&s*b z%C$b9op>H<0leJLFHcu(4)5X%9_f0PUp5?vhtD=^HW|-<<(Iu?eMFCp$Dg48M}GOy z1@$Lu#?N^EE5A&VASJnqU54=HgD(!({p(4{^>1)7a{BViq|S2ij`q}s|Av(`W`7~q)u#}HPK7`v>bw%((Zckz@PON*Rq-I#^oJlg9Yeoq6!{x{~)USCz z$U~ui*T;xayuWZ0Bi;bMi6J|V?E0vtT;&0Q;^@5ayutG~z54;un2#3~mwP_-046JB842rTg6dI88)>7iOtgIlp4eiFO;5Y{dy9{dnTo)^l zj~n*h3plN&>gdsLq%Urj*TG^NF4?@6`d#;riH*SXn69i5qu6V)N6H+s_lSBd)3Q3a z>!KdZG!YB%){kX6B7l4>(@KB_`msz@J1%uIk7eq_xAC2)5zvoi^5+?ycTiD}W!kq0 zds97@DKBQ$k7cUG)9SHI7n2Ua-+%jK9Wi*-Nr1iFl>ceX|C}>>`Ff9msmIIx7=U0S z4tGFAs$16w9DJc@50HL_>c=wqWNJsf5x1rR&53~JW0{K2T15jHZwA_7uzD<0&o*U= z*Tgyp5^AV;EYq;CjOhOewQ#PB)qf@4BR0AU;m{I~Wn#}wJeG+MR&ut%zkx~fFB6W| zUL3gWR27`?zZ-v4?eH1E?Nw9b_G&yvjmwXfe91UDZZTbsM`P@l1uLO$|H083m6G4k zjX0dd&AwQU>WwDi9o53tDLw+Uu=Pv4P{LL|9GvDE$4?eu9_I&cMG0FkxuS)wHv-2W z2&{yy52BKRD@xeDDoWT25|tEOQNmUyQOU&>C2VyUmC{^M!d4$qslyc|Yz-8ZHe6A{)-X}&i;5Ap zMvKxoE@@$FyeKW?k`}h6h|(r5X<=)oC>=&g3tRI<#$CT9x#U2>Ey6^{(7Pcz8 zzR+3zR+|7c&BjXD+T|)lHyN)5+H7MbYz-S+6?amAPXV2`u@bh9CtgO+c<$#w|1s_* zmaT-X&^0^A$#X{=ik<*4D6E97DD#g~Ud9=LvNM)zu7s_a{Tov`#^r&k+E@u&x%cj% zdW>5Gb+EA#w$lCWvf42o2{g{eO4wQzCy)j(UIw(Re*;AwrZ-FrTaUUdrsRWwQv#*8u@bg6l|4^685ajCYp@o! zNYH4F7Y|VX^hH5h&2sGTrO4!Of_%R*kRhtjA#Kub4>bvO{g)-g^bil?+ z*qUzD{Eq z7XT_|uokv@9Nb9z83zD0GS~=PSC`-c8q9lv4Y0Wuwi>-nO6!@=1ejmb-Z(C>cRX2*f*PNVQb}(r!fekR+2wRDZC8T}K zXM)W)+z4Cyrbe|cF#iW^kKwvE%T{k{(B6f>mx1nT>=-IO@075$@m&BN=gent$0)Ul zDx-w0`Y$TeLtacW@Qm&mEo{YVnO`oeBzP6ij1;zpe#$JD)e5|edqxXelLywL54^0u zz^8j;l(2Q~_ek=^C%3f@e1}Iy30ozny&@-P&V%3d$S7g!=#?v!l{4?be|cn-u+?qY zG4kU~;?cPOk3k#)YX2x<>+Or;RGl-$z$ey3Vf?aMhRQPD=v_k)8JPkd2VG#@oNfbubxU!qFbdb4LfU13}esJ59~3tR1P zzl8sRa%VHA5w_CbdPyTto}`hy<70%acrORgGO(>~T!w@!!B>^!AhRbSpk4AXVjch!|I*3C!NKzS^@Aij)GFd`YZN30fzzbg^z+#!`g9Tv4D#JmKzvh zgAbwEz{@FcWe3eFJztk$EUu?87S~f4i|Z+jd3*hM4qVbireV374N%wrxbRAj!K);; z-@cV#G^`?gQ4t}^ZIpcqQST3u|j%%lO&?w*kv zRs-KrGEo+^vQ8)s>+FlM5;g~DYeS)7eV;Q)!odI|Z74LXGbM*gI3Iv7fyK(%8rHaf zFTsCAeJ``}e54u;>*;^csV<>@-DX}L zMtz~pw1)LL&I@vEMSYjew1#!@H59aSsE682YgiM<+$P6M)Zf}nYglUs)FOuyr%((G za@);`=BZ(A#W5XN??Na}BuADM3*0rVDVSgOX8C`lVet(^)}F-u5{$+9%^DQeg6rb^ z#`wK@&8IHc`Sjp1pLjgxBb>*4Ht?8_W*+k~%VRz~dCW&5kNHjEF~0#k=AF%B-myI9 zo#@BA0=q$JSn@thLEL+B*RU#aMQK>#tn|>Zg1|jAtN~oo8rE9AXY)U3Sb4DjZ4IlK zc%?P0QsR}?u&Rhx?i$tuUX0eTYKVZ=up06!rC~J{(^A7~C#I!_)mcnS4Xdx1mKxR| zF)cN$F=AS3SQEsw)UalWX{lk&7t>P1S|O&ThP6gaOATuqPiqaUQlSL$GkEtTT>oJ3 zs>&Y$TEp5Ouu9_VKzD7dG_1r)MoRn{=%>M2!+Pt)Bi!Rn#_drIUbXbMfYGpue2R(N zqF`m*xcolW8rH}y!{qOg#t5}F!6tGwrH1u!M_Jm%n>7@CyvelWjMA`*o?1@XIkF6R zwT@^FYj>xGGzo8^br9q@Q?VPghSh5eHslt{56p~8!%BJSFY3)RMx7GzZ|n}SXr*Bl zTfa+Y(%TtcGl@g9b{!^h34sNX8rJK=D`+e?9>m1fu()x#1g&Ak*k4yBC%P>{t%lUF zZnk|UGn?(!JR0(~vQN(=Ll^YQs0AqvD|OTsa%JDz3yP>=t*kmw^5|35{xBNWEq{fy zhIO&-S()|IS^3Uu4QtugJ*WiUBHX?4(O zSSjcGOI!@7w82`#$}>E<#EpQO+gNE>XM%4_Kczp=IL3V7s>kMv9iSeY+i+|(8C-_Y zRudG5Qace;8dk%qH)ZfNLboCdDh+FPhEX#30ioX}C>v86R{gEMGUJPz?ddSc)e{-5 zVRe`}R%ZOb%jk^Ju>5*WmAEkw-@8|zP)ft9S8co8KLddHmVSgcUu#(T?oXAO#o%k) zGe*ODapfOcz$e=g1Ws{CeiAATt3$yWbeKOs9s)f#*l1Xbyc^RQ=8hTo5r{#~uJ~3f zc*2RdqFrD07;+e_j*K#vSI8rI468R;r-+D|a=nQGHL zG^|$z*OK^SN?HUm>yXi~p4_W0-{sOk6(eA&VXba=N8;u{Z4K5M*5}8E3;>2#QCSncoF_Y|pMVtdgsvTgMpx zWHd|9t~IRJacj~W#_50}Tn6dhEL#qWVF_MBb6dmucZgy}!Ia@VsZc@Fn=jyQ+Zurjp$AeT`S>E?efLu**` zx3`ro_d{mvpDk+*D-G^`i*;Ut%;w12lf7AXuiaF(cM_TFk+i2ZtgwMIWP{-dS#$o_ z398%6Sk|u*?PZHe5z5Lz_iZQnG~6au`#CRVi)9h26IqK&!wlL5Q{XUtDRaRjJfW=E{93uI%}5o+qzm*HG-0J zW-$0zx5i9wmZd+%rOcdJ3clW>9o3s zl!le5$5)!k!FcoWs|SPU7RpEB&hc7ZBv7_k4511fG)INeuo5{p$;O(2cW`UWXjlPx zf68`7f=~8nM`>6+uTGQgtODQa-j30*x;*=c=U)Jx(~Z~~R{i@Q=@H8RY2=|{4ez;* zyzuE9AA{Tu?gT7?h9z$>vUT7pap)vD(<11)Sob-eG+Sdj9H!Qr;XiS0UID!9Uk@+K z^UGh?(dAN~Skd4=@ymWIT$ZcMJcs3M#VM*(?TZ3+*g8Ai0^q%D!upx|`8}YJZpXkuPl8yDYocowwcp5}b z{@vm#_5;t(y~tC~&V0i2PkAcpe`TOt?R*V=X}mYN4jt-+PMS7CzN#3ynOtcyL6#a_ z6#e#0Tnt&NbAew7_kz;Y^vrK^ed{&>o&3ayG3EDlAh|9lI7+TL8xN8z<1a{BJ>rIu zEB$ipm+5KH)zkVid(fTK?gQx1YCs7*koVGfcw7yLy98Z=1=anE<{!hcx{!M}I-oj+ zrW*Rd@}hUo&|b6Hu&DlP4)3Z?IdawQ8j6?K(~+yzh79C-(-m6RqVGrWbm0ovr>UCf zBj--seRlm0jcYj%@zml2O|gD~_sMwyFUuwCg-*l#oL;dPC8L73R-rpGZ?CL)m%Zyn zO-EuPSxni5~%UAJ2^;Yz7 zKjv|Ub1O=IdBznjzk~@KXECsnU&2KtEmxHM@<~+kb4AH7-$kVYSCstH@gOgz0auj# z(oIx4a7D>4vgJWsQSwV~k(taDCBMjJE#ZoiU*xj3az)861H@cMMLSY{kxReI6(zsO zr9bD2l3#|3xxR5l$uFZsB}OnRN`4t9Dk-_5QS!@rQCY|pCBJMDm5p3c^2-iUImi_yzl4a&C9Wv> z<)ElM=8BSEj)}@AF_-ME=wDIsUV@C0U(Sn4Qm!cZB~(G8sRC=Leja_oy`EGC-AVtmKzMv&T^##w~z?Y^>xL|Jt{y4dY=zV{EMCmj*|^QD4TvKr0Q_ z@=N!j)o2{!{Xj<}U@5y$<;fq=MaDaT_S#s<>WSY^>y$hxva} zPsZ_A;6H(2kngvaUoxa$O`{p-1uAT?mS6G?+lh{AfolQPH`vH8rQ^l3<}mLL*4O4* zei`y5hP8(IG_W}~*YZoBcHY)m=3Bsa+FZ*ozgJAAd(1C_U9-8CUkZJ=LgCEA!9Lqu z%P$>|1=2^}cX3zZN&ti0dLzHI>Ai)#@cCfn0V`y4Ex!~UADa>~uLV}$=30Ka+29Lh zV%{CBug$gmGH!ciD#Cmk*c_W{`NjWZd8*2M3)oJZYx%_|b3Y1Xei7`N&9(f}G;bT~ z$~+wGv(2^qaw|r88qPfK-`IW(YWubP@~z@5ipKjd4_G0aYx(73@*Omj=dT4;-{x9= zsUB}3tzzCCtgqolep%M{3+-V(4Q!6#Mt;e3=MkM{z6ETj;aYxqT(&8tKLmUM=$6Kg z(&F<@$uCnY52Bo$`2hagBctS(;=88PJzk9OD%}6XAa;XnN6Rn0f{Vyy`GHsT%t-m= zLWN{EbIS)f|AYaTJvD%h`61 z1RM;&7d{F~`K4ZksRGUiSYlv=4c?Dt1KSmo;IRJbKELP5zUtTqyOO9=*?`G!UPZT4+boLJ+$9dGR*i6eW&#R-q zpjW7e+f2(ZSE~OcN3;#_zcHvbwfqt_%PexFLp_VlwEWV3@*r}QM7_MtwEW^dq7FG4 zqu#=1T7JoJbu>BpqCVJWT7H>=#~wIlpgzxLT7EgZC=)q0p}yT_T7H@5AJ1}}M*X7A zwEVKk=K(pMq5j%tT7HRMCN(*{a0>ZgklSufG*9_u6OQS?3gPE)A~~`o-R~~HOvL>E zr}7K`-!PU<#QhSC#rch~IKMF#=QqZ0u~wYpQhUWj zzcd!pQhsS8rltJSK}<{erI(nN@=Jd)E#;SyVp_^CW5u+TU#5#`DZk7S(^7s}DyF6U z^0%0l^2=tP*78f!-D~7$@Q%&6{=wkoEq+v}N4a+JjV|#Opj$Rp@=Lp^4QpnhZUiiL*d7l7hFR)nI%n_OTe-MIRe;NLZg9JyBC8Y_Q~G(f182_})N zDdm^%<=WGB-mF33f0;}w&M5h1&(*1vg(JbhD|JN6FQ;fXjmKMP?E^W&RO|*Vzxnb`6RXJk;zFI$hElF4yyi-_1-*pC)(WoCnE&9fn2>*~y@GIUn2j9QSAUpB>f zFIV=pS&&;FL$p;S6(cc@@E zLO)DUHm2m4x9jT3#uDOYduj}F^+ZO?FW#9m$xIROk~(ALm*`DWNZbI3@7=3UC?&rn zyLwaZpT0nROFzP!ujQ8|_d3YT0`R}xGe&+XmhB47<&*6o0>?QdKM9rmGV@$aI>4VF z_kf-lY~+`*8Mo3Y=D)$B?$EOv`Q>ojv~-ktDzFU9`SZ}oFSY77B=N0R0;rssUCS?B zdL58B5U7>GMt;dZ_AK$&r8O9Aq~ThAIkG2A&b|<6nT?hFvf^YRi9>)6*;vUhzB{T( zd=u!t!A5>5J{QmHsMSjsPJ zEBqsIAW$oVwfvI4OEvjDGze&f!A5?mKeagh!@Fl8*fPVl{POVYLHe6<2+$$M;=M8Q z%e$~DbbDjgXQsF=#g)vSIBtGHf$DEd5@?W_nc`?mx z`K8h=#f<#&eBXDv!#g_&>At)$al-#8ztotrn!W@=J$BC#XNqkqqeqJcs)_N1Q{- zFQbQ}10|lrAL+n9m!ajC^XpxfXt_5sqyKDK%P-si{UO_1gv^G>+LQ9jki9G9njS;u zN+j)R`K5OIYqG)r5c(BKgSro*za4dDi;4Fnqf8h)w%y1tZKGb5EtW#4CI`(ACV9L_ zOQx08{h5#4=Jp8nkE}%{zpP7@mFn_NoQ}{Uw-$~3LXT%r3(o8SKjhY!kzXb~87$km z3I4>R9VNfG=(KF-7r0MI#LYDF%i4agWIJiW^K!;>3q@x|nH>SQo5;qhBGlNeF|{j{ z{4z8wl#27(_d;l>TZ=}1sWrrxDsyHo_;R<#jQle5TN&BTUhoqh?I`&rQM^vFo%`Ug zJlaw6%Y~VlWIIvz;(vW%_+tx|{1RosI@wqbgo<;}{ftmzO9ijmugHqYYhMqc7H%yX z`Q>!X zCHb=6MEG=$gF$YGhx{UMFtT;vDp@5vIa49%x?BvM>-_%iMXs-F_K-6l*RH?9%TzP* zvJAfrAM_JX&)fK$oVEC6qVLDZb!AsCayI9e8Dw94jhc78A^rm= zzf9M25V_j?Do)Nx{PM-rzT~==?kqVM^2@KU&cZrb0_S5LUUsbXw~yuOGwx zd(ghA;p6bLiXU*lsUf>gR^2N{=u(+tW9Bq7Qi^e7jQ!HBNr@W-vVWh1H7bOVkE3|b z8MvH3Z*?181Fsr1LfhVs^VU*yvg6}um}q)j8s-pp3$SFLzf$6uwZa~50V|y`Z*=H};$`8aBxZqu6@qd6-lP<~HbcU@R|YQfkas19RZ zN%9WI`Y)fRdI91-f5^$QhU?aL93IJc42SuV7&UHaQ9Kc zhw%ruP`|_%#i$lWezlHr>u%jgagR}^`zY>9%3F4dj^P< zz2Yk|^TW&$vHPe}H7m=5CkKN0IQ)sP22#oHqh1ueCTUfWS~iv4M;&Zkkwo`V?LoR4 zD!PxV5mbS!;iygIx>$ip+^~E1Q8%6^#(~3owPDATbRTu^y%;6=fIX5v zdUCTzRQFL~^>Dta?xRj)0i?T+idmn5>^|x-Kw;f|)a8nCsix^Zs%ijYPS+8;`=~kG zqBA)vs{5!D&#*UD_fdoD0;U*$Y!+Q_vw){n_fcDZYWgKc^LmQhX09+ zM|;Xnx~})Q`)HKhk24UQ$Ki>H=h7b$vi?PL5VtM>U5$Wc_fc1t z_oqdS-vE6ySal!Ovicd~HL+r1$HvDXmn^!Ea%Br9D+6k|xh_^eCa;z_gk9KSqWh>z z4}4|!QGBqHa|QklOm-!zFzCKtz@1YVZ@sVl@5cFY|iaU7Y0nhQ7v@X@hRwRlK9xpj*vHfHvsvh!@JBi^p$pLS@jU ze~NjW`HrC#Wzc2eiZi^?9ZD1&Z@sGQ-7GU!H%%3ZD~gKn&-yyc2A=q8DZ;{+yy5v zW;iyjbtrDZ;B}I}B(y=7vTl5e!T4XG3pQ2;UDYxlDGB2jKyPfU47z&bTvjQ@-lxz3 z9tPF8GUzJZu0|OdX9CK>_?%d_GU%)%EvY=?3P9CttPHxb^%qfh#%+K)GL~zu47w>J zo6$(dqkzWSSQ&IPR@SFkjF$tgv9U7f0_v}&Rg4b@mfBbubc06Tq-l)z03EckGU&qbDQ_{p0d&vC z%Akuo>Keso`~~Qjjg>*Sq-ht*z&P<~e92=_yQNjvo_K`kzcX6YpyiAU0{Pik8Fan6 ztfuXZ>jE{lvFbi*;{qS+1mj*n0}R#%-TJDd=qKYDK=TYX23>ORyL5y3Hn80`*9Kj- z8Q19*^UGj2Y_1KugdZ+bY@F!Ud$6xI*9P6-NsTBC^Y~|ALST^F9#0!|!`A1ge9ZHK z6|uQC=*}I;Mum9!b-)_hTz4OJbZZYP&-3>L>u+;y&`lfoAJu0*18knnwLy0zZ60dR zd>hzqn`?t^`GQh3koje>8#dPlUG1;&XcF`HU|(&n4Z5w#UQ#gg_-C>G7}WM_gRXm; z2egHGKCmJ-*9P62wR`CZ^EzM+ZLSTvRg05SW!^tM!TQ@=8+7Bk_NA*l{|vBsHrEE- zug&f01@moSyA3x6UEzNh(hugB!EP9C47!FrlT&Pb09x7jG--Gh_;am-fgggU;{d8A`*8X$0QJJ);e}I6<%FvW9?<^UO$t zF3*j;B$l-de1m&N8*~jT{6+bAS;xUIdSsMA7i(R2s?V91;2%9Q%Ah;&GY^&LOsw;G z>oG*!c4g3oymwmdIg=N>xJO1AbdR1DqJf;L2j0RXqYS#--7ISoX9j?e_Q)uM?&Z=G zG#oqLS`5C1GyJvVxF_BVWzbc8)=6d#gP%1S`F<&bE_u2nGV>HX+#{n5x{DQ;$&3rX z(-UHl%aZLVgYI=RUwXpplM_6@&KQI4W3m_)ubbr$REM$ro>SdNwF<_6E8?T36HpI( zZe`F7i#?VSFrEN3&CIP0I@i!>t+Y0%yLx=_Fa z0DR%2pfu-UzyUI_73+8;q>&=ttslQMu?i}25e$b!nC zYge;`3?4`5YGgrW&?OJeFN1Fo`W;zN8Fc9nt(HMwTs@}4V6USw=;nRHj|8+~`GHsT z$f)k44yCClGtI#}x@V+8m$Oh-nHT{&RwtA}cPb>OguwtSZ72-7{pIpWxEJ8C4TV8B zb4>;bZvgNmu-E|GptE|zg!_p4cV@wSq#A>6!`yPXB@qh$8-rrnpu5s&0y%P^p3i35 zpzHqztTO5~Y^DvmbTKS)v_ZY2&9p&xXKPz>3`hMhn`wjYNZ~8wScLj=n`wjY{ZDMe zZqyIhOdE8Qk6b3l71VFpOdE8`*E=jnIO?BmrVYCFF)EWICQgO;7}U0FgU;`HRdQrO zJ(tb2K{vJGVsey6y{cj6MDsN0!uhnz+a)_rBuADePwbn`2^}r1bC^Hfq}nskt13Um zZ>YS@oNm0R@KgMT{_zw)OFYHTDqbsZbUfYfd)I&QT)$7Jd@K^C8s9KvV@=#I!C0K% z7>n~8V{v|CoEL{O=lIm+F`phh<`a*{e1!9u&judz(ad8$W_iqqCy)6^5Y3Y?grgoTu}y{IOB{#_pv!YOYd)RW6-5+$)(*~ z(gxi)zGq_$y5A-Em41p}H|&4gpc^1wX@hR4c%==xapILW=+?C2#iYK5#b|?WvIuB{ zZZ5x42HhetEe*O=Vp>&3J*=yr%{Y0!m;X=%_M6VuY5`&Ud$gDzA|OM~u)n3e|J zBQY%vy60kA8g%b?S{rnqNIgmQ3pU^v2CtR;5um$|nz5^*{D@9`9X|pwD69;+Lut}W zToB05U~SMX-ZvZn{{!VFjMnLI0n>d{zWew~O?R;2Zd`sJ>+YkDZ=523kIYACr3vnk zt0@h-fY6lmnKx@c_$iaw%Nb?RjV@P?I&$Oz@G~9J23=dP&vXVyiuD^L>J7b}+MsJ% z9sOJ-ML9Ji-VoLI)5d2v{OKQ_u^fo~9p?~>Rt8-=iXtd^E%sP^0eC`BDNM5*ve^%*4~)bJR9=0N^MFY8;X5Xt&Ccb zGU$RQ$CfLbi@EvpfO(4FsKps2ucEmz=$bE6NE>u}HuaR*fjTSSd2P^bEqX`t*_s=J zF7(_fiL^nNtjuw;_9AxzgFMv4p40~2<_babD7p{+$|Iu;y61}u$xM`6_|=cWK4isC zkb6QKbhVnjm+8DnmN992muiD9@zoVF*chP}I%o{KHKQs?JOF5z!P=lpp0v5d^MHbF ztPHxc^Os7sXcy2)#(e%tgYGaNr`n)PJ@SbRK0qkk1jXvgpfc!Qe(NBEF5Eduib1v* zA*c+x?#-jhU_OLOn4oM-8FZ`Xt&^Gh;4R%V+MwIMptsBn1Rt(5#-LlUtBb_*f%x9N zSRaa^47!qir^@}a8;Eb|M|ktKLAP@7Z<)CR{@gud47$r%PS8z0*&KK9mskvHIm)0* znzk|i1Ph!7D3ig)pi8jp14UkR`MV`kR|-LnK$Bn}2zX|OTqzE^oc{B>y^06S*5Ht3r9I4#loU7*J{Rt8;)Dg|Wg zKN;QCn;uOWbeXfNg(n9}Yp^lshNV0}33=1}z$$9)VbIMi@i&P-rnEpHNQaC;S77c? z`7RFw8WRCagYNl+Sn?r%!9Xhw)&|{|T7~8J(0-t!1{;HJS>R9l#JlG%*ki-BL07F& zMtaWpC!>4%y)g#e-EXHU9=;o`6kzF?i!aG&%Am_oI|D^w><3iF%&rZ(BK@yWPR1>P zB79_OgKqQNVv-Nm+&1XKKPqMnx<``+P%7TpYmnZ}3lk^2{Yk95kFx3&q-X@f3c|6?l6{2kaA-H`SzyICG?_UgZR%OtYjbd4wc*blX5;Xlx{sQ@C7En-9YP_IwWtib;~xjp9Nz7r2;FmQ(HL~a zPM4ZvD;4rwmv&i7??hNkk?(S}jyA1BKu(&%ri@UonZvXe(du}q_%(v=a_4#d8 zHpzM3+(@S-nTMO_KJAD>_v+bl>c*LH4{&9MA@m+9F|N1Y*M3{+7-!Of=jDujF328= zL6?73cCr}%B$SXH;!7oibeE!qZMie&XjHMRhJwO3=dL3en;O5M&u z@H0N`h(Xut?-{zCN8oS0+p!J0r=6ygD*`SRqGHgWd;_+Yo=zsI~vr3JSFo^CwC97O|OXAN$D^< zoM)4bK$l35%Ag0QX*`?eWk&LpUEhb?OL+F|i22Z=`lclJCZ7FL85UKaVR^{CpJyYU zZ-58sg?mfxb3D5zIl}L%-68iao}K$-F?v#R#U%Gj%(hFguoE7nXEh@CccyNCJjIWH zw|E*Zt3mD$%!ZAS`zP>N+A39P8@ASXEKR=Pt!O-!tIAf% zbNv!Ucg2s!5>p)USc;hv%*9!pDAiOUu7SlX#dIgXrm4zK zu87AnTUAbSMLd@Is&a!X;;}4Il~-I5k7cE*&@*02dn{{J#h)wUv20S6R9q2{WxJ~6 z;fi=Hf2m3tu87C7UsdXHMLd=xs?we-;<21mm4T?(9?LmZn#?8Rv4p77QZ5;f<*F)e z=aTVQZmH4^}E!iZK{oMl!w6#HQCtH>gq@mQ_}ETs^<_pGTvvmGoROZ7%EthZ3S!(2sEdQeV>#U@9d%+n7HG1A z#bbH@{x%I^yc%eOjg7}LxJ+%D#`rkU*-%*b1Qn&>5L(XoG0;mJ8;_+!lzX&;vHK-n zCk%SWjK^}OiNBQ+?+q(8P(}xf$MWRKYRb*H1W-8}8;`~P7V{9* zWjqvUw1dTC3D2~+$Fin&9@@fuF4$s+8;@nsh3s^h`CniM9Bw?8$AwSPQ|8yf?mFCf zED7I!p>NE;fmyH3&ifmWC2x^<^ox&OBCzBRHy%sQpfeN|pBPpFu%Zq(9?OusIC&+{te7}WADH5SjNTgOyig*0!!|2na6a)i9?R}Z+36dvYa;lcJ{j>?CgcsEr1<2vHiPf=$%w}? zBjgB0<;*4UyFMB5SU$DeNZC2_6+HYq?|m1KC0+V*RGc$Oz|;F=#AES0985JiQw+SK zPeweJ^p`T@_anrRmf&4D!(ThDHtMwykLBqE$&3Y`VQ2K~B_7L{&uMf!>%n*VWW;0n zl6kStTm--AlM#<)`lU(KiMQt?_;-`BJ(efO|0CWuD-M35C&D1#bKTX;unEm3h`KSB^yWV z_Q%4ad~xCzOF`|iY^!)gEtw4nwPZyAzMPRIwZ~HIdp-)my4nKpHI6{- zv6OpzSiw;MeBmQddo1B{bX9N}K(Gx%?eK9l8zUU*eNGI1!-*VFkrwiTdh_4(>qcSXe>vSPGmCZ>d$^LFluYPf%scJ=ZHt2cFYAqdk_p^ZwR}a-daALOhl`wI*oT3ZR1nmB;cr z_Hhk|1B`W`@>twAc4@d6fG>g7#yK8K%zp4g_M(1>St>qLZI9(v<}Bp8iu!Gb8IL9A zf>iKdQ2*wz2g4^(cvozzLjEf7Uq0bZFa~MUcr3~Ce1-pldQOKKk0sT45BwL@D?7}1 zEV)M}{t!ef2`c+3Zz$9!OU%m*=$4+Rc`cr5xpOhMdx z@%C6Mb45HB^{({sSUQ6Hcq~J>WIUGLd;{nI@L2NlO_;1@(X&b%*9)tdnlm0tX*Fj& zma1yb+hcjct1%u+Efp{xOJklBkEMm0)*eeIHLX3C?rK_lECbcF_E?6gY3;F0P}ACD znX0C>$1+b%Yma5In${l68a1swmW^s!dn~(o+ITDzjy={N*89KW`Uitw2L1>z9!t)u zH#EKt^w7cLvD~S*L*t)7;l7!rjmPq56#NT?1SqFsl+An#*d9y6#0|*G2UgaL%eMso zu0c;wk-kT>)Nh}r2z9W71@vZWkLAXIFSL($Yb5v-J5!W1;<4Nwe427{WHs;x6EPl3 ziobf%bi9PtF_1G%)nPCmOX{-C@cbi`pV$jZPf%I64x|3OV3hBn|48Xls}_%?PPS?~ zlhMwE!Xdp2&d|6dV@~_jgb|J$1-TnRlTvF>=p5!P;HN8Nt`U2`~Q&RVS6n82?QCBy>k z>E5)2-)tulIL{&dNhlsm`iNQS1b==!1$u2`+hggGaUK1`JQCrbhhWf)+dV=3TpNSV zGEWbdl{tSN+C4#adYXXLw_X{bO7`N$V+mN%RO41a9c*lSETeIa%wLz*D6k1OHy%sj z$c^;kD}dHISUi@s9eQYd1n885#bc?uF_*>)3CaLf3Wc@DQuS+OjavbAu(9!2zJ)~B z-$NsT#@pETSO&apPJi>^Spl}z=Eh?wI=dHbWPAkZ6l3+;*dB}L{5rbE{2|zLXL0dZ zayBkSrx}NH1)xt1v$*kC+Rlni9~ox=3UwJ|JeK``eAB$7;f}`=F269_V>w>xB0c7V z-393(yfXEM|J`G0|D_>)%6KgOK7_Z1@e-+#F3d}KZ*%A+w8vttnx@xL8|hZR zufupOss0*9s^vk*O!~cLBPf&H|9?=bc zMkr#q-wpzqo}d~f_0ugTM<_c7z4zVj2`Y7*=eosm2-OR#Me$hnO*ySw?1s>=uv!$4 zWnQ;))QAuJJcL$ywP<@Rt4>9++Hqz-_$jZ(Y>(wy6Sr>X0r+d5cBCh$_yr!4YA0g& z0E&gd*-g7As1e;gmfD_7;DMa6e-f%QK!WL9#~zN+jnzb`g;!$|6pv+7uZL8cw|*c( zW4v0lJ(j3_Yf^R2ECFBV)tK$Elo&Tiw{sNyf=@f*v9#IvShw>G{DV(B;;~$lTY4RMD$N+hh6Mp{s7JC3qLF#%zyec8v|Xow49EeA*F@ zrTCN@x}EjlyS&@6J(f>jR-ylEz<*66PESyG|64`RQ2t<$kH<23C}awJIw!=SUwfaP zp!5w!whlbsHsc0+dIUW^f-TDv?S291C9`0=7UWw0iFeMi;j z*&&3!o-((7PwuunTk((eSRzF=a`)lc=daPx&it%R$UT~8XD`G?Wlx@j+_QN0{?tX} zd9ivPxmWOP=U}Yp!CP$0Hq5sBQRh!|(lcZ!`hQ}2GuJTm|HM-lyDmfjPdqiR`~-5} z&dT`iG;Sier;gYjojM2!FHXuAK76*W>OO2hPmm^ekh#a{5^Z*W-3q zPN^f|qtxlj=@Gh@Y3x$B1kjaJQjV%?f6Szaf-gY3U#C3@&*1qtSa>o9znpRL``*jM$UPe6sC91`p@t|KPKCE4?R3Xo^ zDly0tY1Mr4Oo z*g{?L#JRthg(J`IPL;@$Z{9#iJgzw8IngT+y*|Z+#1o+^dV-o>|35s0?@A;XKPRB` zJS=*GJf0nsamrM1Tb_)~rjRFX@15kC`TQ?D%P#d&@+>>n1bu(KKTn^3gc8 zmPHv(o}5E_kf+>}oq z9mqG^N%!z{=jARu{{h9y82om+Ob<_CcaP)r@D#Le1p4`c0+fVLIE-fp{BPsh(hi@v z+}?T_pOWzt8Lv#Bxhs(#A4;jmk1-A$hmF7~%eSQH%B@#z}0{qK4}9 z7PV-anh~|=xSA2QXmMsN5F{HZpi%65w3 zin&`=)^J7CqJ65emn)(c9afcdToJWMw|ti?q86P{nfF`~wMefkd{k6KEz;|X#}!eF z&Z?!-b49wy(Q7Zj6;X@y+ADHJ)S`dXQjNGGYS9%{>B5x~wZEa4iKsVKWf)gPExM;F zGq@sZ(PLFv$rVwHUZ~10u83OnR#i@MMbx5?s&bPnq85EqmDgMmwTSR}XSuCtsEAq= zUR7doMbsjXs-)(Ms729LrK$|#il{~D zRAmZRL@mm!DoeQ{YEceV*~S%7i~dlRV_XrnC{R_dqGGE>MOEoJmyB9eN|kPqs?;H>HJ$Njpoxt2mWx_+YGo-}!FVOmItPndG&gp5YbWEQK&KrnYEg;T#pxvD zhd|FAENanzGfvSB#^GY(qaK4^w^57kHC#=v7^ehE9|~)=Xyvs2M0np=#emA#*r-KI z3uGXF#!Y})+1RK>fBhBJ8pwDs&`1Z1T9oW~LYmBYA<%Lg8@1@R|5#eW_-~-Y4i>d2 zaC;5f%J?SGeFuwLRA)p6O2zm)kjvlfcN9^J{#mk)@-R*Wl-$9h7WHguQ5nYhfr{AJ zs733hMzoGHt_#%2!J-zWso-Z_VcZ*Npo2v%3R+!-o-v*UG~dQXEoy&hASH_iyd7wd zjcv6k`oo#@ofp3ZcEjODEvm453Pt1PKZ1RCxKWF4r=37Kn8%G3Kmi!^8R2i#qU$5u zPzmOFzycj^)S~hUi&HJ;wZIxU+^9u&6Xd6QynQ{v`a9gHMMbX$QEOg)CfGcO8@1@( z{2$bp`F5~94mWC1=Dwe4Jo8InHym!%qF-C$(E{cl!M;1(s6~a(C8v$dbTUVb~+9)}yXsMfOU6a}Ae)+MkTHn-KH`W1gtQsy7QzT4bZi$1=;MLC$q zjf4HiAfHB)BE}=nv-M}4dqN-@a8@lQHx5)yFn#* zH3Ps$duNPV)Vs+cy{^UJYkf0XEsC%tl3v#l@blgoqZVEKCll4;bv*_D&nF{lQLYj3 zs4r)t#toqO7}Rddeu-K%*BVBxIg=ec&?h5m(X0_`Xgp_Xf;aZbh+0&3|6E$YnLgmd zeKMjJEnoMYHgaY@_$r@_s6|nS4X1s4Wpe=hG-vp0$CXyS7NQpA8u3+U9)iEIGy3%s zwJ1-+(K-_;UI4|$pxe%a#;I&Q0R*R}%K0v%} zR%f7|jP>`Ns6`h~WusAi)=UDL;Vdm`QI?k7XbR)?KwIsljat;3`#q^%Z3 zN%1#5K>4*n`c9Os7G1I0Q#f1}#Kxd^-MJ;J1OUFWBR602WLmcOJ$I249aj&(t3`kB z*{=>{RW!ucA$~{rGFH^0r|0L=Da>~S;ENN#3kqtrh&q;2OO6AW;y|qyO)s}bEx8JS zFK1*)trqRTzgx+Q;t>pdjU!O2MHBZORq!4FU-$^rYEkxY-4y%<5FY!ZVW=HW2@tgB zQ=n3dM)GwT6e4v!g|WJx!dP8TVa)p*$VP)b#N9!e3kZFP}HKJcU`CqxV0buJ0Dh1)S^5y;_Kj3gua9o z6t(Dc#0)yR{pxpJYN-(f~AYI3nPxvHRE%V9<>njesqTM)}gwduK@T%%E+=rE%eolba!T+2`oc9>C%{F=Tc*M8KGI?Sj=9k-Ps*A3L~In1a< z6H9n3*Jsp!I?Sj=?Ji>fV&imAh(Y$2pxo2!|;)uOjp{{N|3q;B+KMe2SD#_Iizv3h@F ztlr-k*Thz_^22Xk9`oCS$Na|QF`wZ)=63^+`E2GfpR+vX)04-1Ci0kH6dv;nz+*nx zJmv$-V?Kz1d?;`jL@m=7%oS0K)O*E8Ejj`2qZZxZl2MBa^KF{{LoIrV zztriti(^@Smt){hFR8>uDwWyYw)@o5>HLca67HV3nMV)xss6}Uw{--~K z6D7s<4+g&{{1IT(qTN5&YMdXah=WBf%3L75#&v-j+1RK>r)w`q|DPxiV)Wj83)pH= z_9wr{nhv(ii|a3K(?!nNyVvz^mc0law}U_RW@@$Q{7lS$EZc+bAPATI8&??AnBN@!(h~+E`NSPPgN)vXT&>Vy2vT>;u>A% z1zUkQ-*GOrYEg??eA%WmBkfEm91?EOEsYm3)bcK+!OS&WKu+6%Eku+yP}UCKp* z(QP#tHd_Y=A~f6tZMCRX^o$zM2U==lqZXBqx>MslKnEQxYSEz(mlkiX13hQVC$3hD zJbd~awP;M%d|J*3huhwOau!EC63-GPYVYaP=#V_X6>~d-;SCwdnDp<@)&C0ODKvpL+jASx4}POMzC~iyO75Vblm39|SsXV_Pjc z(Bd)i*QIq2?1{~dS~R78cfGikI)EZz(EAoa)S~l)hH9J)D2;;i zEn3+47v*MN1gw;^xTr<>9zCVBj2i*9uopLK(a#s#sVd_UK%qV|jaqcJe>u$;8Sbb> zGj6Zd%vOsAl;}(I_+Xz#`UbB|z2TitV$(%V>fJ7@7O(aLLf<&3cgm*@9~Ad{bS-difhPz0+cUDFL#N2pmC4H~uRNrCIS#r_D5535D#BByb2 z+2!R3Z40YKQHxq_uq<^n&mwdytQJKr3LM&qcJpEXgpezJ=$*FJqPXo&(oxPN0#Cyk zdxvecXzt@Sx}Cz{<$T%^wP?xHkGh>^;2nM1kuGu)9jd6?83jJes~z=9*lJO_q#bl) z8xh*?)tCfDEvi4@DlOryzlzWUuNG~!XwT}Vw4O6Rz$0ex-b1AgO?8!tHD9-r96S?e z_=J~riCWa7;(FaqN$@H@?TA_wGP;Ovrww=?uXdy{QHvh#`b#%96`>_wjp?9Ki%RA{ zMO}I8|3c`fSBthTUDv5FxgM8GY&clCD3$PwuT!$iDd_9cv&9z+F#_O-sSqLq`pq?%i zGCrnkP26Mrv+Zwm%7bu`3H5dOFoNeyxaU$69(4g>`vwEK*=O+F8V(ES7Q&wM=~Lrr zc8{yTEa`cH-0!$H`DIEND9tfz;d{i>_Uv2C-r0!$Z+Ld*n2qGgWZ{`}NqP2T;uw%w zXc4)y@N7wcw3qIANBB=XTRi@4@_g{G1OJI<>%M(}KP_(W3IB;_%dR<%9&<|ehyR4x zc00G!L`OD5!&&Y=OyBi-L2mv<VDBI&!AvDz37(a}H8z`M)PGtr00u)HdxBcKQ+Cy^)X<%{I$Ha-Qq7)mh<-2^p32S2IL zl*Cl?B+$RYB_+?GQF!87uL@XEuIn$!-3|A(J-d77Aol>Cs+Sl0R$%}R$#~2L4Jwfi zYPzf8EzAV+O=#Rf4|){;V*Hg)EtRHn_A z0=UBhGbUBh|80Cu+KCjX+bJ&N#xfotW|^wwym zOdGwfPFxYwMz3oKSH!egua=so+R>f(=(R8BikLQf?K`+4rp*?$)CsPLX|q#Ru5(39 zo4u;?k}G1`98{HGToKden5x9gj*6Hzr&T2-SH!frpenh!BBsqHRVmFCF>S7^N?opq zX>&(a+Hplpn}@10fGc9!JX4iPToKdewW=)UikLS4smd0vh-vdhRgS2obSFMPRpl~Q z#I*6N&L_%Ku83(9QB}TiMNFHhsuDE^Dq`CBt4dO?h-ni~RkCwMOq&2zDUOP5+9X${ znp`rbO&V2d%_U>nWK^YoTr#FjHdUI4k}+*^tIA@oh-s5wRkma6A&M=+RhV&q_ZTzXSTrSZ}$QHpMn{q!>8ut(dt2C>{pEV%j{I(SlMi&IXjn z!D8BE^N()jVq6)hrh~<_Nz!Zxm15ixsJo4gY12F5L8`-e0?@QjSerI)GDfx9GF}U` z*~Z4Sskhui{TZJEx?p2t+N8?wPfr*>1A60NF>Q_=O+jB7N6L*)W(>05k@gIRi`Oe} zl4}$N?+7a$P!BK1#y4G*Cqci)oW)a1NTtjkg49?_e=)k{oDBix`gp8s}g! zZC+OnqRot#0R`LGm^SmyN1$xH?n6K)94w~I)`R|5F~;|Ro;X-coBfkAQVqsd9$f!p zkp14dlCa;OOKnI@V;Ls{N@HW&v>BJQKDA_C1gw<9jcGIFW*6$syfIiyha1!8PKypS zkNIG*kq$Se&8eDYX+85rU@IJMOq*Lfn$dpd`@xPn+%|1a=A*-W?CyX)a=0;V*7W;8 z7kPR5BY@l(^zQo`)28XNoAiKrGO#obH>QnsqYiy!UIeU^!;NWExAuLCh))u$F<487 z8`EZMsU(z;`Czb-4mYMv`DQCA6Z1u2D;#c2n?>i3P$A~~!HzoIm^KwgRiY})?|?mW zxG`;>+#E@l`1nv>>^}zCe`DI*ezlaE@$$*Q(m33hHY0M~rJl@-fR(bjZQ6YO(3i$A zZw%Jb=C*0GXIB}T$9yo@NSm8Zd{TApNp-3NF9ZrU*mY2S-ic{5b^y9q=FB1RvpyLy zZRmCaTF1-3Nc=lM&Nq-P)9tkTVhT<0cS>Q2Va_+7!*zZta2jR1*i@$_So^GyJvV zI<8&|F>TgnilQ@>!Ry%>{d$RM^Y>;yh(Tzl8~8wjt546?o%mQEHlM&Nq|3S+- z%kBIHe!ygG)8@_5ImFv$T?4wqSbxunY4amvGHS(V%@?3w&eCGq{Fgqm)rE0<{J>9w zK`(8aHn$g%D<{hN7^$yc$FynvkSd{E*C2gSZ<{u0zYnC2U<19l4n>LA>K4Uvy-aw= zW6fxVANmUrT8$xE4az_yFH7cx(dEka=dJjVa`>VsQ`Q9Gxxb%fxZwC*%8A{)jyj%? z(9{cFZ+(8%M9OJ3XFWB+ydM_j>lnXQ3Ti2*_6faYGJrG=)KU(uJEWE@2*6i9vZR)B za$Q|Phq11D0DL(lP)j*=pY2z$7XV))3DiEoimU12x zoT3x?L5rA#NIA0}&d{(nK#&8KlvBI!91Xhz^mU+;avJvjD1_^>Yq0QqHoe=-1{U>dzf!q@16D?WlNJmgV@XwcwB7lXTtB#uw~^j= z`;F!+<*ddzy~G;%K)vs7S^l_fQ9Zotmc{QpHNkH^HNo#aHNp2s0(m(+Pg3v38|%!S zSo%*=-LcBPyxM{MGWzRX`DQgnfri*F~Wo*JTyt$8`--&JTZFvHQcH#5`6XYZ$AKHH_8A z8ph9r^CuSP_)~$${CUG;eq-~PKLmKpZ(<(vTb0NBuH-Sl0eQ>^n#c8I+*iiCWqb|e zKt2>W4B{f`J5{N0cgovE%EJ|Lk<{m)?INX`!w=1>32wVc73XrPHJ6Nw^nvey*)CE- zbm`(euImhrzvCiZR&&Nhx}oNbi}Xm%85ilwJYLN?UX5{)o~wXykv{O8xJX~sw04og zRpYvLks_&S?IOie)7nLfucoz<N8w7b&fp)-F{L2sB9Nqf6iT=e_7NHt;aE{(g?IPV-dy8uD zZgl|fZD$s7MqH#ZYfI5_KKhe^XPSs{k?IfYNB!^;TI)f!GF6AcxJcHIZV-Y{K4&i| z-5hmY8Jn8%g6~0`uXdMOwYW&zn~c{P|B@yX3Ws#_@2YVo#+qmsDP`12)RP;p$;5Gy zIHQBcMOyK)uTJ*$T1DvAUi6ROQD+v|t@$<--)gWRScm>L8zU6o zICeKj$(MA}{EOkXi!^SzAmbvXEBjDqGn6vNMYq-bOa%%l;W{?tyyhhhw_T)9c4O_#B^%xJWtviLWzTz>nJ*^=E$PNEsLD;k?W` zeHY2Mb~;p0T%;SPi|U}KbO6P`pf=BTk(!+Dp>cYktTr|-QkB#fH7)~G$-&|xovK+- zOB$_!dNJk`SG!0n`1Cg}(zeQ%b#O95i|nA#STv=7o5H~t(E6NBD7l`$?-n=0ZoWdP4+GPa8p_@az%qAU>qbwfU(#6?Qb zcZfbdt%3ND9-&@*<091RT@>P;SO*?Z!pw zFh9G-m4Is4*mjYYbSOsrb!l}3>uz)7B6Y2EK`%Z5Xqtn?MLIG0tHx`AHal2cqs&=1zP`}Dq zfpUk!+C@5$vXI7=fNI#-xJZ5aiBa1DsGEirhZRkWNB&jhe(HaFcI^`2RcW-(q1 zw3#t~SCQ=^%@4-E0%Cp|?4q-{xJYqIrJya0p98(M7dI|am56@UO~x_Hdwt9q7irs& zJEV9f!yOlC+LZR1*)Gz$jp$d84|W}-TVqhi(fQ^f<02i-ouBUUYKI^+ii3KmjEm%7 zegnN>z8Gw!X~^#8Xh4L|`1>cy2kk}0MT+vF5H-Yiy>$)bKSP}@aHfolR4HCBYRgMR zseo&J3_jZ&dI{|!6?>IQucHvsm3RsJ*MkZh7wMllt8~jPk?Hw+%f>|t_jssoZz3`a z!fH>uNEgbW!!O>_?Z_Mrqdn8j(SI){=mu{i^g4_Njf=ED&1l_X#EST*Zy0>`og#>f zRQ>M@y2b1W73HAMF6&@3>yN1)b&K^7Y8zII;v(&C5KN_bXNDm((W^zFKT9q}q86{?(@)agmlTouk`{RS8$U7=GJBd0bb% zY|V9Jfe2OLp!!l%U&QJcLIiP<0;(*bEWGtC5bEsJqU|E>j}=V$IWq=)x>sX%H%I3u zMYU8r>%e#Vv?DH3m&#dmI~Txj__QM~(&Zsf_4a%K4_`TqJroz|-sA4Nu_Op(;h@hR z8W$=0v8MEs-=(Dys^-7dNpRdNF5)qp}3rx1U|>79dVI{ugF9x zII{)(Z|`K4-@ zl#7G*d2hQ&CkNr*ymDg|!RvT6X1hqk8o$-;bOG=0(~h`E%d@A_?aTmQRNQEU4#_X@z36o8OFJ9xmfU|M>}jwa&d$;1 zgj+v-t$^6V|siQI2^wr?%;#4~^Gf9MR8XRlU!N1jDx zMv^-kzQ{adm#!es!J1>potS6+PUeEfl(GZ4Gx6;GS>s?5#lSAH3$xjXPwz1fAx-HWGATTqco)kZ%(_wS?2 zpMhl%P_j(3VX-mp(aFo96Kqo=Dp<@;4e+|2Jx&?Xs=lmc~jK)~ex{?|3 zq_i>-Aun~$OrB=Dd&5G?>xZ6#c0-lwmN_vVA6EVxc}A_rL&!3usslkP(+fPJEH%uj z4&j@V=g(nJp*B@1L!QgDnmpy31wjql8Z9mG>T9%O*%mC2vn?J-;T zj}mz){)N;TY6Z|A7gF;*AdFZ}`u{iLn?y+RJtBYWV}Pmm5WLjn*H0q9o4Tp;eVfQRpGlgCG|T4gFh1 z{ zm@drNHq&icHNhG)e~t}wspFVK;rUYsJc9oTG~5g84`-bT&ixfn#F!1f?)Qui&T;YG zm!q_oKJpPbjNCap`yD09v3_}Sx^Uz~lmg^>2J`^~{+7glM$tR>qkBxkcQUqlXQ>tV z`yWm~e++tyzh5X9>LbSYc5qKVasNHooAU0S6IdH}2UkKs!z<3)w0m*~7#kyO-qK9RvUVA83q?JABF`a!Q<07&)nCNmmO7kdxOX4qvaKG?hnm9i) z>NyLgG&9P{;G*Wuen}6myA2gc$|z^$+%Su zojcf4kB4>A=vcE5<5})R1SyDlDXC#43!?2XAS2 z+&WlLtimWy3&t1zyrl;(<9g^5(9E?2}VOr|RBxFS|zYE>D)6|o94sLCX+ zh*hXtUd$D-3bU%r7Osd@sMmFbD`FMubzSC)ScSRNQcqPo+A7p*|Hc)u3iaBf)Raje9#&Jcg z!Un1`pDSV&Hc^!gToJ3VrK%j@idcp1ROKJ8h*j8GRUUFhtim3u@`)>A74}t?NcB(= zt8kF2B;tzn-!)uSGIK?&!ZE5+m@8rxPE?huToJ2qnyNJ8idcoSRiy`4#44PxDxbZ{D*Q`TK5<2? z!u_fesXi)V6&_KQL|hT8@T96_=89N_=TxOISHvpREm!4=ScM@f(+m~Uf7ila#in#_nu+KBt zKa5)eb#Sm)g|6pUsW;=1K;s=OR^j*b327|j&a8PeWmC6^4|)PWu_Vg76a?gKYWWbo+2}m44yQM;93<2TE&WV-+r%Uxy0S1ugR_=7zvS*i4|vn| z03CF&ScM1k=ckX1uLIq6uvmqE^owdm_vH|6RTMou)gCdjj>hv27K;>Dh+%FrNuF&*8=@tlKRK zon^iqY>&f@RhVc@BYMaD64(ug8>_J8vM&@4?{VuR*ms8;t8iSTe<&{VxQ)>N69#=w z*pCK`hn_4Fa{GC}0v&Fw!YyfcQ953}7FYv^8>=wa=RTC5c~7wZ4mVa|&2hu20`r+* z^Biuh!uy%GQ$yz4!S*=ZScSE3Zluo4FM-`~xUmWwELuWCnSTWP?r>uj{<`!hO=ljr zG4>yW?7y)J<0m*oE12g23v{@#3ga(mNSXNf)B?_j3eO)% zOsAR81e<4b+bT?$pe)^Hz8!3j&26i&u?qj$*MstN<_!21pNv?A^Iaz?9cSKxfA`6VRd}xQ zR;s|6I86g683y(8%kdGba9!JF)Q~gzz)SdK#423*<`;G5Ob~c$pNuvJ+dW&Ajw;~5 zTSLIdbB4cmTpQGDp)=k8iF;LNmVR$=>e_jKkZ_-CJt zScP}n+@)>2Ju&g~Jst-68q|1FozfkNx6R51l!vkYo)fDuS(eDwOFnBV1J!hv7OOB; zm9zATaYvx;_R_{G?0D)0xyGP8$zIa73X7yTMaxj$V35A}v8}?7AGgzCun;ek+?( z3Tjob|NGu*$?^bI9jH~oCj-{1C0hgV6^tyYRlx-La?xvS_y_>LtP!YH!Hm{C1(yKu zwT?io3ceUzM!|gmM{F2shwr1=pv46Ol`2?@FU6n)s!J%0)g=_h>JkcL-rqo80;hgh zs^Gn2<@9}uEV$Mxgu$;3_CM5xrRl$GV`5PSYa_%LX1@hR6?S%l#9jH{n zt!durCHDaERj=9sM->eDnwMNxP`|~j6Q8NJDtKY;C35|T`d5b;Rd8RF`Q(bx3V;8^ zAj>_FM*}WxjK@M{LOqAWj4JpfAc$OLP_N`LqYAE`Hh2WhORAEIUypde#3-|VR<~CvZ|EK+T zeZ^ar-8FTK1Y`C7##p_-F;?$yjN{-m)QFzQR0FU`#^Oz4TkNF@5@}a}9>$}E%Dz7W_t@Q* zE8@(lGv0RQJ~U=?Z49{W%q3~crFmR3&fGS>fnz&!zY6hOCG{}C=T>zbf5({%QggHYFayUW7V{F<|e6W?ackDrnNJ- zKuv3BZk3wW&fGdRt)00YYFayUd(^ac=8mdq?aZB0)7qK)m#2+0S7=3L{b79_J8&0+ zUl0BWFwR{4%NsQQ3PkN}EY4igX?HbF0F>0m#+jQ^4~Hff%7q#AGv5NXGnc7pRLiOX z*4&Hh?_<+{*Sfsl^zV@Y2#vObBlTu#XYO{>v~-PkYccp*J2Rd$;>?X&d6+73^1>>M$5*?%t}S=>LJs?PW(y|6PkS?x0z`U|JC8JI`GuA{qbNg=wQ!qC^hKb|MaYhG?GdD8s9GzV6wTjTKy;zzs zm(Eo3-t^yfeRC$w`xtIJb9=T5GR|C+1NbNF3y}-Ppieb*B#kq7J9{~O799dV z>yr^@Zg+>&I`bI(yPZ*gs&|f*appdii>=dfItEZ`49;5hAv2E#EFADm2MZxo!USz+ zu5zrr8V3P2v$1jJrZt|Xaettp4i;zb;J_+cCYlShhB2SG+L@cmr@wLL(ysojgNG3c zv4d*AbWohRDKT&9;7f#lgcTHLF6M@PIv5xC&XZ%%tJaN~{=2@3fR`V#QWC~@XSd?=!i&paT$i|@P)WSqJDN$Tp%e(+P?8QYl) zeo}?@@|*1;0?#?5KMBQ|+g;C15BT#VTxa}Y5`)IJGdFkLHhRT86<7vezS&BBG#@=> zUIMHfbN)QE9}QR%9dM~{y=Fjd?8S{Um(K5t#zTQd+t_yI5-&?m{B>z90b6Br;be-e`OW=#hiPnY(vzgT}vr!gsNEJxaXp_-ejt{c3)IKJ%_61*^lKkMoVl8l zKha~xNr6%`R*M^Fu70h<6cb;cR!Jb|D}szOmtjLq%^Mr;ICHT_ZPCnj=Az$2pR;^* zJRa$JyfXEMcYGq_%teY7!-~tR-GqTl^2ZG4Sii=Pz^gf=1du9&ToAOTEI&bLAo9<;l0hFm(b2!uY!&AI=Uh~ z^!IfbXD(p+bKUYBWP*Qh**J5-PhRWx4kB|gtoF1sckuWQ-QF`~zJ}4BappeElLljT z$Io;OJ_o^mG+^mLb##k?2vy*q_rBZC-1=F0^d`1Is7F{WO8;Fg|GlkSoQTkZuv!#n zF1n`!_2t991EGUnE!xgpyWQDoBxkOJKk{nKcIHZz$*9};1@7q)dS4~;+PZl+nrCGC_3ukF>2Is@$fyUM3(sT=Ez&|t5|Bq+{Yg``QTDR2Fs2rct! z(RSvN&YMFWIkOl1xL0GgGxzI2FWt^v@E1Pqh%=Y*OJ3bh_@4OF4~EctD9+rdoqcpW z>A~}HhTn6cPVWff%)P98N;g&wp{8Dq={+>gT+9!9DF<(TKZHhlwP-tYg_rtUg*dYi zJlLx-+nKAKKB85QGl#&>`m`g?+`?$3s1|1)gTM1`$2fCKzYL{d&P48oUjH!swujPx z*F(>B+RnjT2$kTVeL~1yYBUoz7 zmV=l8wn-0zpsfrOC*XI%{s2X&)MqyAIdBC&g^3 z+n8;|v)gM`Cr{i#x5?d;X9xPB4i`>(BwqfKO9=VtD z?5FUH$x}4`5^`_m*>$J-k!RKESmZvyvtJ6{g2MIb8@bP8w%zN8=nHG()i30}%{1f; zR>{9xJQ?Q9BlmlrdJ^sgxqtA~i$T!3Di2$OKEnRNQ|g{fhyFF`3?5VH>XICtWVJw_ zS@9D=@XGt_4ta9_2N|x^ICKv-wHPGNnP=Le->X*z$@6L;WV20gEo|C}0(dN49oS$; zk^|IS(ThA~2LB0Z?#WIVXT#y6^?UM|JV|%XK<{4ro3(${Nncj2ZtwleNZCTtEjmG~M0^ft^=w)m1TJpS~otiwKqg24Q z_~Ti3cUG++_f>qqdbTEwM(+DOb$!?{bmx^KKe^vww(j+r-6`4Cg1P&_3cFg6MypYN zi~{qcL{{dLD_wN8NTxFH{##C=hBb-KO%GF@%WZdeRgr#J~#;U@{ZVews= zPw)~&|G*N;3cFhJ30l%t*wqFPsF40~GZ4)T$KY2aK3~`Jjo+&cH)Q>;={%4n4&|p3 zUTspo(_t!)w6z;#zfE&2$~>5^);KtKHy(S0>N^Y(k6nC7eE-|8U+t3Q;v3kZKDavH zYvi(`ubY71zu2_s7A(tZqk^4K2UeM0hJ(c+LU=*5x z_|tIw|29sH1JCX73&7*6r?I; zxgr)&Q&p+Y6|sO?sY(Z~hy~PMRR(cIETAr`GKDK*0rgasrCbpUsGq8A%_RiY05VgWr+m7H7=3+Sn; zl;nz7K)U7HToDWCmCCe1#aKWycgCVJI1{buD9*v)mzX~ljRiF2QVjaQAEH};b~#uq zpgT=0a`Dm^fvz}METBjqqELFqZ-G8JSS+9c)zeaR#xVxt?;jZaQmS=}1+?Q#0m{NS zD^P9+iv=`hZ8)nQ<4Qm^80#$;3ux%nU~12}15h^yiv_eNdQBS0cs$Tl2a5%??fy!d z%yQi&fC~nK;!05qOFXd0=*7}wFOkIZW}tvIN}fpvKVB`#RAHI zV^s~s#B(7ME<=oxR?L7?Lf77M6s&Y1L_@m-+D4i*dO(3`6ijT@(-xcsAmo8aHU zT*J)1`x^@=N~%Q^z&rpfg~LtXV(afbrDWWGAXqVn8w+Sg>pYZ&mu~>p)ZxYg>N02z z6=B{VY^cMH1r%k?Mykeq9@r9x8w+S;)d|#``5v%?4mTE1tg-{CC-WO%_Z)64pj#FD z&}io0!Cb@b{WliSg+6a-4)Xx86b?5QP>m-sXf5+Vuwo837Et~!RVW7^p9Ww}9d0b3 zYjFzDK3={**ieTX3+Pe`boQJ;5W0oCwJN3I3PBn8jllMxFj!fgEO6MT?b#lb6iXN(0D zC3+M~t*aGySKo}bfa*fZQ0p28KGQp6ET9-=+fV?nYXkUhpNv>QO@~ycBAodL{FYBf zETGxFe^M6Cd;)ik^xk)|fD(*-Le)5v2t18XMl7I)6NgfB&J+eO=aUf&=y=OC)RQyK zz&rY6!~zPgx|J^A_qH_(d@5)7YsZyKy%u5toyrl@Qkga2+wF{gy~G0gL?3iJ=fJP| zWW)k$-l&1jya)g3lMxGO#lPVwKUQwV!*BV-802eEETGs2<`8e2l?N!0vHqSD3#e>x zM2f&?O--Qs&eCE56)#bqVlwUy)Yo3xSU~H$p$DKzD9^B$v@M{=1wT?S%G(UmHymsW zsQseWbQ0{E7uO+mkrv=EuhHR@h|A`g2V&m>kz-od^IE% zQ1O7l#8*eT0Qlm>@4kZC0!qK7om#RgKy3%gQ~c%>QcHFO;L90VQd>Z^RzIQ-*zj=x ze2pVeTR@{nPEl|b0AKhB)E3aGxP=rv0&vQPp?3HwnhlECERnK+D)4m~Y#((!g|WJx z!dP8TVa)p*$V=doCM*l6@_{1yx-=Iqyh>p3dxiZEbwz0`pemPxbub7azDoNoC>GFy zBl{>CxHS_0n;BM6ETEn7j_KeAg!Y9M6boqQuEIKa1)(Ql1;ql|J87W~TDW?Qg2CBF z+XBi_u&BViIBj#n^7?#YY27bfB_; zZuE9*xEx@O1C<5TplM{?>_Gs&1XerXSU|0E+$Gm7)E_YWkIz)w0$Q7PUCE5 zETDlWQH!XWAQn)!;HBisfqGtt84GCfzDSm<66!S^W-Oqi{q~ZpE$W>eW-OqI zxz^y581?ZEGZxVGS*6Lf1oc%8GZxVG<>korH|mESW-OqN%@dRB8tQi(W-Opci}R7| zBkJEBW-OpyZzkh`(0H4~#~{bdSU`oQWg%A<)N|R)exvzXK-ch23VI!q7H=e1`jYd! zEubA(UiX|;kbBM=6uRfEg4}b~pin($QOZQ$qT>Mqo%b5r1RPW(s^wGJyaQO0lnsFV*%|B-&cPI-^C6*#^CprKLU&el&|~( zjcF2o1Y!^@7ErTI=QK_Vl-kC|0vdKQ2cCb9a!E$SKUq}A2g1J}iu4Ts{t>LL7uO+U z0d*`NN&l`HhR{Si7+L-HS*b0cW>;I$f4o~O!8hBPn4A#{=<%we)RiMAfzO+WZ2?st zNZW9xSWiG+F;$1bSU|J?OoRR}C!_yQ3~EP=1#~^~YnsmsW(IM-<6LUhVgV)C9jG%E z>`W*eQle~WjaxF-L|Z_83NE6J-1sCWjs?US9W)kD|D+Lga;w)WLbvuJ>u{IOT(Mj8 zZ79B#d*cNi`fN5vRwNeCkv~H8#>Sr#dVg&TsMO@hn&&j!wt$k)Fi7=`mD#npLNlFh zZnFB7Hx^K&R|hm7WVmes<$5E?SU|2^h4Am6klTnspK9tz8Vjga*R%Rp?FsM@pNv>Q zH!I!InU~pIMmtz6pt{%p(t5;VpiPYV#MKs1JU;!61yrWFJjL%MLf7n|+FTtJ z3&@=!rhYEqdk*0qxo$C3P%NMcOD^eE2OyNz4(i6l0vdQcyv`H>FYlc(7SN| zcw3XPEuhDFB5FJgi0|FYN03-RFHBOnHiZ3`$*$p;jXFPAfbW%K2mt-zD$L6~_t zuqw>?^U$_{GNpY*>RYc3P$zqFV*yRhe?a5WKof0jTR?Rd&m;c2v{r$wx4E%^qOFwH zj{%)=uvkDFx*gW7KLUE;V6lLXM!lwS_!;N~5rgcyv493d>p}j!YpKDq8SY~NB}$%} z)E`sIAyCDHYzydCe0h{(8=y|1u(p8cT|<2mj0T!$V`Bl8Uw1`+53K}RXJgv}>T}`; z-R8q{4D5`}jRjQbRCwzG<3~U*7^~ODwtxzhI!)i0yJzAe0E0dN#sUf~7(y=@rv}Q% zSS@ZWpavHfQ#^dLTIGS9uL#=$`aJrm<}D3(ETG;6=V@kJK(}M3r2szIQ;}Z6D^qXy z-z}h@FrNZ=wSOUWfP;Fcj0N;x?1z+r`E{_nrXkw`T6{Yb{{0)u-|a=k0vgd{D$V8v zW6y%{fk8Fw?3goUETHH6-_bH&q7>4Nc?s`r4!wl7fHs!OsMpaO>CwNh!&pFt2Sm42 z%ZrfN_Pw~q%FokX~0Yd3H$VWHS zj+maaj$O;9TP%i9wXj;0p0oV&MYYsnZHG|5uv!!gsQg!d-QskFmW9=#SU?s3Doca; zuA~e#gF$szV6td+5wdSo~h)}Rsi?#(+v-LOX z&Y45tXT2J;Euc}kB3i1Q$KdaL+7SzAFM1nM?L?k~KmA|`y@z4}4LrS3Z%_G(P;p|ODC;VB1sdFzKDG~TO4+X4z+9F9tGW;ysquf}W(DCseO zs|sgMfQR_BBNou29~GzpXI_GT_HM^mK(X_Lvo>-j=3J=17=GJBv4B$Tie&BKV19(k zanL>?tVmaPHb?$eG~K#kCm zr)uXM_%-i#YzwGcNGbgLAHa{M5yt|mlVK@E#;<_581$ZdTR=_zt4|rh3V88Q7LdNd z$ku`9SpS%oyBva^BzKRJy9Q4+X%NA3H{_`zYjN9r<-ICUd}0qG&&m5g(2-Nlv*hm2 z^xw;v^-qb}aXcHGBNkMa>gccOe9{@@UdT1~gf`?^JGBbA*YoV@TgRZ^%*Q|d~`3lzc9_@*-CEy zE#t{oCJwoy@>J3u*U`lmPc3_v9r93?&E%Pwc_4ZE&wfRoD!0#&r{b9WfJR)#^YU&ifu%H{5^fvVs$0gQ!^b_^Cc46`?`GGF1#@*eGrmmoutC(F^q2H-}@v*l4{ct4D zxyZBPbzU^T3~o}S%i!bTA>*r#+xUOMZa= z#QV0lMlk#*o=RO7TRJNNj&2m(sty`8rJQnG_6Osh23(ZK8~?ZQ7ilN%8r@D68F!HJ zSQ&p@r+L*4dhEYbkMm$0cnupN_f+7v)Z)7x?#(dhtI9U6h}-f;RgQ5* z+?Efja+NFMwtQ8U=UfrD<(I1bP)q6O<~2XWr$zL|$cWq0Mpcq?MckH-s*;l{;k zOi5IX+mifTIZB1I%<7C{PYizZ`6|)4Efw;dq6_?|u}MHP94u~2#~q#N7UT6mTOBNJ zOXF=LC_FcQ2IwCLi`x>ld3SowOTPem$9R=mx4127`l5S5UOMtpbb^gRu(&OLF-}n) z#uP?Tyh9t1SP z!Q!@zKfaod@}?~STIOJJTSCqkqAQH|0v&R&xGmcn{h()zZvfr1v2k0%CCW~%dEMWD ztmXE8i`z0JPA2NhI3ZB7|Btn|fQ}-I)^K-qphKDx=?8DSM9c8}D-80Wh@;(>BU|3%7ZZ4X zup&0sZp-YES1B3udSH!huHBXjbw*QG=D}bCY_8pw*FK?CjQLEkc{bN>OGvJTRD<~r zu)Q|dZcEkAOQ!F z0J_M02iRW2wcGL$&$8Ql2>1%neT^NP#raOTEoGBmqGO!-4(?o`R#9b?+tOyxeR|BZ zNdcb8J)_;0jcaSkd6fjO;+c_dOOCW_<-FQ}cX!Wdx8>aCwiM3u8Vf$%Bct4w+}<@Q z8P43+dhlHy8RfS8{)kHl&RhV$?U7M#OX_$}DJy5bfIC*Yue)+v%EcW<#W<4`JiSLo zxh*@_-lrOzDGFY}Bct4wTd(p`b!>R61$bx9@YjxGr`Q+DZOQm?yv&RQpJFm{e<`;m zRSk5j!tJaE-{z4~Zp*?IIb`N6_;rtra$CY_u-w21D|{Hu)?e)#m$F~2 z+!&Wj`L0&Ji4sP<{DC*IH*jOJ0c1V$k3ZrOU2Q(PFs^>O)J&F;u8zNj3?6Vc_V6^i z+TsCU33UlNo0G0i_zZxKeix?ormGV#l=Y(wjvZE|wms--y|X3wN-NnKbi!`c;7a`o zJfSlyD&k*xTx}Z0zq9<~@$6b=;m#=h$M76lP2sDsoZ&lX(bcvq@EghEBFR@}dnp z9{o5yLEO3z^fUtQ&UoaaNj}yq#uhf6HwM-AVqWht8IE=*UJ@$>NIFBi@(MJbeU+?y zsFmQlSbRQkWIy39Y_OQTwYVeMn7onrAJvePkI|r-10Dzw=@MT=LpTx_zZi>)UyQ}Y zFUEXu2J-I3^=D)v(#ZH3<(luo5}f9x=!^vrp9uM}&>~XKcj}30j}hWa>OX=?M9SCZ z63qa&Vy#237a0BsDiNve{kAfgAE9!Q1(k@Dt#~;ZY=%&`$bw2l8oTnC430r)np@C_ zNX6Q3mYH?nJ3TT=M2eDnw#=LdzvZ5hB2vc9on_)9=r^5EB9d!J4+;Hn#~~pGu?47z z5RsPq2TPb0Ah!*Lh_uSDy@VA3_*Sb?`a+v&5vk^x#N^nH`X0l~SM>_#inl zp4sm%A{E>C|5-#r_eBtqB0j<|qKL$&UlxD({L5qU`Nmj$zA+Y`Z;Y2=o{bif=m0mRMI;x$QzB9<@mh*ViN$LvA|)5E zrHGV4yp|$T7V%n&NcqHTDIx`m*HT0(BVJ1pN!F!^BzP#UuR2?HMP3Jo;|IsSkr}XsldJDI$%yev=yTYGns6WHOUE zqeP^m@0-yr-f=a7>+6UXk?!|=O+~N^t!^NHGZmXbi%3z&`s3gKpghG)s2<_BGiEMI z&l7F~vA^RSV%ADT+ImK1E}2XOd@=6v_p*sMj3tpG(z1e;sQ@>gXe)>^b8;8KJ( zn4oM-iAddpuglDF@QdylEh05^J(rnR;2(6xh)B1R#gf<;e_Y`|w5T(b5|QfFDkQg0 z01*HECBn|vB9d!uDw(MY-oQO$M5JF0&rl`)u=PZsFNfrrP>D#7UY@0ve2SS0^sm82 zL^?WQ4|Qg~8EmH~-(;of9-Z1TzW{cPIiC-Wh_oTd2i-E``{+GTxS3pwNc&waNMOI6 zI0<5q3ui>6YXjR6e_dKR!15WcMWjc4CdtXG0oAdw5|O5!R;_md>SbdkB9&T@Mov8e zD8yj%2)`yjvr#aw+B&eEntO;y8J?FS@t3a)2wc-4BO=9l{Y&oU_dwwhuoRJ|AL=8q z-!7~_2DNhrZ6AsU01n==E1Uct$_|v*U?U<8S{0Al^1iJGR>yEHBF&r=N(~ry0qVtA z>>DE@-73+LhB2QAHqD+~bw@O|CmwsscpcCdGr1O##^wD*3m9JnvcDpXh%{qNYRTVd zZi`4yCn#n_q{|EOk0NPa#fH zMxKf|g%puK*6AVVVeQ6Q4}<(vn<=!2^lI#U*>Xl?3UJQ7Wi29=UfV#nR~?yVk+mm9 zq#nJ!EU~10kQp6Gd%8QKI)nGi1{Wc;DUt@Yh;*zDZuaoHpG4?JWGyNYDQdFlvc-=G zMcMP`D(gr1y=Yofw&;&g77lu>v$qnF{P&zDAD(p?gsQu>Xhfv;!yi(7&a?;b<<^)H zkxFK~F58&^{;x+n>Jfeo5*C&1Yy#io(T;kAUrX<)vYpG|kKNi4M}QHLde*2Y8~cq= zti6$}p%RfYr@Kh+_!!QBP%aMIKQiTG{+c;vOt?coIa3L|u3KY9MC$h{o@}Qpct4MJ zl!&zSv(pmogn-ZYXh(@iUAEto?d$+Q=GKl{LnR{RzL-xg)IEgWxiuz(T0{y@)Qk@B z(!2KI(g#C?HI$jkUTJ@pqtl$p3SNLS=72CF(yZ94=o)8gfCqWBqeP@7ciPY+&h!Q! z?B0$Rk=7nhM+NwJnFYSetsS+7N<=FAWI2`Q;30%AxHYDNN<{jZ`IKz&B|=}^S~Mb3 zr{%|FW3llIJ}HI>Yv?T`qpe=a=GBw!DIiup_?|M5nj^+CHcsx1d@mv3y zaBZ?qpF_?x{I>Bk^iH(@yk$9a^4n&!^(JQzewAepgr)xcYWFR8KN~lrZ=hDS(~!%z)+zK)b_v}A zeXor}bo0(TXntiFxvnO_!|9?V9StwZ6%V%0u-fFxb=YaS^1ih!*X|&W>QMkA4mNK75pf_ zL)=L4aRgou!%-UlUA4+UfdzQF$JWdH8}Y9A%8hf;{{bcr!Qj;?qEEm>1HU`zW#I=()J556wX9UW|m=}_|^720^u@`^;My-;rJAU&| z&S>udEo=hOixA(NCnu{Vt|d(ip&P8Eu`Ji~huBMDUa;W2E0@Q<*$FkQ)V;>!I&^** z4veR>V8+#LgngJYy5&kczcj?Q%U8)&a}DIQS`>(l?Htz z{ckt1qqPWZL{A>$&j~^Cn|2gd*kwLQV1-q?^nV-2!a>IE@WIC8)@nRdjTfkKlk<}A zx**5>Zp!g|i~~zzA=C{nSYhd!<1lj`!-{DutmkDu3Ofu;2@x!AOUAm#qkqL4Wrdv) zZ^v zin7Aw+@l^rMOk6T#Z(EoqO7npqLPs-$_l$6DuuYBtgx%1Qkg5t3cDpLO}L`0u=}FY zjVsCudm<`BxuUGFm!dL_E6NIcCo0RiqO7pbqOy}K$_o1~Dkr(3tT4iP49~ygin79@ zipm?VC@ah*D%Md{lob|BRN`_)^>`FdRMK%pSz(DqB_CIm6_#97%5z0oVQECAAyqq3>9UC)fSbwTv1k715ruG6=j7r5tV#gQC662xja{t71mN@8ls}D zu=9^wP(d7b)(8~GVel#?PVAF!HNl6p!u_c6=?Ol;)>5F=Hda9(GPzr;!750A9 zYs!mHievMcFubwm1A5ND9B)Kg%#|OiW)HP4fKzVl@*qvh&Od)JPl~Jjg=Ml zc8)LI(!P*L|xcC_jVC;7i_dhVm z9a=;&f%4i|Sz%vePNGGOs{++FSX*IjtX_1Lac7{O1{*7^N6Ry`h4}=q z5Swc&EZ)zabcFdjuq`&%R@mBUVf38&8L*2s*H+k(T`TAZ^VeV>ZLY1b@%I~1Oq>I( zn5U9aJPdN>&2!H}#`d8&JbhNM+&0%%Sa_~@l#-{f0#?iB+6v1TcQ55+-WjZ?&9xQw z_n695iunYv5Swc&tZ1)HREPOGuq`&%R#?rXQK&8RGhi2OuC1`adlOJ!=C8p%+FV;< zY39YCam-_$#`#wb_4;fR?Jmy)!a@$;6VabN9r?k9%s({t9xwgVqt}aU(dHT*^ zJ#DV7uw3tpQyB9JU?GMZD{SD4^>l^#IQcRq*t%cxgJTl4(Yl5C3a&qP{_M?;BP%L$_n#Nl!KaK=9UltmdBvJ233zo1J>swUN$QOP*%qBdrnzlLwcQ{{%^3x zWq~T&Q!6WM-h#w5l5uOGj%I3Yg)Murh8%-Y9%-gDR@mOBYiJJ2%QcesG>jE?Gg%MX z4R*?n%aG6k_<{=$smJew%&}s(WGn0_t|I=l!pc3XEH;u4Ut?hK`pTDZ$_guU+@JW8 zEt+ zX@$+pwNk)Y0DR%2ptQpJ=B^{)c7QzwMp)q+Xg28fxfnt;D#F)g5Q@b06vpCu3S)6S zg)y&hAWwlyn#e?>vOD+73-9!}@XCw9D>l|&Y-G8mwP@5i<9QjZiV$C={Sj26QH#_Q ziNLL3{BKlbK_wd1sQX<87b3JVvY--;-iIZU!4n8wk1VJ}qgf*k%isruez^sWX!K;j zOPNWCE6mgw?DZgDB^s5Ue?evnftPX5NYUudm0B_p1lmF;lxXzd+e;Gm1sG&QAsQ8$ zvq8cc0CR09M5FQlE|PEy0AB)&g|mA+8ZZ#O1^tKmWo8NZNHwBS=Cw7+@e=j-Hq)Zf zn9hUA5$z)Szr>)Xd#HLmn$#yPIntt@$!1zK>M#xlVKLOp*i4H?x1yXSM=7Z)b8lA!?DQM5YXcmh``5w88 zMk_J>|HmGW{&&$x+?>OV#QhSC#pfGi@%hGBe7-S`fuo!SApYp`m_Hso<_{i^`3UDR ze;RnqM>CK4nB_4ao;>Cwk;lAKc+5M1$Gow5%o~=+yb%L=Q{a4}L?d}0rW)?OxQj;3 zxuQfPaYFDAjRu2zh(;k?(xOpmzD@H#h(;B${cX{xws@ySqXy!g7LB651!&Re)4Kc;zXuApu@a3| zb%`gj-&I`yV31R5(df!fZ?ZC@oR868`dh$=Mo-c^EUOY&BR8(TC6s8?`~7+Od!!da zgG?}|Tudn%RZ2F6+Vg7t3%{Eso!K;j$LS72f52s zYz8eFZOerRw0%PPyO~glMgiOWX(CUU;#$PNB0I#am1y)iX(gE{Vlol%#RQ*oNnDSy zBvLd=ld}UY;>HIvu|*@!$ecp&xR6N3GY^yq33#G z)Qps9)XHz3Tv*rji0f;5JnDbV#}eBko#sX~YOvFilWNgu&FJVdTSsT*p4Xz0$}OFF-#HHloq@?ptXTuUf*}Sal5YK!|cQ4^f=NOYh@}Fn6sXgJN3Z zk12r&l+Ym~8a0bGTkhqCK+PgxDH`qDpFrZiK!Xg{Js!OYjU&H@{so$Eun~=7XUsdhNS=_AF+UAt?sA#)J(Xvs>h>8N2|#eM<6skvKEzSWIbp`-FdUG zM`)K@i$*kRn`a~q;LHW^+is1Kw~&aQT7IKRw(|wtaX;d^s>~bfYVRMiouuIDIb&AS z^mr71#A4Y_QShp6?T915h(jA(T8adz3xHSmWX?I_Xc^~PzkouA;*9=NZe5{(wjelOce1)hU5=0~qu za3vaDsnJL_Rso>~ZjH&H7L9)PPe7S?>3bkFz^z5o<58J&rztOIW`HkpYs`p7ISMqP z5}XMIKjP7j5{+)AjY?HGa|isndplY*syZn?E#i#V!(f_6e3)BfrpKe-$N!e?%mrWJ(T)<0mes!~ z+c^M!%Do*U8ciwQ7e_hZQ{9Ly8r3P(mwuug4ObF!&E0!EI(f*S{K2xg@d%=kyurxU zfooEu#^ek{&~>jTo-L7ng#Q|OwDxJ`Q4>NNN}efsEYMLQmMB4y&|u${KH4(KAnhwbn+6YgBT7XEl?hgUr5 zA;RzN@NE-r<@?qxJhpLj5l->gEXD&9juLLUg{MEvF2a@U@KX~mlq$$AJh=2~5$`kQHv>X5Yt(@G?96-h`_h>*yA4vt^zLU$DbpOgQAPL~h|EP_lSC(-X6TY2WGX z9C$IKTi8lIQ-rhF;fyAHJ?AC2aH$t#M7V(+&T7K78o7t>cEtT>EXGJXoXdoBwYe9e zW&h+aQ&Z^TYb;5XnSQz!xKgCGO)>;BV!}cCnlTxf0OfH-#p*+KS9%uJCP` z&=gi-ky*?YzD*OFQdSDh$-Iz4uUI7nKFByv=Q0#J$x%sEE~1hm&%;6#8WwbIB&|ie zj$f$xJi`fKG+$~hM2S)y>v5h!Pkk(znE1UT74Tmi3E?04E3C>^6bk))GTR0G{ztj2 znOdk{-bsu2P^gzxB`-r7v=%|Fvavs+JUyrm<&VgrGO+n9f*hZeS0yPVcl z#`A!d*tkDFz@g=>x?aB4bH;ms4%s*vKC+>;t%TnD=?CMRK=*B26CcvhPS)FB4l5?s z+xiYscEL zZRNP!Xf0LeBe4f~ADy9;ff?{g?BK}QZx;Uki*g7f(RkGlnNm|S$Eg-I9AvFTdA&it z-A6~Yaydd;O=v=8xzS@lXBdma)b}UmnadHD=-Ftx$IJBu=#|0I%CvM4o1WqO?S278=d)fwMp!ol}CByXh@WJ z6c~^?EAIOG^IhLvo&CJx;Wgjg-PO4jsFi~60PgA%D^40(T0TGg4>UX&gICK6`N^>n zCCZsL+E&`tyXa&5QFj{9QiJ(}C4Xqh%%Et$p)KwNKl5iMVsLEcdFk-){}HmV+;U!~ zF%h)?N6~)8@|D}>efP2i=D{kt1EtMl7{kP&#&>*;yqY>KxXG8}sV?e)ZFa&}?b z=lWD~^8FOo=9k6DIh0@B8FrnVb%TKWo2_1%Xa3{QHiA`~uYXGPt2h+~^}mxLRCmk(8F%lKt?1OzuQ&Q% zoLQV)_fKJ2DC(#%~r^{z1O*zxmaKuh6oKbeW7tvEgk{=Nt*~2YE+h{!tjnf5L{a8}u*< zwRw}6tW7BHz~D8&r))&mn2%p}jcrfYb>d%iCpjTL7Wiub7V}ftF!Wp5bq2Oa8mw{W zf>o)0&zBFVT4??hIEUm5&0pY`81=v?untOE`W8=p4XxJfAextbgM?N;TG@}vIm9PE zw8$#_6tPxVjVcwO(Bdtg1d~<&E&kO%2CukD@bMJ~+>AJU#^gVNhn8;B_qDvwGZ>kX zoJ)?J?As%>?1X&E_?{24)TS(DhgQgcrxEd@SbIPY*_4Iv(8{+iA0eKTbpzy{p+0wkVs;GaUZ^r*R$C4(}mu zZ><`iP~#_RyzIB+mL=zR&_|9RV;ndJ3!(l(2UA+?I_G=rZ7oMX<(;YJX#ZCHM#<4N z#2Y0?mx+siv+WFcj|r6=U6CtVj; z$NqqflB4C^Q*%Yh(ZOP>++0y|bbnDP!xbe*4-u7mTv2lLNKt9e6(vWH6P16sqU7kw zqB4OiN{*f`Dhs%xG?7ijt%Eib{5_C^`C&sFdJ}lB17_N-eG^Ir_AywC0MEqtA; z^fyuQ{e+5=qkoG^a;_*jI!ZkL5M<|ylB0b@r36=$934|sYH>x$(X!>%Tv2j#T#*Sz zMa$70AN8TSI1;VJD6Yid^@2}Ty35R8jhj*w#s`6p*;vWZ31|%YF}?@%#KuaF-dU?0 zQhWPA3N9hvdgkNy~AA?$QB}eC;<)kN!^8y7LtmWupcS})C ze15FjKn-oIMEvJ%RcftmWt`1$xrojHd$qYhxux$15?5Ml;?7w8O?qj;?m| zAbsUUI|p>d#!8N^cdm=!8Y1l z%h7{6cA^K&PlBDZxt616d~8eJ_*7djz~0$h%h8FVey7CDqkqM}gvKD(-8>Gq>#Um; zz&rpfhs|}DnNP-@rffX_ieS}kuI1>|ZF*8+p1uQEH=AoY`c$jfR#oO>!6w^W%hC0w zj-_VISA%V|xt60}72HETn4bhYXLBt_mn*-EhBJQw_Ri*7jvjJ6HqBrj{TtRFgIa$r zM}Kd+fL1aO0Lx)>Ek}ob%}b%oD}q(Gxt62XPU}d;dHZw#>t=H;M;D!(hR*QxW5Fid zT+7jIcKTZPn6C!gXtqjYk@-ombA}r^dO+t=%ic&SV8I;E_>s^!=XsDKXEc26&KrM$6IDwyhyCuioH; zJu^~{UeIbiiFwTeU+SLGa&+*XzbSy{wHN%jM@Grf2QxLNs+_qG{>mexoCBctT# z{|eow`S_x-rh_l!41eu7yv4pya&(a*{bXhr_+gWg`%B5uM}9VzncLvcJTgj-ZtJ)% zGmf9hCOFWHWgqvy`aPBAcZD?NB-oiSZzuF2Jlc-gGdKouFw?>Qw$kF5~f%FIVi zOQ81l)Jl#nI4u|DWjqvUw3%AV(Px?s#3P7NUSg&+a&*r3hiNCuVH(MccOyst+7m?A zz@E8r8A|cverdW=I)CoGw3~m;N5d6ETnsU5(IZ^x%OjwF;#jyS+FR)g@pTV5`C2gZ z-Tw-*MjaEE7Jq8gFD4Zio3k34;)@iorTl|IY1F@GIA@7E?yf2lp1xl6?Mgw zV*n=EP-@hBI-U?yE(hRi9W|xYsIQ;@Kv_`?!@w6n3QCRoXybVT-UHyPA_b*JUH^Lp z0e=BR!TLxTVTDrz1kL~YQfSn}`JxTFw7A&9SX^vjEH1V%=JgHaDRA)IJRkq~u%W(WC5H5zrdK6uD$F4POyOl#EFyQ1I4s;Jkt*+ZpKALtd` za&$nwo6WRF-LK4Oa*RZMyv?*mJ$=wcax6xDrOmWPeJnE`RJ#xL!#2|z^~_FK&Ks!T zvzgYYYcKvmjxVVHw3*hZZx5eOj<`776Jt>8t~KfeCH^KyHq`UjOl#EH&tW+$qF&u* zTB8nl)ENC=qTb0c^Fi~}sN>=Y4H`UcKR!r~j058M(^xBN6#lzxd`ENZEv8R1zQ$DO zHxV8jn`Vrtcs@AR`hW4@SialE+OoKrg0c8~V=O-37>mz0#(x~N4ni*dH z9vbyZt|*OKe9nzV{i$gpe6Jq^HyU;F=3KhLC9P2(=UY8SqyEi3_L}}0r(pZr8uc9U zPHWT)#XGH0uNLpLM!m8H&!$8a%tmX}8$>{B)Vuhd(x~@|*HWWCE?!HG`iyujHR`M4 zwbZC@iPuu2ej;8=jryf{Ej8-T;b)CcSmJN61%Qg$SZUO$dw!Es*8^&7u-2%LU2BiO|DZg8(HZ?M zU^MDU|D3}0AJ}3yF2A|;gJU-b#P|HNk6gF{MVG>P0z9%&T=5{DsNf;f&I# zKaTl}#`D(ka{7}G2C+O^qmEJh9KFVoVxcTQTBH7Fcx?Rr6Xg&~%Cg{{uq{!Z8ZHTv{> zDS1cDjYb{%*piz{Yt$K2jFQ>8IxF|Q)~H7&St|Js&5cGq{Zb8yv__ra@LRHOBlir0 zJk-RN)Eae)yOunP9MSwK28M_krBRPuzM1A@(^~1l3z>{qNqb9Zjrsw)^%3b>NVYWT z2tlP$kNr?n2Kys4R0oYl?fYMJxny&I78$HH>Mn1h%Be$v4%k>})E{%Ck$<7P4)mNc zAGlJZe#D2r)~Kh?R=q2F;huP03^FJdR|b_v{pm#v`QX^heDgfApwg%_eE2G7T^pgM zCMX+I8ugTZ>13u4_%Qd3)~J2f=arec;EQ#}Xw+kF=a6_e5Z~BWXDFpnm)^ZgZl4=K ze7`@!j@24Tv<~O*@<(4rTb^OCi=m&q;(jt(FL-I_hH0lap|DiN|iYWc`lT&nma$=C{Cj5*7t1RC{7bQ*sl+MOVqjtVOD{&E^ zQU)81`a_(tl#f@fF<3jzJ^E`5%IynNgx4Q|(K=)_>hu4pgJ2QRiU?S0)YG?x$%Ehk z&{2c6M%{1EUHLt97wECUMx#!((A!FcZ)l5rvHlp;`e%*>S7L)BP73@jlW_{5bd1Hm zF&cICl9wqr^P*s-?a7r!-TKNlO3%14P)jqp)~H9^9!Av|4+DyD%G4V5+&Qr&pRc*C zQE!hDESb@$>z1fM#d%|&MEVBLOnl(&GqKjFQ?))zwRyH55&FhKxl&rAc5Hi1EttoP z;ZI30$Zeu5jIre^-Nw%$l=CnWlPZn6b(jwh@P(neEz#q3vFqpnWN=@w5h5b1w; z3ioA>IEB=xhg2dtkBvwl_;Vgwqi&e@w`}h{hE|4}(~vi1U>i zb?|{rvb~JR6yTiuk}5kI|DeCtC)r>Pgqlavpzg16bA>aq#eN8ljjTo0U*n|o>12yb z5ZV%1i%O%;U2mOi@iaoWB5P4;)Wb?=p`El4@Q&iGzahG(T?h`(OK_r+0F>?>2B?aJz+HJvNcZ0#?~XW z&#f^PR2p@P@BmuKOMexi2W~AIjk;p8sI-Y%)R%-5QfYtx-3;a+kXC z((gj(uv?2pqh65zA@%3XZSZGqjTw#lnWH_8=8VG+zke`9Si|BB8Yi*pcK?$)Bw zs5`xzCmY)je$uTmqfxi`&_%ZM5d4itJ4&M--)pdJCmOB<;$n!fhDM`azYTX2G6H7f zfH?E@-%@riF3KA@#%=MjN}*g;Bai+X3!L~)Ex~%a@dz5Vyurvyf-6dBbof6Ax-!kq z2gzo~aB^8K9*}be*EX!e+cLHAb{W6D;hG7W>LEF|^4kne(3jq+LvzU)#%~i9J4mk5 z#~PvkM}C`rRzidc&!D}}Z@)Bw7?idz`g(lFZ$q-9YrW(3mXMS1J>v4OiwC%N{W%H# z8{T$k(|&tzTF0JBVr<-6cL40D@>&KO-innMiQy%P^y-58ZzCF5D>kud<`Qr<66lM0=I z?^G^uIuxcvw;(e)E}?<2UU<~(aHvk(M{U7E-iU(vKD!48DtR<=4KCdtUet$q=sWOx zL8wV{@{()aR6OJL?yml5Imf?HlkUTi%Dw@Qq}|)}4CF(I`T^9_4@GgeYoj#GDHe&<`P+QHLv=QBe;enw|ikGW8Imk{nkLA(~wquhm0{9_+V< z*Tv%J;l&dEQoicyAw+C-iH8u)KbRDE@e5&fgYwpbObT;o3ib~hM81Fh-^M3ZJG{TS zz0_&sxTqR8Qsbm)WxaPgInI|=jvHbe_&a?>BPp%e#lx@{#jUNFjw;zRV2^4&X)t50 zCv6jNl%DiLyis~mXg*BiJi)CfJ!wBzw4QWW;Af1Lo^(P~zH>$CNoPeRMnYbYYTGEb z!|$S~q~MCulS&of+2r7g(v!-IN=dFLJxR7)n=49BsvPd3$>$#%zBsup3Tv2*bJu%eA!0Dp|Oq^rYURQj{x7PwFQs)w!bdq(P$6f-6c-8ZIimxT5r=F`_b( zD@sqAC@TMQMd?W)qOzJRN>BP%RQ7O1=}GfM<*b-WKGAovsNCa<(vwz*$_K6}J!!3| zL`{r}(vvocN42zIM#bn!M?|R!m$aUAQk1%LN$W}f ziPCT`X+7zZD9uDk>q*x|Wi?lno^(f4_Hae%Ne@NkELW7C^h{LlaYgA#uSMkpSCpP4 zTaKCp6{RPA5SfIiXgw*#s~GedpB1YFisdkP_2Ltd)|0kXicgCfHv?*8W2Gl844*<9 z7!Lv(VPmByJ?h}3D~#s@Ew!=IlfHH;N_!aZ1qx$4NX%R5NtsI2qMM9w0X?v>(v!v} z_N8bz(ybprj-+PEm7Y|oQGH6nI4Mvn8!J5tKL{x^C_6 zq?hsLQZ>fGKm!ccdeW%;$#13GTsKX+hF}f-x395(Fn$ufNmJ9 z^`vPna?^XpAA!EvSm{X{?%$y(_z+leli}|_7}O5+**%E-9Dgrf5y^WQgv~Sf@YRovgKdyu^sP*2loX~jq zk}RnygmEUI>;@Y>Y0RR2)RlP!uxd8fdQx!J-ZX@Hd$6uH*Lu>vv)yPJ^D$tPY_9dB z9a%$Z2lG{68*HxoZp?Zz1D#-g0_;DVYdtAwR9ZU2+wM8oTbpY=sYAeYy2;bKlKWF^ z40843Xgz6v>ihJXc_y&zHrIO6t9AHyia2*z6~L<5Tl6q3!Mpfjz3V@e#&uBgAzniV;1kWo7 zysbw@=}DclSEtvU84NzoBct@BuQQj@P0lO@-{6r^dXlTmVfSqJu*s98k&3% z#o^2=@Nkce(vv3Nxl3s|F>GSWTrlNOOuiNOX*2%+mOuk2Os5;QF>C>k1u6rA@~}PjMkF|WuO_nJcq$g>WtBo za!JIjdz8Tj!vCiM0`zjAAm1Tyb1{@rK3%+yND@&14KpJ3QFl{ z*qBf;WikN1oKa9pN9D^eqQ#i1003X(C@7_)0w*d7SO zl(h6R861Jo^vHs$@5Y-KQ_0|Zgm$?Fjdav~-AMcTs&~I;!o8VL1|^p4?_yI!YdbJ`r=HUeIP*Ix0W=2sx^uUdLuyI+|V( z5>Q9fyW31lM|q;uAjc@wC)i9&N2y|DBF7TcSJ_NUN54-GCC7f$kJwC0NAYi6BF9bC z?;B=5Xr9v1C>+y4KQ{Kk2g#A~Ltc03s1aaYFErjtYZ&NJrJUq@|ZJ2!CE@1Q!5Pr{ukvBjOyuc z0V5qO$Yz9sl~4IUEvIN2Tfdn5-!fhO2OE~b=@j@7G46L__1gEuvq zcAQbtQJ>b)$-$9e-~l?KrK1a{dQc1OLTft69HwG3XzA!q#&cwCM0vZJP)SGgK5n3j zJmC!x`#a7dX04>7tOY;I%r}#XfG@7Be^}yp0cb)JDIKl8Je?YIH9OAJfQa+zKjH6tY*olmk}F64DwJCTT)9$&%I+>8L`={zrlxiWR!GN=Z8~fW`l1q8IP^0rK9VAe<9K0 zaU`#qw7p67Lt+Oe@RrTKM<`qejdb*H(^|3}zbyWg5QA8H($Z1u=F=t44wTo%N;;~v zFuSxdssc4(%m=QNj=J#Sucf0iO*hG4FhZkDP%N$tD(PtZ%~~?J5TT8c1(kGk;CEDM zC!Ij(k_pPjlyvmFe~4`CHTYNejFygW#QY&Mad1OE5e9V%8drD<9sv69h$aq+a{%$Z zdxe#BlqEDwZl7vEd`myV&ezh>oQy#-(-VB4d&Wpd-FymAH~z5wi@)wY!A3e-8j^<=F~16S+mmmyMyEVZbD4*O{bJ7NLn9sa>QR!!w_d_*_-hgd zId?4`m3p30;=DkC1{>+9M%OXKUzb)LuttV!>1g+`I&$(}K>cj2`fi-^)L-HdpjkFn z(oupNIVIi!hSxrcNVJ7-i&{4pgQfnPdgq@!YoC(6B?Fgw;C zgIxb2&7^cx=T;tx^8y7LtfiwBfBVSqq1r$V4K~tIy$(@mJa3*}VEqi&eK$5}n1co~ z4gs3QSnL}k9j!?Am{v010=CPZTuDbqOIb9V@dco3W^yeZ9jtwi4m17=WPe4Nhr~8a z+g|c`ITW|0qrM5BNoJ&@an^d;#v8jB($z4C4HcnTEgc>2o|sPXY}+B!g@baXv~)E2 z+Aq4wd^FfZ-H_?Kv1tFA`1>EqtIVWII(mNo7?r^nx^)obrl$51*sqLqw5~GM;3+;L z9W&=2%N%hEDILA7R#na;J<@r33iInhgtc^(rfC}4ausA6|JkyZj=X-plkN3JW<+G| zN$IFT_35&`dC07bq&?ktW0{6gWrIf%x)Mo)S~@DTa++-MEkcy*k98;c?AJ!t#4Dk) z#l#3@xaZ{touf`SOTFMk+rC#qq-|cQ&!&W9T4j6)}oP)O3rCW1vxVje3n~d zMmjqFX@zWOGx%PQc9e9~cya;R&K2Ivsn+c5Z>ca%)E(w%$rQs`GiFY|NR*pAum3Tth7# z72ool9`mO(8$ty+XpRaa9kr`?klu5qCU|4F#*B2ds!A&Q#hJgshj_H3q@%j)eJvMn zsoCJm+}qK8H=ZkszFs)95B#iKJ8BJ;bQJQc8MWu&Q-s3Z8dE_f9gR*MC|mTy1#mJ9 z5!TRKWafK~A2m@nmIu5TXUqX%q@$$^Zpe1(gSYf(M@dH`*H)D6^amg1-j0!ub}o%( zIpzT_(T&)BH_l%e&Dx1_m_{DbQORRD=^EHGHy%Mck~bLHI&h_!GmV_#2)csW!6;gC z^9#9tZYd2Z7N>XDv!i&sXd&Jv<+oGX!{^!6=`J}l@!L_;VD|j(+?|{S`0emE=vAl4 zh6&^>$8RV8x(-EW6rLGdm){m^53Q(h_Qm9E&2PhEb|F{GfZF8j#cwwiXiBbu9k!5j z7~XaW7!1RvWs1J!oXYgV;gjU#-z~07Gg6RqIlr24&Oy$N{OV|CEO?ew|G-)rf)0yP z99w{1m5OYqpwa~r(|tg^#y;M+4I&SX>Tr zFh2?Q7@jK1W5=)L6nG+T3M2IBC&6x~!TB-mVNJHnG-6HM`=LFP%Y8{Q?4@bK5H zIg{f4Kk}0?c!i(9FJ``B>o|OjuYLJ;D<1xutym@bqhb|88#w57lCgUDYuE2Cd7JY% z&{-R+hrf;r4IysMdJ6Q~#_Hj(Ve{HhOf+YCV++N=pc+>Xf1OY;A;n{y9w;+oUP$?T z*Ts|7^IchcA}7llF3Q)4T%YTHCD(^^=pZU;jDvV?@3yw&T9N-69_ZTP0QU0@^d8hC zMFJcsCGb?=DkX~I!0Qe1>tpa+bPyGN5xD~Mo+a0y^4N(jK3e387OymVqRMs>olupC zg~!Jhg1nV1!)bC2`HCKD-bIG;9N{_jHsYkB%P4ST58M`2ZWqke@ zxn8yIL$1`z(bV0(OYmsqC2MiG?L!Y(QpB> z+xh{WQu5!4n3rqDgU> zR^b0tePnuHlW=GD_?9-;!VU$VqFBeZm96ZI($xuzkj3lh3jJRukeMB*kLYgu$YzF z;@->MMA8>)8qB^J@9?0grSSI%cwGmvo7nFPto(l)e^>4B{^s^-sBsrH9;e0?D@eYq zq8zuWCC6hi4$OvyQ1>a(gVj&5i??7eYG15r73@*%i#6a~s(rDE;*Ijf!o(Zpi@gZK zG|q3_it@$Yaz*=Mp9D@^7+CpY-$W&VE6Nx9y9qZ@m@CQ``$tr&az*)KgGHqoSClU{ zLR5NiMfqZ~<>6dWzSvlinZXt1i^+MdW6^2Oxb z-*H9xV$;M_UPVw*zSt~LiO&_~i_I66zqq1&u_dBXfGf%uTPZ3PxuSfrb)pi)73GU< z7L_hsQNGv?Q5nn?<%{hRm8o1&zSu!gS;`gViyak}?Oaj5*eOvt&K2d0ofDNCTv5K* zWl?#>73GWF5S8CzD(Q>e6&1gt$S7azk*K8Mit@#ti%K4@C|~T2sFdZ3^2I)iN`0;< zU+k->bl{5e#eRuOe^iVw=7lq&<($YR?TbYdrA1uQzE})V+R7#Ei^UP8V<>4~ETO2} z;EM9al8MSIt|(tDm8ksYit@$Mi;7<{RFp3kAS!9NqI@ygavrWIUo5-Glto4RV!ny9)+N}+FbK_@$ zF4WArB^)lYoL#eQ;T^kU#yVNLGtCPV-$x3k3nJOi;a0dkMc9l43v|xTyo`$ zJ@rjW6&P0ps%~TDi_L#`g&Hw#57gDh$`{*Ty*PDdJQ`@Cjg>FfW8Og;#CQeJI)k+@ z)*@sUO<{Z#=yU`ueX+1}?Pv+($3QO)*1p)8#OY`oVz)#;IRnfWfT{WjOW*oCDr=_&K;V0UeE14&xMgM&JR{WuwpjXzSxv&3n@AC24GEXu6?n@v!YwsnfC=7 zWOMC{rEhkFN-&=Vw!r4v7uyhJE!ASa3v9p5wJ(;a)=_HB{5sfOn`>X}PKLb{%={Y| zl{V|IeX$d5_R<*UNx)LtT>E0Lt{kD*y!{G-6|=ea#j@vpLUVcg24GEXu6?nCEg#bc z=6%5i8E$;B_px5kA?CBd78q`Pv22c*beZ`su>FQ>U+hh2Zz|Xn_!`hdjU8FU`A+#_ zRqE}eQk?k-9<7Yp1S+F^vE1*X(o>#ID)7wi8SRVZT5v+nt2B5u&y4iNnxBm==hY6p zr+Y^GVxMy)p>I5|@!&H(GRhYl_9O}=$C=yO2)^4RqkOSX33iY#XD)%?^~fk+tU+iA z%Fdau;8DuDue_m}d;vNet+Gi$+jcx03>w&M0^nK=i3(<7sNv24EA zsQ_kfeFFckGsYKd=ktts*{pc@iJk<5`kqt1Sd&-dseDtcaW0?&jOCZ8^2L(BeMdDJ z*8r+#rq;e#jI7EgfYKMM z6V^^lnGGP14W%zuy3RB)WhDTpz_6D9I8bxvD{WmgnC96RKD1^ zw3B3TJVJ9L3o2i%-0D{{xDBBrkp-16_8{7P8N7qgbGM-J#p;|1ml-cyVaCK@uZMZo z?~xmKWacmMobDOvi{*1}mWlG9Rdqu7Vl|g-m#{TJM;i)XY)1dx5)K6zZA0OUov*V_ z!UX_)2`m=Q_Qfik-%O6(s2^nZnvYcDiw%zFBF9zKZ`(}!VtzI7?A?#3f3unP#j17; zBS-8?xD$>+wW)ovmuqj5BQxqbZKi#(n{{%Nqa5m0Y^Hs&C6jRswM4zW&9pC8A@~+K z2BAK}X4)6C67(X+9Ml)tO#5Ole*PrK4%GMBO#5OB3zQ?rMbxj`O#5QZPpl%xThu?> zO#5Q_iYzCGFFrzXFvxW`A2d&2YzL0%puZpA!w1QcF-?$tYn3~xnuh7+vwqWXCsmfZ zsmh&H4NSwGR9O*ku!k>P#^UphvG{yrEI!{Df5lR9jz7A>=Tc+- z;PHDt!g13I)NKstnzFw4dRma#R~Cl8sm#4DaG%q2t(|Jl@HtB z_Qi^eciI;#Bi?CWteSYIeX*-^cs5UXHrf}fEdtsXYr^l8FV<4LmcCeL@ml&~J;ZD2 zi}e?;r7t!_yq3P$IPqHgVw1&d>5I)4uca@xK)jZ|*edZ_`eN(FYw3&aY|mPGnug;%tv3EX%mCbloe85z{R*oD)5Wpaw! zEF!k{^230`GPBLJ=GjmpYslW)GIUuljGB@1#qQu=K8yAJY-S|>f~z~JN`7jn4xZ6HqkXYb^GIe&fS1!5(@E8f4eupx2E_O7)fr0pVr7T?l-p+z5Z}^|u=BMq z=2h~6%q#(4@18NfSmT|iX(4~ujw5iEL-I_he6dC!YSS@3e>??xZLsmh`gBb~=b1;V zjURy+F2zlVkcjWyW#Vo8hUq&>WOmV&J|T>E0HGx%8R8HWL#U@Z2H@x|r@@1<+ZAA&u% zCs)4MgfD*9Nyc7vaVEeZC)d8%f5A)X6XT3P5iWytCsm!l$Fc-3rMc~k1^iab_+m-B zRiwwfvAZHYh-W4~@ZuyT&cxamtF(L;edF2wi_m-y%9YZ-*xKevC>p-Dt({=|bVJ4$ zTlFF*{{DyZbu+2*#bWH}OTBr*_aMIYRKxa)*{`%O7Gpy(8p2bgMY;%2;l9ifr;xtb zf0K{NdDKC=^`G<5zF5*dJ7miPkeTpj%i0&~wKzbww+xwWk+mm%v5l8I$@b15b32mu zv@faWorCV{ZhWz&|Gt$imPe?5WG$*rs{X1y zR<_t3p&^mAsC=;{D=JfC-t4mxTISZG@x^j39YgIovk&})TVuu-i*oUYZ07;^Ymau6 zFBW&kG1-oH16=xGuvb&{J(bGw^vqe=P5^iz&X}Ks;s{W|3=Y338)Rd(5NhexmStWS1+looC=5 zJ=#&e*o$<&vYi+W;RIm#V-1xrR;7NRY%DKAWjN?@RA^spO^Vo*fS0}rLhapJG``s4 z(zS#P(Xx1zaCTfIVJs3RKP`Y3Cbu+D!?W_gg;ogq%#eU2gOpY^v7j+}HFBWaqV0wn~M~ysu zvCUJ4k`K<#i809aD2P6%Blu$S1|wSsuE|--q5mfYT@@D|CReV!pV41aqj>25iEB?% zNu3(?n!RN9-m1OwKKM+u>Lt%(tF@dvYFP z`n6>!Ir(>sEAS4KvMc+ysnZNc<74aP{f)4}ipTceL)I2d9EQQ`9$!)MJzK}R_jO1m%nK=%u|TY)c+wo3Pvm6F!_~IoRXmDt_6&6J)fbNmTyzHylIz(m3AxTp zOGB=jhtOTuy0lmDzg5AI3HOGO>+uj+TXAo1N5^7`+rd?=Sqjgeo75YRR9p$qt6Jz& za&`J#9D-pbFLdiQdL_A51|%kzv;Q`7&GadZr&TvbFJygOc<|x$d+^Kd)qoF{BufFf zWWAxP9m$KCPySK_eXT8c2%D`+ZuA-!qc)m<@dG`qU4VTS)*tFJM>B(`@Cx<&i^P5#o!g?XPN)i zMY83wpow*l2_LBjA8_!8PIddgjmN5X_`v1%?yK={HBQ!9)^DhB-mdcfmtZ+g+6ODP z4-290gTY4<$FH*#4qWXcz3q;JSo=sD#NnOy#$}4-Nc2d&Q9e=<{*1&|KGLNjn8rDV zTTwpJb*^Y1>5jlF87m*@p{Rs%Mfph2MCG(t5ZQm#Yf-tw73Cv+5S4daQ9e?*sCYF; zMfpgw<@j7tKGIK-`HL&cN0Rd@z!l{q$$3@eit>>hI4@YvAg)-_N0M{z!WHEs$+-{a zit>@X#Z*(dqI@J@QCZ3rrpB3IPo^=gR9LarzusjjH}KdhZ)bku6pws)pwfT37%4p7|Pr4)BPc!A>X z?(S~I-R0oL9S-gkdT=Z5?)u&Pv2=#MYkh0I?~jnlzV1AcNoFSL#gi>uQ9e>bQ8~&L z#BefTm?_5znQWsH)*#b97e-HQ@z2RK8dWw=Cm$Z-6Pn2?V zN&85HMX3yzw2w4GlN6L1n32nzwZ#i1xs|bVFe(@zS^;Tn?mlYRo{7TIkrvl1g zW91_qEH{9xv z`o%a2ke`i}k2HKqL5hR3!zu_AV6gU)k{mBfsTtP=3W|WGk8~qeSIWz{7tjEMwU6Z6 zG(VMPJOgN+!P-X($>Oj=7;gpIZDZvlbxtssjxfFibj@JxBW;LNfi5$C2lU0p%14@B zF$XmT%u@kF3t8!I0vVDe}3X%4&&D8$CfM{2iWDWzb18Yt9Y?IV?SET>wG zp8>rw*!W1_pITN<=B_sA{|JNJa9`~s)xN!gN;1z3mec0OM>_ePS~0H(R^8^>NAgQI zi25*Z2iC>r+DA(LGbN2dt-C$BRP8aqJzv`ZL$3r)b?v1X~3u&bdh;xu$(s6KGM0k`RM`kieS}k zu6?Bba{}lS^LAieY_5HzHdFFZG<+^uD7nqyC_z%>Mz~WOMB!&Aq;W7W4i& z1$M#a+DB>|eKTd_`JaKkvAOn<%2qf{#hJU>Vf!)2?KeKsx%9oMCiBc-ISn^HQpUc& zsTK2zVAT!RKGMob*=gNy;I=?LG&-TbDAL-_rXVixmvl)D^ zdq(?6FRzu5%lZ%eu4hL2NI&bTWqk$rZm%|1txrw#br8=nyF{W=G>(^*96X~(M)^ps zM>M4koGAfb*(0NTq}Zdk(R|Ld1n=UJQ9jbrw2SE=XU2k0_sA$8Y1x=5bdfXb!FPIO zl#f*G)*E`jnNaYX9vS5$#hP+}I%3CLAHk^uww=Fr9RG>;LitE(7QK?0B;aXHM!sLl zN4h!eqRbQpFYl32K9aNO5t(TU-oYcIe54w8W1*Wutj|dB@j7FCq=E^X5U-oH9Oxg$ z@_SDCNLI%GXb&GXhk;Job1NUI<-|jDl<_^FCuVN#Bkex=fgC@%jNke4>(}^5`wxDg z#3-lHNZuncK2nLEho~S}c{eUY!W!T!J96?RPu6~EGq8_T3Re$*`bgM^O1l_q+{_Bj)1cNX1$f*9SF1FYzGdsZlbA8ObnYadeM<ar66OTpOJE7JXT0yigA3zYHPh}PM`hG& zFq^_hs_~HuErOHN2K7!h(>_wRt8pyH2-L^fO#4W`XSO28V$@gKO#4WQlBIzEg!;cW z(>_w!G#TJOp?=$D+DBTm>plD@)W6wG`$!p@;vs!;aM&iqptd2oRUO-x#QHVY^HsrIF&ELe?on!Vdg~h z^pVQra1Q#oXeCZ0N2Zv=?3;M(Bc;QghyPO_N!;keg2eq2jK%qlu{ggm7Uws{W3g83 z3Gu1RV?I52%qJd?`3UDRpA9_bqnXEi%<`BIPagA;$YXv}c+77Ak9lYFn0G9Xc_;ew zuE1_kK9al-a|V0B-AB6373Cv|^W4Kn`U&pgBgN^ClJ=3N@;#gX!ADAk{crn7S;Um~ zk#dSD?IRTyQ|>-eZ(fY{k&20c_K_;^l=6|Pir3OdswZAcA1O$@mOfHz@ml&w9mH$t zBlQxmrH|BKyp}%FNb$N@@ecG~%5mbg^pU2E*V0FtBVJ1%X&JxPKGLq{PvmECwH~Rwcp^}+!P-Zmd@b#gVOk5qAKU0ThXm7pioe++VAA)HY@(s}&f(PSJc z2ppgz+DD>kcPI_sLaPo)L#ARkXdfvcU>^EEK)JV>QTa&m(k!7EJmWkN`#a7d7Oi}w zdTByrX1B>iz+tayEtfcqu_V$*>NGbRrQpVYGO>Lm&d8wlk+zfxlgZS*^lI24)qmCW z!0$3smNTL?JEQxr>hNf{47K7=1g?CfZhh0ql^takB>oDneWZ_je@MPWbK@h8KB$oP zk@9|;Dzg`LR=)GvM+&`HLGqWH8y~6uLxr@Dbh!O9^ncwOT_0kI@a}6LY4?Qq@+c|* zUeY6@e548oZ^}#q@Gd4J{?u>p3GE}*ybycpeqJzA1QX6`4YbY`eb9}BT)?HBgMvDZ9fd+z?DAIPCop#kJNv9Hz|A+M5w$8 ziq(}t1(lB!qoi8&ID}@HplnR}Nbwq}rEUP<<(|<#Qol=na?LJ+ zU)34oBaO|wUgEbveD7X;LMb2VYKOUU|HQ%Ve7>b0;mtQbQo$iIlNY?0d&c-kI}^O4 zTzs+xBG8ya@{>^cNJZX%p%DK3=mRv!VB;gLzx|f>GM^2$(36K)7hC6{9n5!v?Pt!P zhsH;``E5UmZ@nu(x6JI?N6Ip)Yo9+BQ1}AkB;%C1%oZr+@t@hbTRId_+!dW z1orEY@sYx(^px-N6`)%Yu=J6Jlu_NZeFFMnu=bIPJyc&)3Hsw8z#uo@_(<0~Hlr&1 z-sS@{r@HdhSR`zC6cPq|fmjd}`S_`<3#H8kSpAkHj(_A^qvkWoRF1bK)45XgStEeDq`R zXj%J6U$}E5Y!(Gp4%K%`ACj()#w$!!&wl@ z&q1@%#z(qaZa017Of~TOZjBiqDb4E2vYqbWgFM<%K2p0k!(}_Oz?XWoqx!G%`F&Bg zvj_aNTRZYih^qRpsv9$(Z0rF-AKV&KLFFU)9L2M9dF^8k#((|75OE7drm5px=GSzO zGr7S1Ib#k!<0JKG>|=>`YJ)fNXh-=-JEl&P?eqm7;n9xrkv0#AE!SrO_3fn9vaw?bU3P0s2DOj0DdYgHk|s$OuQjD2{1(1Lis?v242a2 zMYr~IrT}){fdj?1f0b=$(I!Zq6F^*DNa*-jGhw4AZG zP-gadWg8d85-U{{yu5om#z&gm)nz#v0k+VM*glf8lgsLh@(7JQe53|jiqRafHEvvn zqF#JGoC?je^0xb1ex061=rRV;l}p%!xaxgNc$|N>?Ju{0!(pfKBaE+Fzi^BA+!x_q z%XD~jD8l9j13B4ea8>&_lbpT?yV5*Ik3^fkLmOFiGbK6GbFF4LCbyo!WIhpzKLbyp zD?5ywrFru5SO=csmpm~!Yx3mE%6R%+-M5gEn(^eUxzJU7r{ckKU3oG`g(&12S0V>F zhwx<0hjZ}6zJPe-oXnG>GWW&9>&E6J=R!=j-x>mGD#^?N-QjloIo`O0=(vkq zwfp@fSBJj`V^do}+xmBWaR@W(ur8CHEGAdHVdzRJb;pBP-D=BW>wJiY&01HGT!$|w zBiHrCFl4U$MmJ1t>pvn_tc-AF?(|PVt{3Mkk}LLnG+*UAz~)}?v|>Joywj!lZ9JxM z-Y@hC79DhO;W*@)kzp(BtcefEm8Jg{boCUr78^4eeKGA_7Ta>gyal1BX@7LrvSCG9@TMqN}B_5`#zMT+Y4Yc5(D9ysIw$d(IH7 zj72e1EMV5ul^T8ljAT~D~Z7<-|>Ppu7>q;Wr%;%jMn0paX#;aA%VDs^y z!|L0`XdFiVd(PT>Bzb~S59w;Nu|;vdsgA2EVF9E&t}5POVMRiw<;S=)P)~zZ$5r=zo5+r^(!)8_$&E zl#ArJG{*ib)q^Wa6#G}qHHs@r6q8Gz%@rkz$)*3p z6(x!t7jy09iW0@nh{`#xC{Zj_RPJ&`iDH*U2!*B3(t|(C~ zny9SgiW0?Qipox|C{fH;R8Db4iDHRFcfN)(eVzv7A##hQr>jkiUyNzqEt9h@0f z78G+~@T$lkK)U0q**nY91jZGCs@qtJVr|O*q&bY+0(G{r62&$Z^tBE$9s@MV#!3|H z84yY<8Lt9b&$zl+wi3lAUF=Fn86N{WV`C+XZLVCB-ZFj&^qjF=b0vy7PlS`#7+~)S z_z{6YVI_)H%QS%!Fir!M$;L_)EBoj+Wnf$qsJxApDAsuAQYyr_DNt*JwJ4T1S^!mI zJOpS|1T00dUbk9P5aUHaD-716*w01hs59gJKt~MLqFCqqU+4zoTR``1tVFSzSF_Sf z#y@}@6U}z32OVB`n3H}p{tGCTjg=@?^kFuNI~KSwP;ncpj;jX7by!1r?m(c%Hddn8 z(Z>N4%(xHGAR8-DEVMu{tzbM0Xo0~2N))@;_dTWIWp4-CYhxvf`Nexh`56BPbi>9< z6zf@IA(dnN0qC2-S`;gZ2mK9X9B&f7|1rqJ!H8mw;$_04p272g6|%V&#bO^$L+zQ@ z1Pipe7R3sDs6~^RcL(chb1jPHN$p2Vm`sib1jOchlzBQ=YJ3O)#h3h%bltaU11(?GPWOs+I}sH4eb*|PnqWdD`aymiq(rd zg}yVd2^MH`EsDMF+l6A{lg8=}*4O4*6dNC70QoTw2AgAZEs7m^)Qxg6-vYMF=2{f{ zxoS6+Vtxtin$5K+mUh$-I?4OzJ=j;9Yf-F#UmmK%^T(Tl?Z=?DUyEYbN`+Hf=6S#h z8E!!0OmEp0u48!Sm&-gXfpHeV0{hOqS)tHZ>hr?;Aub$G^UY z_&$$}62*#U$VJ~da~V9`BcnvITra0mOnetu-@v0xbK7?Ppu>Ad8j%-vyp;kx6KD8q z$I(>07fKY{-88AplmxG0GV=XWqS(a8yJe;ocvp{%62-RENh34kz-M@5lqfc$>u_q# z>$3rTtIilv%>T$-;&rpm0$pM(zvq-F_BebH_2;AJ1<*TtZY7F!Dp86?GLC^C_Hi-D zxwR;^^>s6Hq(?a`Bk}cXM6uehno$XqD{Cb0Nf}YB^z%E^6s)TommzVtg|8~f$(Pev z|I7TDMX?UJiuh9$TN&shcG3nk#MdES(fO@VqFC20`-rbwPXqA9iB|#vr6{(x@G>#y z6M$DXl%iOnUQsNbGYS^UmosWkDT+Nm^OGiEj?@5rjiaCx#j1L(6tEZoU-&2}MX^jL zNWg{w%?ymN!9&n&(1yvqgeZ2Ougf5WiR&qh#q|`%;(7{W-d=y61D7nSfRW84MX?hX6OrR2 z>gR2yMX|;QAdx*p{khGwDAwzvA2}=>eo--~b}aeiYg&TouEuvVPoQT=fR~-xkHbi773L{T5SN6pOx^lUfve zc$=5Jm=~i(u~;IIdqYt?Gcl(lF;6K`EV+0sMX?OxwG_p&iq}#U%P(F_QLKn~Ek&_1 z;k8&x`+{0#0h7uP=+yfW}dfEL9H zMcX3rET9E8R-)K!pUDz$2ij|}7RBnFZ36!t<(rJM>2CoeiiQ0if#+X?S@R-t^(~=9 zu}iL1^7lwmgwmN{LAjbz6q~tn9JS%i3IMNQG69@XqS&y63+Xw(jZJ}D>xdS`x_pgd zRmNLr4F(y>RO|*Vip{M18~wkcyx7dBM6uMaI96Vs@d$|h9p?~>R-#y)s{Ki1?wd>m z9CjpA42gd-mPCqT8(KW0a@=_O`5?9^#u*vZqS(sNmNHq1lR|B>LrN4o{BgL~h=#G97~Czb0+(GTm`ildR2T@CHKRI%q_(+ZXBVh>_3Q2rNCdB%L;N>Qw|*a7|9H=(dpR-qTKWw0qiT}@D|t_&(s ztn1y@GB^&Qxse5xC{{J5TJ#o#_M4z=Oo?LKk9Jl55BNRzj26Yl2fmb<@8A}0%Bznc z^`OH&*RDyN6o~KLE38DZ%58qg{Zj~tZ|O&P^R+0pDAhfg2?B59o-v}>%)~)dpHH@7 z2#n#7{3KMOSfJ&!y75QM5};KE8&Ry0e{LGU{1Di2Paa~GUUrjuGYIWfqkYfwV^&e3xknwjYDse*K`sw&4{d_5(_1uolJqykpBABm#g+8*D_e?oR`#7r(cSz*-ot zMX}HO@=zPb1A&G!7VnJ_#p+y)Mbnrs09$6yu0*jBDc{lv#(RPOHM46`Y-fl+ZD4#4 z$o`5jqFDZYPRW02Zi`|=4k~6uv9?c!(iGm=nU>-BhM@K z8lm5Ajme-E#TKNBP3L(F6R*UjFNO$PC^J>O^6hh2H#p-DUXC;7fG{0b6~A1U9&@G% zczcg_RL50sx)r4NoEZT=*}WYtiWQpPhsyDauLj@g){fdjC5mO9;%n99U?@W2ZjGs+ z62;2R=pkGDhENpzLXWV8`ay>q^4BHNSPJk=oUyl1i()_9o{{a81h3-Jj_SCo@Sq2> zomSvo-P{<1YJ*S!PWXQ<`y)qxF^Z^k!#;;K7|4G6J11kd+_f72r2j(Bcsw~`(hG9! zC|H-Asd+NK7qq38Ig67s7f)`=T?&5GoTB6`&XcXj`&zE3c`A^z8c$AL0q?0?kL~1a zgvs`$>cE*gvNi@eJ2LI-(}JA*L&eqR+?`CZW0(G{<4=&z_OIzbwq8q2ua`5R2BA2BS~_@gVywQW}lbdj`s1N5t} zOUUItXFj=>T`B?}?5x9b#hzCT;dPj;LXN)V3O&?_TsvbP!omwxA=j3TJMmb>u4t;= zV&pmxaapdt&9SsrN9&U-ZpRwr3OpH~TnoIRWDPHeebw+R*7O~^I&z(USb$uPdQicV zUHps<%#aa}<-1vrTpMPuJ{CW5 zE$?>Ru)ui3?*HAmqiTmmC2sGC8i%X#FE!q`L-NGCU{}QZ(x?uuw@>N$Q327$d*5IMTslDL?-%L zRFt?Pm-QD{l(-_7m5nP(TsaWY0MQRt{fAUu3|3v#I;gq z`LGzy6(z2e7nK=YQQ}G!QCY;!0gnIn5O%t~3;tTU=4%N>fpJjfxRh zT8Wai9wjZVv=^oLT+-r77g5T6s5u_X>p~Ws8r#K5?2O`N@K1lab<+4bmfW? zSH_CUaIPqEWs<1O;EEDgWXr3#qQsS8k=ccc?%`-?lH4>KN3`_-#b+42&hsUp7FV8> zk7<=*?6m=Z1jV4R5?9*!KBgLsQv+qRu@YDI7y3Yb8J7SmXJaL<c$SBy^Qw(9k#I&SJFKCPUjfk z1iEKqC9ZrJJ(cb<{tjeqG>t29Wl)=u^p0^-pp*t{apm#pSmeDHxDZgW2v~|M?-CZI zgpBI}H8NO>E7r1|l#y|7pn(Q!ab?Yz6EvOiOrZHTR^rNwcui>~<845D4Awmy74FiJ zb}|kFx^817u7tj=L8lnM2l{GbC9Y&C)SL=4_T7a41c5>Ab0w~E9ZU}p|s3>HseYNgWPgoEv_uCADzlG z&kB~?=2~1C)O9JeshRwCOl3;F3s{`{6VBKu4#g+Oaw^JA1`UzmuY_7$XU#%@` z5YN93EX3woT*(hD@_Un(lh2Az`EI7i!1eyZlfQ}CxA_}xfWM? z9{Whcc>k;e3$eKtSF%=0MX~YmW}N}MXmc&D%v~H#shPh3duO;2SF#n|MfsTfY{B+p zP}`p`)*N*GmCmu|)DkMsJS$jk!?n2b=|O2)a2B`{P#ujO55?!55?9h3SU{^d(;2*< zM@ES&mBY_beO^p3_(J!L7FXszYAKhs1N>jljO^hk@9bN0SvSBRxo5PvGIZW|>cGqT z4er{iHd(E+5?A8xdPq|^lLkDyM@ES&>u4Yi;!HX48Xg%XuI#ARnwD~=J$NsVj1pI( zIvli>Gn2vRdSsNiQt5e9I>wnT;QKu?Qc7u`W@u>|jva4Z0l&u?{@QUo7w?4c+&+L&=;!5#svt*_ecvX*#5?8*w^s?Ua`m_e`s53@f zsb8lV@w!=~fF>}O-*ZY_nNfTdtvib?UIDb$o?D44X~&MH?Tn8AoicN4aiykJiX3-P zerV=2;>yIR-{~95QSj4W?jpX`MMhjn^>G3v12q?vsa+7O`IhO#evY`}L z=1z_y=G+g!mosWkDXv_t`+>@!cmo4p<0vS_m2%U{3-|?qFMJe~;>wtH(Jh`c0k-8Y z3=&4z;6i{wH>+F{;>vu!E`y*VuBR{-*Haja>nV(Rd;NJ1T+&1)uJqdZT>dq41Qs=& z7q=MOFLtur(^_2V)%>Rnu1AQk(*6i4am6=I5o!c(UB*9;A`2>UWq#3@GWZ*z*gGR> zQHd+V8g`b!j0hEsEU3hl*~wDN;NJ)}bPF1BCC;M#GSd@$h(|_=D^-83keNB)%iS|l zTzP!1uT1O#J){##TxmOMkc3wOZrf0ZE7wX6m+&LNcN+?ErAm0Xgub}^*1tG&Ab_GxkDzdSF=ks0-zHq+wD+oaLRQ5N;eHq+ut^S>Y9ct*XA&9u1E zZslEa3_^W`Vdg~h6jw6iC=D7itr1QnN2VF4+{Klsxbq-;IQl;lSNQ*Ru_z+$mtZW; zZ;ZwHjj=etF>cT24#s@y@|aH#9`lLEV?M%p%x43S`Do@bAG18>!;{B+B=VTw6dv;% zz+>LoJmwwCW8R7WyeqI9l(-`A!)(AFa2Hn&az*uUBt8&4#FabX9^%S7E@^Qk7T>1% zAH5N(&Ea$V#-}y3EYdtXmRDZ2xxI7l&6%qa#_5V;>um|T8b+V z#cL_9ycVyexbi`~mg34U@mh*2UZ=TDDXzp6ucf#m>rz~ibt$g+ii{LjlJRRTu1q*$ z$v^q!+K1~O3|{N_BS4EQxqnBOxH?cB8!K^T!;72p6TCA}PlL6%(&K(5^#6(S3`QaP zTfm4b^*cgr`3G#b8&}^FN?cjfD2Dt!atWc^Cb&;^5a^jqO;Sv64(G&3r3CHC~C^b&`d zH4w!9j&q1bD{&=FqaiXg-((`-um<^7OT3-2BvM>yvNw!~*Xj-vTU_Cc3~F(uR`Yr? z>3u-2h8U9;AuTFN?h?Na93uEg4Zw^@z+v&PiS$a#Pf_Y-5$yQCLJNDdN@kB zv#1PCM`*4N8gb>!`wtRt0orA-?&0Xmj};PM1iETtC9V|oFC_n>{}#x?9c^*oN^#{R zAO5Wfu^$A0Sj1gCw-XBQu_+%@BKnV`XPeLWGcwPNLS@Vu!i>RN?eIDydo84+!Lt3nO%!3L0vmhYsT|{?5_wTt|XuRL-OsK+u};K z)*B=<;!2yp(I*k_?0ZPR?P91o$F^=N@e_&7>rNxz$8)s8L=2^gU zF&D>swfC7*Q!>Z+WflA2|No#|+03fMm1?_^(G#Ar1;`*x?KQApX>sMnsQC1O=a`A~ zCZ5B6og>a6pSbpTeiTbA;{?)I|6GO^SMKgRE?a(s3?2KUWi750{~2Abb7EvNa?bo3 z5ewHn998SwRkl|gnd*_Wr^S^^Q~s6>wneCKBn@hDCCj&Svc+i#Esd;2C9Yf#Pb6F1 zgV5>7T2wt8ZOc+aw)g;{50SN~dN`W5z9L=V-5&EeF8wgr8*RjulEIbeCTDVi`*X&; zHKfIrjc4-6c4~t+@n}bhDefQut>_xl*eU+UeGq3~F&@ zaM$uQhSxq6p_^_knjVhM)@@4DIr9;mPP%QO?%^nG+B90snIzz8Ib(03?%}9vwSQV4viZ0rj7J-5cp6W2O6iznOp4(`M+{RmsAdpK&HqP}d$4?Htx?4#X?D<7LJ zB1dt+vbqslT#3_k5j8-$l|~-o%A@pAsXy3wHy%M;Njnm6k&~?hSDPXG$vGE6*Q*gr zVXD-DS`kpLG&whLZEs0TP8xBAocnlkca7sPP*&C;=NX=?w_!SZ)H#l>g>LZVr3YQf z<&_g%20i1+53~2fiy4aWSDtKgz61Ip3dUqKd~vwW{8ttaU|WWH6JfIbiqud-J zxIq=jRqX38a^DPas#R@|nohX&EGyru*QSv zHS{HvJtuk^Ixq|3O8eKF(UsB`Y(6!^()X?*=>0$K{`->RE2y*FMT$ENc+j z$id~@D~*1ZTTTB<5}yD%XJhp&w`}F1v!OZbG0;mJt7o|_vEI@~?v}=h-Q|NpH7;@O zp%bRjHpc0IvM}bAl$|D7*h=v%H|`9GoNO_;%J;`x__;VbV=9*pa!}^`(0Xo;NAFNa z10f9MEZrGBX`P09G=FS3x#~FQk!yOqfARFdsf(Z;9f7=5a6IOn+5I=UN^EFOu4}JW zkn6u|X~;Pn3wPze(vO@=`Blm0h4AdPrN7Ys6D9-C<$KGISc`$Z>(963)g#uN<=_$B zMc@$zuV1OlVb%ZVUUTe@pMshsY$JNk*~Z5KgrOXF{&(Y7svSO_xV-dXb1f)!2u7jeTVyp4@ z%V=`x7rCMYB)RklTu}m2b}`o{t|$R1kEleufQk~33W`cnt|$SisHkM+iV~1Yib?=i zlz>!DRH}1D2}qSir5RV0fb_Sh^x%pTkm`uaD6S|0se!1>=86)Knuy9jTu}m2OHtX& z6(u0G6P0sZQ36tDQMt<%B_Q<>m3LfGJ?Hcl74J|~lz=oyR1$JU2}r|5B_mgqfHX!_ z3UfsXNE1b+GFOyw>FG|C>qy?lUqBMg`T0mMUN~^h~1*Em2 zv8-Bj)+P^t|$RXww#eGNdtr`&=P~SfHWn;9U94aH_*WdSPDq9j#i>sjIRORF<1*o@7r9XHH^Oi{W4e!Na0gQ zQGyG=iNbLGk3nvCfD(|hlOJVZoFB;FU@aic>0XTrF|G~Nz{W~Iijg@VRbt!&sGp6M zfb^h^kF|$aEf{Eyjg^2Db=wd+%QysRr;U|>G;YRay2CgW=!(GsNtlvfluG zvau47LX!-j&WvOKhXWde+HNHv?N73ohBD3$l-FP_AkFUef_5;j0#wsrBOtYomxqFx zcLeKhb1fjn{+*3hFrNq(Y;!Fj)kxWxPBLE)w#DXJK#Ds4U%J8kEZ8NRYXK?uv-$Lr z`Ae|(HrE1DodmJyE$_RSmy=UG407vzwSZKye>VEf^JfFgV{7OUub+ z6$CHknUMn0@=1&3vKoT7cF$-5sp7(&^pck~1bnhgKzZ6C;{n7 zl`r(0+c^P#$s?l#r0AXRQ5tUN1^8!=j1rJ~B)CZVI1}d@)DH|1w%tbwNRzMmQ8~`! z1uy22Q3BHLbsH%icDz*&yg6t1YX_Z-@imJQkV>8?DKi7WN1Kd%zm$L!rR^k{Sq#3` zBclYQmMfxLVp&JP&wFH)fb^_-R0`(xc>?}QXN-XKEPpHFb+e-4Cwfc_^2qm50@C@) zesqtIn)Ef`<4y#48KG6-q!l zbgnGr!gLhO$`>bI1q74=(&hi+iaApQWVE3akTxc~C*~{$z?U;>PAMRDec6_dVOb3U z_!>t+DIm4Y?`tva3&0mX3Q7T~fp0c3=S+b421eN6-Iz1za`-4AASLJPGKfavdJ1E4 zJ%zEjp2C>7*PrLWB~4@kQh_QL<;8OpTzDnG;8haaFLtur(^^34@$kM3W=Dvx(*6i4 z0jW)zNpuJ6ZPi7nb!0&$ApLsMS_X$8G$pd25|DbYYA=Ip5ZV=4Pzgve+vSnLiwNCv z3mO3_@Xl(P`2=p^D%0K$@=*fP>-$q=CMkG2_ly*fUMFuM6aJtjbwUY9ajv$JFc6@z z4TXRde_=-ndjSlvp%9SL7H=$JFaTcyi%Ed``K;XlIoQUcQK zvl-;dJ~az+6ObN!>LI!J1GTM2K(f9mqy?n99eT=aKAn~CycUqo)=VOKb~BK!pv~0#cr4cOW2 zUz!=+fQB*V16K-2UHI_V0#dA?H8MC4p|vI`R#ygi<-`AMh*q)a*I z&^7-2xB(Pyun~|xhsL$;Gye`|J=U`;9%6aF$Vj)D{{@zcIe#7+0jX-d(Zt*G0}zZcoFj)RX5( z^bD>O29I^N=hZ#u{B6aP%cy{KAkSfbJ;?6}KOrhLKYya1Y`H5kL;q}93rIg3znAUJ zL1s;4?a7{VRyN!v+dG6zXe8}v0cmOV+p@uD2z`sBK`kI%xfdi`jQ1Q}pJ4FVc9I?9 zG_<0O{vliRN2oFfJvLeQoO7q_3E5&xgnCBSq7smvl$lO{^KPGn&>XiGjevC6X9xvx zCIoz+TVqB*`nceVZ09m~xJNrmK)QEvfNbX*c$60rH&bs4xQ3fP-mdWA(tByESG6qzkV;$#w>SkM?Ls^_(-IM>5&YV(_)@?HB>6 zVE;?xI0SfHH)0D&?R#IMnC>Wn@S{V$J8?RQYw99ic)P z>_@DLgFrlD&D=9U-#EAt;L5cSk2Ncguq)|dJaTN(_t9{6iY*~$L$3XmzA?G-<-%lp zo_yUUF}WI)Ye&w0JlP~^LKs3vJCk!PPbLYiM6OJ4)5HJZ$@vxWP%)o`=rv{)Pj*QE z9<|cj$hn;-^C!h4);1^KM9!m_Y@aDM7{99H2ziNIyuDKaz5c#+h3<6 z=R1CNYGZ21C)x1av4o3nkt=z=X5?xd^98vI=W2y@epL&7=p>y4BdYx|=u4FQaGt_>idq_CR@|~n@esAm zkYo1sOpi`|yk_E`1JIpT7KnxZa!RCv>EuLLIayvsv0QJPv>?~R_?Yc|qwSEo_F_#J z7W1}TX%aw-`s)1(w%30axmNg2H!|lk4bA=U?jf(P)v@&>sBh(X818_!ua9G zq_Oc6!IsIN>NZ&^9XYrC!d()Kb9klrUyWa>c4GXN?UhmEW@?TSxi9>g(^uwUqT8FNiI81z=@TY;WPO1NXJO8MOV7AZ?U!7s%$4?o zQ&Mb4yu_W^zENII6)~Z_oMB=@bqw?-9xrwzhdk6h6m1AP;CIb-GJ{1%n%Tv1+* zcYJQ*1Xq-o6J1oUb47VMu|(wsSCp3%PgH(!WnqjIr@s~ORcP;(H3YlN4hnGP&#ha zh>f_<^f_xV)$)74J@QxbLPVBh@G8`Y@Ad2`)(Cqs+v%YvX*1T*+6Q#l#>%Tm5WJBZ zF}?|O&&JBD=pQpbwP*Yt$ogO!S6)T*VHIf_eX z=$R)zQv0iym4mU@XZ-yGgE|)F+?PjZib?*AQv+pVEZ!q|A;#{<4oIo{GdqOjJnG-o|o zSckbptFq}low}x_uryu|U!W6;g5`$m{RgPh`RO@S`S_#*x69T<{{*;w>xl1%Lm=Aorl} z&UJCEw2lsra@GrK#JnX~d&8r)%R7w1oL+qokCSJ?2%vF{#StNKLa#^n|C4wb&=!p& z?1rcx@dk&TarB-SL*8;YgU}TY@)6>w!)KFkc+eYSSx$}-XRYty`zWM{Z>SK z-X((n0XE9!Z6ns2^-ui^$osqAx{@6_^q|ZRZ%3VDUNUb4*23nuLq}3J$0&z)_Ad09`5>?n zHutN(g0ednII1SPhOa5`g<#8VKGc<;ayYU&l9Xeh;YeSISsng{16W>aC9P5^^+eFDmiTohv&xkhs8BwxjpDsA4Pgr*bU!hTa)Fk+cD`5=kpuZ8_ zi66r!t%o^w(-h|Uz=~_`=){fqvTT>qamvac!&`>xBhW;L$d_fkl#bKZl-?U8?*}%- z@RBSlrgWUKy7@Mhd@k5xo3p8y(s9;$F!6}wyTJ|`?#mWsO2;`XaBOFq%PV;u?5^P@ zS>a6SIB)fN5!YJI{2LhIT0?GR$u6CHgI}=9<}OSdm?s5Gr@8zzRiRL;(p@L*HoZ~^jUmPK0!l#W##oAAFA5_Dc>@Y_>hf) zS^09y>$iZ?|Cw^Bm6$U%Kt>x%|EDKDr}*Q!7yw_OsX3+p(`4&Sgp(&9CmH)GEK~EW6gV3(Xg3AB-(It)yUPS1YThRDF^W!~{nNQ#r zuAA-cF#gZiDz#-MDR?^fjOu`>T_&0E2Q8@+%KvHqKAVJr0F7-Z{GZ`|0mOv{P2HJe`&J^ zsso~lO}@eZaiqZi5i@OS|7URle{%Stp3Y|4|0x$Y6#ftDC2XespYwHN!2dx#$Y$FA zX*=2r{txPXZKnO70o9kn|3Q6*&9wisF+QB4wWx2lnf8B9=Gp@P2lcZy)BaE6nq%Pq zp#Icm+W$$_RGu|KOBm z-$vX4!dRT&7>n~8V{v|C{DRMOjQP~%F`phh<`a*{e1!9u&judz(ad8$W_iqqCy)6^ zBr-&)>ZJ-A>Rx(i7^6wJ=WaQLyYZ<6SEi5T9%4rxS(_aZj2KsUR4f_89 zEAPhD&ow0jmH+ZZUY|5YsDlY+kgF+WplEl#(MH~^k>FEICL3pz3{>PobSpPURs(O) z5iJ8PdAXZ{@fKRgK+Z4~yFtr9yRy#5|NlYxv6)fHKube|sXxycBWj8WUw96&Xe9$R zeYHtuGMh{U92UB+sl=rjOCn{UHGPZGByPMT6I%x2j0|cSXvQEfnVjafh={Gd*cMt+ zX11HwJR3@EWuF!(Lznf+s0Aq*Xh8L7a%Df61&JFOx;LUiw_ZseH=5cXMh04OS0OC} z_1xG)W=ra&aHLiQM3v? z#3Q3*psQ7$$joW*yCx%k#n^jF%Rs${r;_QfNJftyaj9~b>Bnd_-m*{zQzMj72aOEm z7?(`q51t_zj^b_#1&-v}{btK;GlJ$V>|GOzs&i10DXD zS7u6rm)9911MNtiN8+YH{3i+Z38iG91Uu`={WAoJ|56d*&DS!}x;E&$if@4|2j{s`oz^I@ z35IJK=x|A@e!a?jKzCnWT3XS`_VP# z55S(;vnv@WX2~0Lnz2_*d=g-gvuhcsOyAY?k#Q!V2-ief2AV(ivgD;Tw`HIw6BRQu zPn^~0%^fkA))r)6*2jUY;HEeH~{Yv*nG~;Fr8pd;^MLK}za9`($ zbI9I^CN8f|Vi|RiZuRFfbZU9Mv{goZ`dqLP8$Ua3xvc(>0(Xr)_=Mh41N_!hO}%mMIIZjBik=-Pr7vYq?j zuRPjOGSJD4F)h(f)HwKSCkA^njSMs=LsZ#L7VsjRF+T~#5ukz@9X%3EktC%AVOo@S~N0HzsbX>24|LluXAh6$Ur0f_Q`gRf?x1xN6A3_dMB3c zJO%&Y(Twjj*@}4#au;&IddBPvU@vP1`7Fm2TkJ4 zYw+K0?Wng#$v|H-2GCp%Cicaz9t@sasAVAM`@XWp5(ri1pgAgx40Pi}kZi0aco((kpnm5D(o>W_XyhRS zm5+IwqT|y!2?n_xwhUzM3Bd2cg}&=U#bo5nh@k7g*I&q$p!gGbF(oUJ)1PaLGh(t# z!>#13#FI~(pF=+|E3%TaK2MHY0}2Bm~%aaL$ec`rDhmg{TCmW{U45dYL$YVTbZ8P;If?jL&eo^Bp%vz zf?wS%wT7G*`BkC<3(0wtU%4LCBIhH1)qg6qo7Q#Pkn2swz32tW?*zF%#mo&KC%2E~ zI+dU-1fkab(Hl`$XhGpQqMo#l2eYWVeJ1tqp@+& zhs}%8xRK#(pFrIyK_510GvmzDu1wUiz}l7Z7Zb{r=_)3aE3>!|=5cQ3R+KBVf-BmU z`A6UjjFl_1QB>}6MY%FtMdgE75!r{$E>UqNL`JzX`$Z)&SClJrSX44|MfG7LTlVLQ z>ci%Q$W-Nu>cd7Zs|iHJx4EMFun8BHH(XJD*gO&yM5r6E^TA2!~F`OWLZ71f7LbWs_?71f7LEK!-p71f7L zJW*NB71f7LVo}*H=8_N5N-ioVxT5;7Ni8bZxuW{8$sj5(xT5;7$to(pxT5;7$t5ar z5~HH}u*okfskx&1uqh%cc~LQa*c2C~vRu-A*pv~aKrZP%Y$}RU2QKM8Y^sUUV3f3h zRZCQ+aYglE6DTUnxuW{8X(TG!xuW{8X)Y=!xT5;7X(KAvxuW{8kuAUAit59rqsaV1 zMY~pKRE7@xzRd0G+b2a;>VS9Z9bl-v@fiSgyHp ztrj0ZpW`^}El1K66b*yI%C&OFby@Kkrvl1gW93>kI98t0F)j{N*2c=UYV=PK6=2*L zsHMTW51SEh$5REygMdavz_JgUdu2;g1I7!0mKm)3u-QAjICW&a7wBJubssj1)Bi`; z7~cR2x3TKO##+>oo-_UiM1Ps>j=pyYddup)HZU6fWSj)Z&&H|`n{nt;EjCUMs~}K- zjrBvcdj6upJa=87ARDVbY^J(?(NxC0fCkuD^nVSEYbnvGQ-HeSPfQ5nYXfW8>4`>^T0uqO3q95-1CN`yfk4yF&A zbOqK^UFNyK3fNrtVKeXHDr(F8Z?L*H*L~RBuT_jDGVco3+vd6toA|Rc(<0_m!DiW9 z_hIAx)tfdm-wd|H=DH7?*WatrHr{ukU{`Fe`>@$NF&`b~`QL(lwz=-Z=46NV^dIxM z$+7(y)b{H>Z2sApmmV|E1y;c3x(}Q5S6k6n=6{3LwYl!Y=2FIj6a$|tR#&jzHrIXF z99|H|O3r*L*esjtK5VSn=$V=MX0RPL*L~Pn0lTRL^H8uWHrIXFEGYMgj`RL`3-;OO zx(}O}bqiB1oEir|e6wb9refXSRYL@W?3pvh2a=)*@caRq*@n z8Qq7?^eUO;vVMR^^;4TFmle=a_FR3A2> z#op0>oM{8z-6Ny=ut_&Q4;|*r1n^lN8P$hPJ69#_A zBcuAT$u##l#lUxg^@Vv#w{2Jb)3krF^)^+&j<=G5XW$Hf?Kt*}_d@kyGvaz3nJErl z$z%c>F#`IxRXnzXg zb+b+bg))}kbE*%UJb6yiC_ZYQ0ll&3R(;s~)vF>+VH}-**kh1$>ppC9I`9y!v?yn0 zB))!4A2!Q=m!x7SSJX&eN}E1xE{4XZ#$cV@xD1J_%17ae(TB}>T&`q2wQD*%EbVX= z@u$PmylkMK}FD#TVXVje1VY$)v7LCIkDFOHzM?vYZ?1`RRz@h+r;iI5*SSqJ{Ct!VmCI&{> z;6Z3M=3v> zu7JFUd=iVg#*1r(?H4;)?rH6?d>WZo2Hzp%z*X8GLFKR{>l~GqA!Gf8P?pGo%3;}7 zvyBXvMyOU~LFKUIX;DK4J0ipvi2uW)$0x-)ibc;vXo*|UI4s_w31ntB_)(9H>ceJT z$Y+_k4gS9oaSUU?SDXyU3SI@!#gA?4H z;2r{5+})kU39`7mJHg$9TOc^W-660+gS$H+!Fm6>b?@z+f$yC6&i6Q{x!v`vzAe)| zGu`vsYUQw0DRWt10e~VdR1V9b(U+4nbX<+lW7OnQ>S?Crk_f z1M!GB1ogTYhb2p%^5jW^cq*3}hb8ImYUIg>ctMvLhvmQ!csSJ&uj?}7u+&;tiaZ?< z@8&Y&uoQTJV{#1Q6J2H;mcKk*$+Hac)h;s*ONPq_@$ebMk6LC=v_OZY1CHs1PK}`r z_`J*Fe9VxXs`CgRkZOcaK{dkXpc>(mP>oE*38+Tanh2k2D#C}U8sTG6jqm}dM)TDJQ=4JI zQ=Dd5H%L-25=sXo$ugHYZHi8iq$Wsc>z`DtC;D0EOdgX_QicMLHYrrB7w8tJ#qQZc z7lJHzDW8OUoup-d6}kuHkW2Y2JnlSLHc99;kUN%sRsq8*r<+*44!AWLxoo= zgGV0>89e%6$l%cjLk5p}OTLE#4u2~n2X_I_B9n*x_O9Jeb}K@A9iSY*D~j`i(5XqxaE&2ZuwJ)TmF#Ymd`nE`Ap-MPc&}%JmZ#6 zGj4fDbNhpCYw32HZa1S1=3Rl^poK2EDM`2y=`VD};fNNx)JK$cxJsQ)h=wE(`+X8nsDaPT7J1rX3#!Kjo2ARNA?FQp; zm}!z%?XFkUf9=4aOAA$LWnqA zLsQqFYTS8FCa%N9Ig)4`uJ0Somdsk5seaIRlk^ki>i)P-a(dg|+#K^nxd~O9OVTW} zGI~MU;kwfzvaIYjyC6S@EB*E*!p|9Q9j+6*G%^lXj4#P0*PG3(wDi^dWCc1~!c%>7 z6i4mbREArJtIDKEf{eqp|9Ejc{~3AJFvy{%_M~yRs;=82mw2Jz-2-y8!_~gT5y=@3 zzS!mj>`miv9jWr0WbZ`gNt^BNQsZzfNIF0g?;+`lNwf~v`N3%fN6em_qGC{MPsZUo z^>0(bX@N4iSUX%%r@a#Qr8rP^#(dz4!?l19f8%gnDEqG@wnb83o2XV-61BsXu>Nn7 zI2B1tzLlsQuDX3u8l4L|?LyK~n<$-WhwHnBFD2&|_*4HJ<8bxazF2a+_;o582K^TF zOTkH$*fXxg82!szXJJs=lYM=XfX39V6T|- z`=NEX&b-b`>QgUj&g2vugDl-RTy-O~5}XMrhsD<6N*uh1_~X(k2Uf*$<8UQ-ol9nK z4b;KK+Tl7>IGx~;K;vAj9j-E4BFp#VWk9PfwhmX@g)eC$Z`xt7zYGs3=#)Iq4N|`> zK0(4OlVlyPqUW~As~j~KwjYCRf1xJgaGmd{MZQcxIV?5~*Mjx>i(Ofu$`)IPYkW{G z8pOM&HCPABjl*?j6;T()BZ0;-R=GE%jtbYUDd@D} z^LyIGiw!|iGftF^G7eY&T?Od`^L}7MOh?w?O1%{IjAtM`&(5kHuJ7*mr2_cSb~b~Y zHq>1Mcg#3kyIV(fO7R>IknPFy)jEftLmaLL{|%F6Bt~{7p2L27P|3#OdX8U!RL{kb zQ|;@XjlGvsT3!ww|w<6r9M9+X@@KKrP`F5 zcY7lwwejoGI$X0$gitol83I1euQTg#g>@M!{VW4tAJC6>xNeU)A^jW&KOfMKexlsc zt9PWI=ip!b`jHpaJW=k;?%UE?!XM!OVEAeawZkw@`8_2Hj}+nC@{-Y4B=(omq$L*|GoV z73YM4cMs@CJ6xZlrl!xFGah`Fe?P|IY7#3aRpY(60ert-KY9zb!?kelE^5e$SCI6? zuQQ#fpC~soO)lv%BEFr+!Vqo?#q*jU^v~fQ(pg6EJe*?>dFybMI2Tv?sR&*tpdamU zy^MBV`soDT*S{a@aQ*RRCwV3T&M=+04p-fWQ)o59e;5?ta6K$gmrjCR_2c3GVpQ(7 zvx4JW`f)RPpCHj!FgBj1R<=4^s?&LJTY&KP?rT~ClV?(3GA2)EFVhkK&5z}Hlk;Ss zc!|ijx+EU{mX#+xBd?>F(V_$Jzj(6u*(>Cm(X}o7FP$rt(a4H#`@kDv}z6FgO~`8iZ!y0Uj5`R;vbfkhS{jt7`s zJ_9H0dz8GIJ1Z47bt)cjHhE`l@}=*afqcVm#c;fx@!N|pc-0@|?aO0h_aiU+w%_1? zVX|)IoY9iH2pb|GS3o#2}Mz#Gv8(FlhL; z3z`AAQ;3GYwW8sBC}{W=3L3tHf=1my;U92to8ir~))bb1d0yPv=-@5go5GG1{RzO+ z;eGWm3Om~MODu})=}m5WYc%~~e=fzBb@xeM~xrTjxjSj*nS zBRZFv1_dXl?=YyI)jNc|O{7qH?c?9MN-8fia(?j3!*>DP*bnQzGTVDesRZ26FGY8y z^7@TRdtLInBWI9b9xZn&P z&dT{+N8tHK;LpC!(TVlH%S&MgJA{lQPZS(naWTZGLHrgWd*M@8JTdhfcMtjIA&f*m zHa8zkLMfpkF*qzmdm;%;#u zsiWdL9}kXqG*(QGtXsSnoMaL3hZ$l2EaRWRQm9w?zosiU(i46ik0Un>L(nTsknsd_;^rn*+2Vqn^dgsn(`K~c4jWJg6(c^>D1C!r+fK+;csiPT@c zG6|egbw-m@1+2d1v#~%*sdz%C^0Zy}`vaL+O{z0hnwUC168oN!GHKWYxONqau%IyzYq0K zz`K2&6FzZC-a1dn8HJ?f|3jk6mRTZm1v=JT)88xbGqI)|;S2tykM}8axT&e-+Q>Cs zxI%T_$Jo#kRo2hKihF~S7QxAUd0AWvjvSN;y+p1RF%7AaB+@V0aA*Z|M zBvio2F{2{xC!>v1?SI#X>3*K+_WMfGUrF6I)orTE67O3@+DUb#EvMV|XoDkSW%T`P z6wXPX5NC#W54O&fxI1x(OWgg%5q^6`iMt=F<4iIo?uzq-_a$Rp;;z&N70J$#&;cpA#9bdXw=QwFR!wMa_pX}I+U}XAyx3MeqtQu6R}~(?SZlktRAeScw6=R+MOJY{m$-YPB0D*vwcVF0a*88b+x=HXZgNDIxci_Y zuQ{Si+)*=L6XMRbX~{7h_#J0Bxk;w~mnc}o|=y?ImOZa@;Gn-X`U z=Z%q1u0co{fgxziVVqt@yZo^AEKR{0Illreb+OhiN0;nLMH%k~I_P4pUADL#MwJ*} z1G?j4tz8~2K9RaH{=}%bUAERPt32LJ^%*AxO3iquS~aa*zI=0>dNckBsHlszcDbY8 zD_Y999#CV(vSC`ge9{F^;%3|nXn>2gc6s$sKRU*E2GBegYwdD#$M z|E~Iro-sZTbj8KG#9e|EUno&C;5R^2La&_=IB7U15qR2w94%Q*`P>Fo zbC6RIyi7oj{C1FU!2KW!MaNDP@V1=8JJIteFH4uWyS`x_sgrXk@MzPGDRK9<*LtA~ zL6%!;O5E+)JWKFipu;ZKCGLD94+*{jbkD`Q#9h|`?*)GWidfRTNV>#bmSMfE6LsL|5_gM}#l<&6M7vp{OWbWgIEI4w zWg81JnW;KtOo_XjgHVukIl^n~jHbk0{q!v?0l(@_M_K^g}W3F%?bEd>y{GTFIFwgM&w|K6g&!je)7nr3jg-C#=GRZUVzKF@zg z(l$<1ufkbAn{0`@DpMaw(pe;2_fIk6sI$2e!Z&3O3sG;g+~tA9=Iv zoyA})?fj<1UFFP&NPXJx2RiD`&SGCml(;*1tr1<~?r(!Vw6n(%Ud$={>>csjkrPxF z{u>7U(wY)?-J1VQ<$3kffMsMZt8Yr&MNI3Zn#_xXm38MgCGN5%N=BRc>p?TH)-E?C z?#eC7M0=PI0UKqxDRI|w+5^E0ftFirOWa-g^Dk<|i{A%!#By8W?uW~=cWwgRx7e1r z>y$M;o#mxF&EgW2c-^P*s-U2aO;jXN}jUNLV1 z*3#vs#NGWfP3R-@L0}_XZc5yFGFB#UcJKvY%Pcn~?)q=qK(Y9JVGqzD7wZytJC@+* z5Pk>04s_RITjK8A1qVO)q4zIfzVdqO14`VbuMmx5aZ*|&WcN=pCGM)d`AGcT(J2F7 z$>i7)ciDIMpm^LxOQ606yC=B3kD3y9`6id4{QO=!6`8Y5wk>fNG#N2xU*HE)si+4d2~l(@TG=LhP-JYfZV^kI-U znkU?eEpay?VH`;+h=k%M$t`hrvtdu+Az;lcw1*mbiN`E(v*x1D53k_5NT>+&vsqks2c0+8}+y(v-Lxw|X@72OH4Zs&@8j2pACu%-gf$j6-tyu`Vtd^akc=L@eME>P#>O=#Uw3|$sP*8C zbD}u=(2-LBN#(wksP*7e8H$ifY=)#R-%8Ya@SiO|Na8O@n)9thS@f7aO*=^9CM50g zOSF3Me~sQt&fnm70&=t-T%pNL$@v5x8Q0eCwvy<I{;tQs|C9y?#3oth5P@A&tNu=k5sD%->%W0JZli& z=rW@RKmBzxd5$4|+GTgN9(?dqOuPvq{={WQ4=$9a19?1Eu@f-p13ESrhy z4iH*(exp_AH(GUmqdkSS;ygZex#iP?TR!o)+f(IY=ye23>BAndJ)j%S&V1gl40&3YVv{{fcSkL#~%T90f}zmr^_lt5Bt zo47<)Q}oDD{4@pLtXAM%Y|bjq(RyU`j`1lTr;GufXi|(Gx%(%Fy5l8uR)GA@RP6?% zM^0&UmYf3!AG0%RJ@RV4#ng~zd?=3}VybZBJtT=6 zk#yi&iCT|*k|9(QuOjJzO_a{G9(f=VNsfcx5Tap_)l)e}kKCV5moG~Pp4sHs5_d!L z?~^V{0P#-}`W;H^ks*b4$o^>t#J^O8d-07P8LQDk$r%C8zix!fv3g{Tzl+jPKG}Xl z!g@}UcS5a4cIYsR=J5N+aiB1ZtsdFEYkOMC{4v~va#b+Fv%k-M|*mDxuE zjdQWqBl8U|DR>#sY8PugGUkVRf)4?mu-NL6rKs5cWTp)I;S*(nDqC#y$Z8jp$mdWip!OD9J+k=W zVe~8So{?bVEH`@Ox_$R(660k+s~PiW6%JPagZW{wlkV(Vk4!&u6Rlx<59o=V z-RO~(dk&$CjH5O1dz&*Q?uNE1BRqrQt{&OEjb>Jly!QlmC3t67M|Lv|YCpQ4JY@99 znIBHlRbFggBn{?7*(jq&X0M0}4b10&Ei@fjJu-CK4E+9q@J>6c)+0xj3Z}aFPYSw?qhk zCdldZb2DNrW`3(b(IXq|t1WA~4mo?j(Vx*H*GJzj9bQ7xqi=L*^vKSq zLZru_hVVZy1Z+E*=UwLByj*(Bf}~(h4A^9&M>b2=N_wn`q!!=mQR|VTzGSANyxaRD zX_Q}&R*yV)>MB*_oQ2@4{W`OH(T0w%aiq` zyqq%>e7s+0R*%fvDY~QjSq{D-pdYPAIvswHeola22)3$-5k zdxG22St2B5Ex&%`#FWHALI0H>P5n6W1CpXP z`FaaYiM#ae5|ipNEt0ZxqCM_yiMykH-%Dp@z^nUpX7$LL4e(`|7uXiOM?gPXkIdJ9 zxb!mte71i-R*wu#v6MXP0JoSVgr zQ5voSPriKu0diTxNaU^0lPk-8fH>&eOWrm-S-a9FJZ&<@ujK8;lfP1RJm9j!UGk2^ zWN6Ur<0xG>q9S>xGo5;VF?somijQV}B=0I7Yjrg?c{lOc^Xc))yPL<_t=~f4qdZpa zMMb!jwSI@@*=#QP1~Z`QyWtzo+K4KB2|TF2SE3yrP5A;E<-pGG5dmg)jD^zbT9?KnZF#Jy*`|WQmZTdzc z-@>$rRpD5>VY}gfVk~rTjvVA|&aoFwPLQ`fj~$J32KE1VZ0=I*)4@D8aK={npFFlI z4vOMU!&u0?Pj`t6+7;}GI~8cRbp7A8-E}{cb$e2`k8~TUlk|T`x2d|w^sPS9di&zT zU?o;U-zh;syDbxN6T=(a9QQ>+2c%>f<_$+o4ZBPec|yxDjnsseVSXNlv%}ksXVfxG zC`XJ8(^26mjI|8YO+}V+M9VO}RpbwjXc=aJiX7vJmSKjf$Q6!g8D^AjpMQU+G*RcCr zMOtx0*RZ>$BE8jIQp4`Hiu}S6UBm8yip=APu3`67Mb>ge*RXq~BKtU^YuNp#B4;_G zYuJ5Mk$W7`HSC<>dgO@LZjY--rm8Xe^1WIPaPxW%T1UA@ah za~aPETH<0|!){x)RrEXKT|fscj;3qa(eIIHFXO8~w_U7j*qv*N8gYz20(sil?bbEy zBGgGs#Th37O66i*!!FO>rBst~0iYr-)-~+zpY2X98P^4BWU;AX7i((_=Pu)(K>b~; zYuNqPe?9%jcskHr7wZ~!`HM89C_e*l2HIh@j0N&7TX$jiJKgyB+TD{ zeQ>#{VVAJzP0GqVUTAVkf?g}j4ZA`psZek@a1EeF274x{_dBguzHeHRN^?$6@F4*?TCbc{Yy~yr#moU; z=AUC~*cHLk7}c`&fFBRcks5aGv&WKU-2s2@pJQs+WuKIby796ix5rHY3~H10I_nyC z&syX0jGU7NJYPVLu3?wI{0kbvIaR>x2ju7)b}{Sjqg9;K6?{NIj;>*MuY3gB$vHE? z7X{?#8g>>$` z&;eg*F-VTQUb=?e!dIE4pYOqQ2ju7)cDLfjlAH?QwF7c=4ZBpCi_$z^pN`<&O^&T$ zceVL4;&pSz15ITtpL6W0#qdlSb>t>h;G<>@&_;J|!PBDr5KOfgp9DH%=QcI$hD^Lp zo(Bj&vvb-Sc8SMbryzXekAXopU){#AHSD4vTuN!ca{F<)pjJO69~_eylFF~RLdlZr z!+Dlevf+Z^Ye{9%n#gJ=bwo#e=@Il3zZ6xESUP=~`&Hl2n%Pr5I!sbqR%5T|%K%mr!VVdxLonyt8OYrBDG}3mHje zeD$hwlXxr^HJ2Ax4ci~?-lLIJDz@4niJOtc7iM22YDr~luV_w7aOXPyd;YCNEvXD{ zGmunbvIQ7Vm&0a@JqCk3Z*M6IsL&$1>|T+ z<;3?FBxfP`YX2OOR4!DBC>aMpkC_ZDsdOBkN8n9>`z}c8X0T;GvtErHZ zRG!Zwfk^=Ps#l<`VfXZ(`>6khctK`$_(-*qO7?OgsQ-p|U6&b2rELs6!>|M5-CTA@ zODZA9hob%);uBqFB$ZyPwv%TW;;UU|B$Yq2G)Mh6#E-hnNGeYnMRh#a5x?s)BdOec z5!>;6K-|HhtGB^ODwXf$AWs6slex@DDmVU0OrG3`=XaTrR9?)8=y)n4UejepQb}1Y zvf~Lwypzj}r1HDs4%yP?zC%1ega?39YxBLQd%R8G}-m%>BP7LNr#`l!~)C^npXhOF7RsaIBY-xCBobFJ(RUzw4#! zP*cWB*{i0EmvUT9887AH99~S*?pTcRQckM`k8Zh?f#gjfaN?Udq07cw*sXgy%78ZaxL9m$Eqv z9t^$#Y`-6u&tp};H@+wPm`EAr`^Xg}-M5JyWHrT0IkCG4<>$?!p128)K^E4HbF`OI zZ|Fa?n)hZJ;EX24cq#1{g-{H*BQHn z|6;iHQohX8$apD_j)qF^PLnIIym|EE<1$%F!`wY#yp-CHvPpJVWDd32;SxKQi$Z5# zqty9kNt}zMMJACVMY=Vf&UW(5Dp61H4xoJ&8!shzV_U(Ofo{53dnrXPHJ0D=-vjw@ zGg}?FQnsrPAO6NmsWCdbql#>$K~ip;s8&}JwU_cw$y?H61tc~2R-*P&K6lfPRqTeO zfi_V((_YGq0ehvhnc$24bBvdgs&^U5*$KYi! zFJ}rbrDVEK9T_hMaz7$$*{)@+iVELtxa*~~X``9- zQqDDhKuvgOKSuTkUKk&y;kq?mO03aKs2eXf?ttW!7=zv@&O7%%1XUumT0cgTq{@T;DUm(uWDYw0f)a&mH>{WhW&uJg7I zJ}^=GD~p`E-{{YHDK8_fkq$c}Y4A5XG+s*mP3@(}*+^RTtsZsRuGotsJ8HKcK+@T7 z^{5}cn5}+o>G3I&K7Ff4?WJ7)bv*seyFLCOT>4>fH=3lh*B0kV(PVU&a|(c$U0gC0bTNh>%fHF#Feu_u6bSDFTO?t70m zaZV}ls{Z{LFC|9*f)oW`!ksqYz5V*pTd2!+HQ6*Czb7McGLjbgb*2+_*{&QL%Sn$r zkaXCuN9(1GZ1h$-y8-^#uQThV%qntF`iX#V`7tqs+rmiNOL@3{l=SmGcy7*dj|J=RMvK&chDA*J~9?naV8;mR(_>$$vGX)nR(Kr5N zH}Ykux`uqQKGq`d7LIvKV)A~-Ve%g0$$OXD;0cD)s+0E|PsSVJb$mrDlp*gOo;!y(}>`xTU+7c6MA2R=M@|DQ> z4oizM7{$6Wj)uvS*Bw5k@^{vSJ$A@0(?TAG_rwnR*#feavi+Z5~ zSci78$#-ZGdOrEfFt|B`VmZFFv7yJ*nL3et7bbT{{jvlb@c7A_5m6PaCaQf!8Uvl> zyQY{N(!>XSr^+FW)rg7WU$uLqzwaKB_eb1)_Pt0AyQLV9rNgy_@9)q;-v zDs?5|WE^KuR|ZV~-?fEwKlODxRk!PPdrG(CrpR(0PL+1$JZb+#8{8Qyq3@qSU8y_? zcQ(BLVQtmj5(F~l5#$y@B*mx}a)r9s~-l_@hv1D70dAtQjpcn12@9*gvRgd^Hxsikr* zaYTD8vaBZ@(H@H|>oZ5R$5LO-6>B8-BOZ$^JvB$P$0AG5!x8PVG*)w!;)wQGTBt}J zj%bgijf%A4i1t`Is7POqXpg0tU$gdpH9!q}}S102yF%SaVD z&k^mhj8%~b9MK-jBo%qj5$&-|SCMF=5YZmX92H5<5$&-oP>~!Q(H_fE6)C3X5|3q- ziqznU_E^@c$j=b>B$l8v20V3(Hzkp%Wf5!!x8PV98i%p9MK-jQ5D&Pi1k?h zRH45(WIUELDs-1a#$&mtLT@=_JeI2}6m>Lu*QJ7PsYr5;XpiN-isayk_E?^%NHLCR zkL9I`)ZmErSpHR!pE;sE7U{VsN3_TCLFJ4_#CR;X+YO-BI5wS42yVv^l=>*&dea_D z$L)Vne8y*iF1c8HEW-|^r!aZaFo zjK5dQ)*j2u3mK>~<0?S4T&z8oo;hYvAI2Skx-phD*B;B7EcIwC<8eS!T&z8oKN?1) z`HWWsZE&&nSTa?sP3st+0Q$?t+GDwwqYv$8{21t^#l~aVala0oW9<6{MPM+3N^$MW}`6x4+IT(CthHy%q^r9ISz`A)F?E;k;_*|V=`81t)Ow_R>L zmaV62(RAjYn2opFZ#f-Q2n@mNClW}(;2cY^J=+cTm};H3j{w8xV1 z-|{q!a~gw(2IOdupBB-1z6-w`d;{n3$BrkzdM&ia5;w~z z$vFXj!RE;8r9GA+zb25J7vLWPa67Zcc5W5XSO3r#+UZ!5)gsM@@I2zV6)GV>uC=g_1L#3N+i!Z9JB+$>qqi z7U9iyPV2F}`IYE6!siW=OJ?h_JnvPX9)o@G|3-&v_5S6AQy_ zun)nIYpr|^o(Y$_9bcEBRo7E!)%6rwbv=caw>OyQz$MMMJeH8z(H#Em$Ek@6uND}B zUSs>!PL@4wJeEs?d~)}>Ka%(=?W;uXvE;bFkg|h2%kbZpZzXDvCDoFml6V?PH@=mq zJ(kQV`%B_GBt^l6;s3DcF;@qbmc-OZ%IcSBJ(l>b<2Y*dN`Y4m$k854uFdbHpEls# z{By)(sWt9|Wc&g;$z*7cCE~4V0#^Y1?n33UR492~;30q$E>s>%$xnv`-Ui@HV6~-g zv6UX(>*M){h)0|T_KuHK>#^+jp2YJH5l`hZo(~Y3z-t`z2`A`Hfbc-)PnO zjW!sk1n2Ro%PpTC-13RXEg#|B^4Y*GAI;qIG0QCSmZv;0Ni`=_gE%!M0+gij0^Bs)`ACkEc-cRJeCf8o92J;SbAgsyB^C> zHDx@OQEJL~ER)rgzsHhkCKh8nmKiF+cq|KfN_#BJ)VO#o>(sb-ESuH1cr1I=xOglF z)wp;pr_{K3EN9iYcr4e{xOgnL)wp;pPt~}1EU(nKcq|`z+;}W8PwO{p&n#U3U3XynvK_-95D`74W(9yI?rCM1lU zK44?~xc-#j?=|pPwj|CV-$xcB>35qLOMUlQCLYWFXrstkj?Fp(e#Yj+=N#>^+xj)cq{`a z>>!nS&TkRndwWu_b{olgXL}3mD4~<9!*fYWG)J$DUXb=!qW_dvRyIF#rFf{9)Oaj0 z7pxUt!*J`dgf7;|cr0rkFOb|}CRbj0d(wC;C0~7%qv#R%n}8hcu~ZKJA~`YU;#)rk_mEXPLH304ST+x9B-z2ptYEX< zU25v9jEZqs5?dfC)FfJuC1LYif`|kBX}_o-@DiEP}*aea_7D5pZ!35 zOF!I;Z#jmPq(S$moN0njrSYmX)2#NvV@{hFMjV~|acq&=1wZ|Vq6 z50u4X>#-cHS)Nkxrj-J#YIuOhGWFAFQa`4IBB7H>vL4Ho1-;}|9t|`h92Spd^3+Ij z9IXKQ-D2ah{M3Jdd=4D}`qN_Tu_Wwtgb1I|&I7P#mK%?y+~J7ME8csN7GV1^$ZKOg zmLqG5Qc|8h16Wq(>O(S;_E?(dKT9zfmjbF_XEz>8sZ$H+N5*Y|!o6jh`YM-_9S}ak zaMxowlu|S6u?(4zi8Aue-hk}=yfAgbyYIxtW2wCF2^HkUUP00=PE-e69OJR9$li|1 zGye$YS!g!Ocr353>>(!s!pRt^S+&RVW5d|aR-Q30NM%Fa4Rgng$MULn0y@ZZv_$qG zp2L5g!_Ofe%kb1UNiAb0vR8b)4CAqsi1$u<-iw^DuX{Eg%e{ydq`!yAdH1dUq`peq zKUYbAu@~X02SdP`lJQu!em6)uEP$kPoXEQ<+=dvBW%PQQ?v3-K&mwKq2*>EO3|)E-Odma?>fcl$LYJ@o6*dMvl<;fd1O zbR;eF>r5wVkL9}`>(MA)`#nfH?$@KOuhP6wZ<@+Ecfg8~gR6S6q86X%^m)&UztflwW6(Xgro* zx#@{1P=#7>&LQwHzs_uZm7j9eqE4Li2>eYzKf1ok{E&aCALqna znw%102)~6&Pw5#{C($kn#Asvh+9< zN#p%`v>r?J-BqNs<=`9qI

2>h&q4pA+C00{YP&OTvpoq@NeyAN>2V9?Oyz@K|Ew zQXv5bwRx_`QgdK3%7Sn{g91F3DW9`Y1+WHwJelcPR|k?-GM z){%ERPc~lxk>hzRJU#9hPlj$81jl4Es-^tRlPT(DCtuc{FjXG#v=b$(MNLer)dnJne1#_@U&xmi#f6I~FQQ@C4LmIUj~+ z!ChMki{#w7bg*z1eMYC=h2(29(dYOcc)ugxtxS{1S1u1+9&gN|Q${NpLam6wk&8DS3j)<1%zGUw`M^6gtz7xiD3UqmgM(YeTXdwxpn z&d2A-SEVBSne@AkL1sx3+3{Wdt{I;Hhr7?d_$kB4>*KMj?`uHMsqQ6jB20$NpNH>Z zQ9KPpF%itSit*>1A$Jnf_vcUG`R52$#t_sXPH8+&>E*3;vyAW+~DXfIP4+9@& z?PP4KH_}Rd*9AUIkDWNBjSmxj3b65Eim3_h!}L%S+K2I+#5~@L+>7>MB5}m{Fwqol z%UJs`u~no$N3;(UUqvRU6{)fr56z36L`4>IMEfu)Rb(Sav=5U`MGkR9`!Le;MUH46 zCX>o}#1ZYo$g)0iMEfwZtQe~h(LPLeHCIZGXdgzFo{J;ehmob1;E48N@~F9LaYXwt z`BkJ9N3;)9NJV;cMEfwsRpb|rXdkAGip=AP_F*cj$XbqQAEug$?Bj^`VQQ<$S&nEQ zrh$swLVhBLNMsLwGT5OW;v?II5p7sF4jIwmoEQM5ynM< zN;BT7maTo5QBR^cjTkou`q{(U<_Bpn<10Y7T&#VV;n#nmGmJj~Ilr4_8y}`XgLHJ4ablp9;js8H z?^0x>{}|^7Dr~XwVNQg$peQ(roH{@aEjB*Pyd+zx8{-~8{amblnC*S4(g?=WfaX|i ze3*s3m(Wbcn}D{vSo<*JhmE0CjL!mHa(>sfi_47< zGjnAPYQ*!81)J=0R)eEZWLED_Cxq8z1KR+lh3Xc}1}5E;l~R;M-Z~D)V+= zU0iN_n9hxgQ#0N_W5Fi7-1snKszjg{JpXF24K6o6Oybf-C{O8i|GnJz(2?MFg+^x9JQ<&;EMut#D{sd_*Yrh4)DYNImU+>aPcu! z+RA$%)v$Ns1fIU51u<9NBb}dZq%kBoKpe3 zc0i8yVcM;X=uG9Dj^KR)aZH~NN+J`xKV!GteCj9*~2I)s~v=7rf8wx@2veJTQ56ICzOs_ZB z=``n*0k33otPiuj{LjSe=ClNA$5=k+v=1|-*j9RQ5?eeR=ofcx?Zfm*-iBT=UIMhr z&TV{{ZokeV&mM#i**UEb)AmJSx{UBWgXGfN`Y@B0Y@`ohQE_P?o9^C6RKHqB-Ga*j zFJI|o$$qsh`!HTazV=~qE$E?kQWZPFgFl9Wc z)SQC>M!HaZm^0Hxs5$2Y@a2r2Q+$}17Y+0bLyXGw*0mvM~pz(#2*1 zLQdtPi{l0W;DO-_(ng|-YF(8W3v)z#S&B>dr2<49eJY(YdlL;Pan zMEo5kSzKOR^HZFjY&0*Sg&NQG7LWG5*y{P8$ME;B*vj}Ag3jZ$@!aJ9?(=`KW8-yH z4p4cB8IJ~l7qVd?mAkhsaKCll9L!bT|ka@nkxRE+$UDe5iqoI?DZ%Z$^s?x(Hfd5ri=ml>z2p$8sVB%CJEG3aeKPE)=@1IUvG z@r;()H_Je$=@ib+kcy>F;zaUfEO5f#Y5EQGhkx^w+B|9a0aDIa50H}DJdS#RlvA)O zSMf>np~EpeQp$aR6u-l=L!|C`p;hNMT6KP-Rp&R_SUA#^YouE~J$RZ=JZ||2=a$a~ zZuw~DmXBF(`S9eHk3??yMd6lT0B(6_bIUuHTi%JmyeqI9w9_Q_(yHVBnZMK2f+N~# zQm3zVn%*?#3OPf;t<#jeDTk(W$T&^U_-)-fO9&3p>j+B|dHM0K3XV2%8^ z{*=&8Q-kw|r9h)#?*Vl|6uJ=i`Gt4rkkxK zr>M;dhtJ-QH$!lJ#zMqtnsW9IE#c0GGI5?O6Ww2vQ#>HYF0)sNIOlV`aP7DjlMVh_L6a$-gT=X{CmT#)0DP{M#gChIaEw? z>zZ77<&D!+vT`&>?c1(~Tc@c+HI0nZbgK=%yv#!05)5*vsXb|&rnO^V$x*Zm{AfUq zcAC1^i7q*}!2h#3>TABcr;O8-tAbauW9`FTFAVNdWtSPJ=~|>4l9(S!g-xP$nzoz{ z6crUiF(fGlS+sPfou)@!qDW_X!Hf9k7^i95hm?|2 z7rc?lu};&|Xu4`kPayvNMNZ9V+G$$Tr;hBt=|KFmjQcW>ahgVtDI_`D!4LW8Sf^>+ zKM&~-KG|*{;T|W+JE3-(x?E39*ZKY93sA%Z23w~otp6K&$UFsDxQk>FP;)!Gahf{T7$UeI&=8BQ)0BTmL*kE1XD-+x%Z=02DAQV* zeFxA!7i*`f`>~jUF9Y3lv38mcoVY3YJrEtVn;tDeSBmHP+xaWy6MD^?mKZFZ;Q>z5 zyx|K-{UBBt2_;REb(;Pg5=#z(hCt23VR4#HmY65FAJ7nsjnhCV^(($5v}`vLuEr|D??&7}IFW4H;3A^a9vc=wHpLAJaA;a}H{rRUKXiC0LZHJO~9#6(NSr1QG z`iuumt>(!J5fYMbjkA`#J9zR;^^h(7N_+OVBH!z0Nm1OV>p=1?S$hKobxO=fSC1l)Z|OPM zQU`jbfl+j^Bi7(akmK8!(2J)%)k686!%r`hZ`QPJsKc`nDJy$GXS&$y6x^pmDE;#y z5eftK&J)$~wK-aod_N3XfxUYR6@&Jy#`>MuJ`V+sF26@g@#UygR2gfv>^YHd(TQQ? zJ&XI#zHP}%koOvor4Nnn_;!yEBJWd7)=l1NBRLnRl>QU9E%)|vXK39U0l zf5C4RNl#%$tuw{ph|!r6DEt#+turN6k%}DAI#VhYX~Yp--Y30^bmEBCnKG-$5RPb_ zDTj(o<%rgqq~~QE(K=IJm9v#2T4$1F9p{MFnPgd4Iihu@0&1@3svjxuBTIKqBS-5@ zvh?pbqIIUiYOZt~(K=HJ70JgDtuvKXk+K}oI#VSTsm~FuGgViSb{x?mjeXq~C8iX7&M)|on~$ln~%I#YKQdCU>5GxbrCPaM%Y z(?Au88HR|~nTDxIDvs0@ooTd+P)LuXdQ=)&a_^I4sgimOj}gw0*8#wv_pj+A!Kx>y(;pF zBU)!Vq#`l@LPYCK$5kX1N3_m#T19emMC(lFRHP(Fw9X_w*XD@UnJ%fE)`%FLX;{nc zR0c<)GX=p}7=o%C!$qahnM(bfliuK@bv6KPb+Oi&&IWJ5?Qh_}fG)aN>r5wlbf%1q zUjqH-Vy!dPj*og4jANa_HvtSmwbZh;&h$(1Gn9>ScA&g2);d%C181ln<4Qm^7|WV# zohkj!`qY+jJD@Hu);iOGM%}4D<6nR#xmfE=r#>E`35-_(t#h%~nF?JTL<<=o13GQ7 z(V51iK0zB9KLmOn4vWsze8|6ah;ihzcnAmvz2*bI-;GD!ls>aPJ6&X)0Vu1*MrZnT ztqYYn4O|MSf{V4z6s2D@s>QekP^iU5XG$<&CADHa6lk=Iwazs7-~{T;coEPF7i*oV z3**1be8!JuzfB!I@6DDCed5wSHNz$+?4mZwIC773W9$G^PD%^9>?fRKkW57 zNtq`FOYL%_Gi`}-o>FrE!C=K)Zgi$hB@$3Jp1%QDQRD^k7u)!`jI#bgX z7pNNZIbaK2Zgi#*<2O)q<~zXlx!mYXaU0&D?#!=%-Ez6nnS6KW(@5qY!8{l2_8Xmv z;!USn%#(tpcDd1+>d$&jzcCL6E9P>eGi@yOj&kw-X#m#L zH{a7lz29k_Y1ieJ^o(;-fM*KG(K=Itx{1k$H&UlKcqRWFqcdeJut=8G61;O@j_6E9 z>wT1EjRBwLpJQ~U_pz2zQeM{Y;M)Rnw9b_3%LFRIIcLDH1>|U*X+ed%l#O%#1NZ#x zzwKIQDs&|U*DM7R7)SYvhfwvFH(K=K0%iAad zcDyqJd=lsI$Bw6^dM&ihv@ULY$yo)y+2+XWrFEvwLDeMZ6!@ip9IZ1wnSVlZUW0!Q z$k95}h-TkYJ6@jz`1+my4JpN?aC*&0O--Qs?%Y~u z8oOyBePY}dsJETl=u8b0&nM4#gs0j$tF(|EYWG$JsO>`0nYPVZtmbSFz*jJOPSKghZ(B-lu;OC?__9Vr(U}(1is>+1 z4#3ws8j8-8r|EVz=Rttu7KYp4hnO>@;&t5ogz8d(FU8QRODMGJ5(=%lghI>P8_aXy zlIB|~Ox4{<<-T+tTx*rU5R?kruXeKRX`{m2ypdHBLy*K5W?v<06{hEtjuZpj8IJ#^ zeJfF`FeTpAlEmMUwEJ6$T7~)WGP@*RMACzAC2AGs>bkp<=-`4e8U}YAtqRk*;Zw;; z2c9D!N2@S>$Ky|cu^gu?cn$v?QDKIAmP3-?&!xA=c`6}Z!(~Q=88;A*zG{PbN0%8DCflk^FL#+yVaBe*_U%IafXj>ulWc8V@?1jvhRci!Gj{A3^8AbVN0%8D zCi#Ta7|go@yFsfka_gnx4O|As&VB$l8OzFJsycE+t1#+p z3Q%Fjg9oTE3pr#|m{)vD=YLRP>SF)9DoisqWmK3}YRafEoz;}T3KQif7GqSH9xB18 zFoSqXt1!dWxTr7_)VQcHQ`NYrF!R;8s4$DwxTr8|)VQcH8`QX{Fgw+_s4)A~xTr8E z)VQcHVQO4dn9DqFRG3Q*^2&SgO>Dq@3_)4>Ex@QSd4|>zOtOY}lQLYH-Ri;L|3>s4$=QL~=IaNO2y3JY%YMgHd57otlcj zf4Ysof5MxvOh36naw^!IaQJM4YxxBK%vgx1FcFrI zp|#xkcqXn2!#R>@RG4@XPDHp1Y&0)1Hbz$j=%z-b&UDI6&0o&AO1##ncO~+BpyT3C7Y;LR}!@fQ?hUhNqo&oxGgR{ zhD+2cOr9!BBrz$HGT21vOsg=dm*tn7BH-oybBqepKTbQzX%61TsHomYy>&2UdkSzaLr^X7uCxq(1dp z19h;o8x>|A^aF)Q0*$lSsxZsuZYBP>be4myvD~OISr_+~*$)Gqbg@=p;yijI_#V&` z7i$&f+U}`>BR;^7fd7ZJzmAR~eg601>IqE35G=SRxVu9L?y|TixI2rxySpv!zCm{( zxVr>*7I!E3?^U;TX2|C`&pGe!AD!;5tGe2IrhBg3jZUq)R$-2YU8bMBYU#mpY3`xI z`2W1(PBvGbi%a zjkF@Vd7q2D?#qg$kW@3OimG{^S38%D`r%f1-;tHI?-R?(udAoSEIr-cI1+EGK1&i9J7m! z3X}Qz4q2xvc(7X?vEhsgbGvYES*#b5M!6MJiAsg}V|q(!%S*oqNo(CI8WpDN^S0E3 za}I)^aVut2nCa2J$vTh0-+9#0&HI!qAnU|@iJyMZMP5Ut!o>R9+Y-x@6TCR*cpeq1 zd7rq+hsa{}k<`|$m|R1x!sID6oC@*M4@J@hw~9uEaRtP)%5csK@Xc<;j0)2$|1he~ zImf}nJ?bbGX5IL5)R=Q#f=9U5(JIWPx!q|q=fr!3_OH zb3mwls8pB=J1tqU1(G_uRWvHh{WGDm*l6%+ZpDlW^P=`*S!W&ic8@wrh50&glB{zU z{JMJ`qrz+}9D^Kh06*y>whGgxU<`_hkGe$Y-FPGwMm}I<(ZJ=^ zDwLd+kmwrusR|n0d0P~(O8WkpoFN>0bqk|gpJ22TkCwUysiStfN8}v9qtmm^KtnnW zTaj}-kDj`l6^-0 zb8YeRr#nf{L1)R|fLu#PLsPkx8V&9YyVD)X4m9txsSL`$yt0{GPjc=>mD1nH^*ldb zT@^1jCy(8MH(tF&%;|%+g=%eSjG?8E$u(ki57<2Ov6j)!;|*1fANaz<`TI4wf|u7N z*NyKj$Thz>+6-#_d?vYy7ljzKeGXKet!2^P(CcoK$$5v@Ezg)4!9*Y=J9?K=%uvyLrTt#^-*Eym+ zmOBD_y#rPr%L5Tf$PwkSJQb0Q98n(2D-kKo5#_PG7m>;wQ65W#hy-&)c`UMW7mg^8 z<%h@_$`R$U$aziYi1JwEyjE~Tc`T0jyh=Mn9qF;ixgY0<@>t~DZ*W9;EZ$dqCA$WBJxyB zB|Vm!BJzzR%44Y~BC$RoqCA$yBI3^x<*_sqk=z_n9!qNxDa{e(v2+lTIvi0ROIHzT zgNX51dWukA4r!02p9oFhkoH&xi_jttX^&-u2!$e~J(jT|a+o8^W0@o(S2&_Pmgyq$ zlq1SxnIj_KIHEk3zeFU~M?{pzA}jlIM0qSrMNV!+w8v5`Z#c!p5o9$+usJ%fOMFMD zJ(gO>e^MCEJ*z*^P#Y_cWpkIKbb|3bpv5*;9?R7cH|Z_oe}MMdSa~e1M{J=hjIRRS zW_&};TX`&dCLg0uj6VbYu(9%3ie6blX?V#KeZup9bZW_!$8!JCNXo}JKTuH{E05)6 zo?KLpac!W6HdY=>M8e@zpYfkSeQm5fmZNPtQhUbJfaVyiJ(kBO6Vd?2e*^7^gr&#w zqUm^=#P}T0WrKCIJQFLIrp1h31AR1Ddn}EPo+V!#_g3uBsVD(Dx!ys_V;NVpEu~_d z9VoBC+GFXtcn9TTTm`76jg`les7-My#kd1dHybODCBxj(6v~S>4rq#vmB*5Ca3CFG zyas5Kjg`le@W(8=%=j448H2UQGIZ7ns?GC$4D`~*%43<7>M*rt?2N$Si%zY#@>ud@ z=|+7Rrw7Vvu=ZHS%&JQp8J7X7WU%pAd~0l`am-tSwYRzUSZ1DGOADBf02^m>?XiT! z`$7AdF9%y|bM3KwtTdc1Fh2x#!sgmzSsFi>9x#6Z_RQwmV~L*Q2|eL$7wrqa44{*1 z?`J%gTyd>WJbgN_EH>93%a+;E$Ol&os|;8rn`@7y;rJYsjCo72_BPiZOR`BjDI4<< zVB>7AJ(d(dCQ=adqzryk6s zeZ~5tQ|qrimP=tP=__xabYNL*u00mt7!DfE)0Y9OWOMDYeC`*Y<}q&x*4}XAu}p5W zk2WwL0XEKX4*#kHqy(c`Tov#l#67#AB9^#&(J(f_1 zm-T?>)f;@6M~?DX>R)|9KDabn^TAhotIsCEX zcp>(M@>ohZ%F3KS!3UWfxxbXhvZdrHnKK)FsYj0TSZ;i&Dsy&$AMwah9!tx*OX(di z&mHiGI>$82b75jv;$^db0!72uba~|aDvxD-OBxy}yC|L`D?{O5A9!s7vF9hrgz&Ab$N{{8A z(Q^fy2r%8iNGtp|$_Aes_?Pfl67YQ)d=+s&g}%6-LSNiZq0j3Z$W!2!CMu65aAJgf zsQewX^2N=U*GjCv*vN8AYma3{oquIwdL;2(+HZ-mi+Y#|dDBWZI~iOORM`xPV;k0UAEEzx)^17lp3IWNH@JaUxBQZwIP znG+9pp()VW>q^pNIa7VQ%*YE`SZ64YWzgB#5>^MOYeV6&+?XFIVJCn;Z75$;wI)Eq zaR7V^EM{zbEPrh8K#rA&uV=QNk5uEaj7$^9avVVXn9a1ua&Pl__%Db*u$lH);soIo z{famQM_p5UEFWvdwH%2MPhm6dv0Tq{0saf(g>0rhmaehe!+$}%w#~H1@_vpt{1?Q# z+Dv;a)%V6H$0)=n*i3sYGya|e{{`{YHq#zU>W^*UzaW0dX4+$^Sr83bUq}3|&9ukz z^&?sh`-J#+!_0~1>9H)uF&%vS!FHTTXxRie=HspC(fGkwLPv9JFiyk&ryk2OoU-hV zi038fi}M?OaekvO&TsVp!%}e`pSs-V(}Vkb;&GpkaPITjz@Du-xa37|5Ffn?ZRj@;OWfJbQ8XSPF4Oc`V|B;Nh{<1NZP)+H=Tw zEc|@u|L|B+^MjF`6%W3{)_-AT6=T|C$tA|L$5KR$xqB?utz8IDsORyN09!ncBEIpQvVpw`Cy~MEeSo(`$>9LFy!_s3JCx)fRGD8eYk7ceH zmLAJ89@ZX9`ZZqi8oVZ&KW#$i70Q&>0&mk0o30B@#addTFrsSQd=@ zMV2GFKgB}lwNrlz7>{K~!YgPC1uTynSDzBfV`)2~x%@s-8A)|b;z7BX(qk!dY%ZFpW(J9(v30TyO24WXln?bfS6`MhOEV(M~ChH`^=goww zNtZa`GpQ9%_z}eZjB|)tE05)Noog~Dfm7#1!r`;>43IbnV@agPlI;9)>chqBF|j=s z&XI}QV+mVzSY{4zn?>YmFBXmMBy$#UQ$)tUHVbqM2$5K9J980Y4T{9#8 z3DtNkkKY8zmHDQ*@mOwuR7f}JQZ{W{nVZd9Zx>lhcrIleo&NkJd3nu^$3p!S(jLp3 z@K~1B33+|c$wN(SN$s&@u9}?2VzXIO!54VsD37J&#lK|EHt-WBNBl%=Zz=7uEGu?U zX8(uG_a-}1qViZajV&n?eSQ4N51m*%{6NlQ(lSX`N?JeGl@3&_M>NIDr+qVibMCI3?< zK0wlIlPHTRk0r$Gkj(MH!}j>-1O?XeVmP)O!v1J9##jK}ilk{1$J2I6P;>I$Vi zmaZ+f%k9%1h#%=k+WFdJIsW$onKKD|u6vI0SXR6#LgV>l+k%9DI7wa!mB%u4`YH&FG4s|Fj7WzOREw43=mun12cY9*?bgLW|YbNN#ebn+Kbf3mcgk`5`SD;UBP-8u00mtlyNOleKOEY8!L|`!=F`U^^HJVZLB<& zZ(c1VJ`HryVDp-)^FABt2(Q{pun5gPJeJ%39ZCF{;ujO^k4~;&P_vF5DVd{2k=Oa< zUd|0vFcOv?%hn7-C9V!s*I@0j>=?6Lehzg3>S?g?SkCP&MXPx8Oa_~2xb|4ytr<*n z8E*vI%9uZ^$apL{>P@19%+G*@+mqk#QHgdfbyS>PjkYm<3H07fu058k`%};z#_@gK zE_1p`7pHTrrFw<;;8CLk7Yoyg|gmG2h~-VOcRRl1g);$12OVUs_nD(&d#E8zZS>R27xSQflWFs=%9lB$B4MRWu$;+#K_% zHs`DX-|AM(cr4eC-IsMvgJ1Qivuf`@bm_I#&vixCc?{W4Yh+CUjXWeMKbIcB^PSma5U(kuT?T0`KEi%y=xXlg6hcoHG@Cfkz$XvD}Lh zO6fRf8~8r=I@)6?o9r0%;hbyWPu=Rs6H_J*^%@W|jYe>yBObo>pz~ZqZ{@MH-J4og z%!;G}oM?`F|J-UePu{cTv(?x`DYvl2oD!)Bd={+-Cq2+q;?R+GUMLu9;>%cW8@lSI4A<@C4XvimF)uqWk&UFXe=h?9#}IO<5;eU0*A@fq%4%3S8cGkb>e>@SN=AY z;HShYjFwxvH$rPODe(F!pSE|<0!?5${ALmZud_ zQsm0EZwa|hd|illRn5!>FXjdGml=a0%-k)E^1bI}gx`~M1-Y8thhlT^K@sRG6aFDr zNK-7I*Wr9vqx(n5HKjcYth@z}C13Rz9ec#S*+#XJQURRJsQ#3u#BAh zFdCdVPZRN)D!&AHZo!X=)oZF&r*2Hv8)SS!=N0Ds?KM^ZB}^IlHC5BQR}?XiM9~@CW%v}+QlL!&z!#os` z)ErSh%rgRt;vF-QBg%*I z5s^h4Q9ev85&4@V%7^h2k%JsjK1^Z}xx^9W!=w8&nHV|B zhsi1;DLJBim|P-~lOxK9$uA-$Iih@+A|g_YBg%&KUL}DgE zMENk?L?k6gln)~-=j4d;VS0(2l89&@W^%bk6o6yO>WE->bY87b@*}*dx0+BKN2S%( zpU`QXd)9cMsWw(V%#m_0=sM%IK$~r>e3;qmEX(5J$AQk;Sotsq(-)z~JoOWxSByJ~ zc`F}g)Xi$-@xEN4rgS8Jc z<@7u%!MHI{a~mrk#;fyIs>!%N&`=vIAEwN#wse3OZ645K8!I2C)Z9iC&iEgoy*5@p zOr?^$=n>Co+K1^Kc%Jq!t_{@CVB^D_C_RSeG4BD^&*s{P*&HiAt!F+1Y@W@v53}G@Y&yq$ zE7-p_*FKDM`6{~4JRI!0&9x76WP+1EF#iDd)#loVnSILFir{URAO-FO(aE(pKFq44 zTgZv)gOv}gh|RSR6aRZAO2WK0SVNm@A0}J1@05jk53qhV*FH?w6jv#b`3$gmHrGB( zhA$VW8uP7S|Jq#pFw34Cq^8Wn!LHj}`!LSe|5A76AHcraT>CJu)4re)%oC)<`lD0p zuYH)g59Z+Ipy2tyir8HHFbBr&q}e=uZLo$m*FMbVA_ZwJ^B!RR3^zVZ;L_a`#(W0Y zJj0C-bLnbnI>&q~*uRErAEsB0QZ%Fx@I|288asN6>z(pp7B`$n<2dItxFeNXMU|s` znD+Vm(0!gwa_|i9IogM5(X*AWD8oL39*&h9zdhdG|~7k%J)jRv3Q zk)wQ=CaIoM5?r~hb>Q1Qa+D8qY$e`e%Q1tR$edN+p&mKPhl%fVR_2@pzwD8te3%*!D${UYp4Z?Xb&m02 znw@z_ylhr%d__-yP9FK%hv_`15lt?HHO>x{m$Cd1RX$9aT*qlH<0?Qk&D7e5*|Q-R zIocrH$xLZ{m}_Nc(lCT4Y9#N`jSsVI`$$>}7V5@jlK9m+6!#3cNyR68w%O%;*@xMH z$nQSP?Hv!rMtY4xd>`T!z`H{EFg2eYqYN1L#iV?5;+0K6>BHPjTv1G!86c+(r4N&^ zMOHCoIRL($QBz7EW>~=ubQ<$&0l@b-3Q8a5_SA6#4gugB9|ffkld5<@0sjJ6W?-Zh z-jA{kE*?qBuc_*m)}NNE-{tX|s&~jQ#;>UwoR(ixCEuk&@_j4CJYG|E6=m?6DqiQn zh1i20uc^v42e(h^HC3_F0PELONg!WSl>y-YcuiFTad%b)3HmivG7^G_dQH_n{%)pT zQ&p4G)oZH6uzF3^+{JiF%xX*%hR$m&_Kjl(|Cz^sBEP1p%bSeyDf=ZP-r(fLyd%|X zs$z6_DCv8UFNW&ZRGnOW2Mz7w9Pq>TOoC2MJk^q~smd_Xm;Pp)8>pbc>NQo5yXBIv zsrmz?j-l>NrUnjAB41O*1LWjGH~5KnKjAbz;d^ViOX8jweQ{5WzPKkwpO4u<-s`w6 zjml}Nu=~DTxpSELU0#5Kymjm+lGzXjMyeC_CV5zs1lXaWi%N5d4jMj&zzvmzys$yz#6d7CNytl+zU9b6&!909kA(oTd)fFG*Mupu7!* z)0A_?Q3*o;_%Vhonx$%8z+(@^SuJ@PE)On?iWvW z+2q$$4Ne<}FQ<_&q2djIaG+MbB>F#IQ^i+Uc8K^A%YAWvqc6^H^u_s&{thgaaE(-- zPY)jF6Oa3Rgma(I2JZ9G%zZv)xzC3u_xVWVKJOIn^A6xXZ*1=KhUGqQ#6aE@*bK^P zlF!nPrX){WDYtPGFo*HnGP z_P3p;Ut&xU(NmQGVAF)W>?-aM?Gree8s z$ZPPx%>FbSomXkT1ZbzJT=Z4KN}r)a0?(9$ea1G~@~0WyxM*bLffiaY2A{{I`{6=p)^G#wt@TH<39{Oim;me!O2oi5*!{LK5jTJ@zR?Rk(OoCbrYWIWkc@O|!;c zl9|;xQ+(9gNmWI)7d^YJmN`94H9JQZN@7+0oeWFzk#x``%3{iC z%3LsyEOrz8v3rhonihEvkvW7PRh;P5C1^siX|P@9_KvYlVt*k1{Y7ErG##DLL2jQQ zApTh<($3dTQ|oMTEV1*OgLiVzF;3H#b{DA$pKPO%Fp-nwl~6fN=T2UsQGAJ63AEl| z<1}UL5R;}bKLU2jlZRT>b62AA%pZZhV9wV=(>Bk}tX)Zb>P64#PchNSxof9s_VZ~H zrvu7juyL9O7Q9XTacPwSt7N!#np!`IVTtN3fZEwuIZcz>HkQ?g0gbV-a+;clOp9le$N6&@zM<>@msF`${ zI^iGmFUF38|NjEYVz73aa-ME1KZi;KRW#T*O`~EjrT)BcTY$AQTsuwmB9c)j#>0Td zFc$m9I8DR4cca@5S=Ka!=a@;A)3j~ocFKnjZEG{g2~F)Ku!pqMG^s;nD#26SNA`D~ zLR_T8h1LC!a+MnUq{=VnksuGQdg$a?ZIZRqwD3iLSve3nRXESRvUZw6YR{DQS|X=M zRQ06Ow9>b>tTzEU3!%~iP3qkvUZxz-_9v3=0Z{lPV`u3Z{;*~Zyt?O@G>?)QcJgr#%X%K?ki>DoPpqD z+=>~esY|r@vd$9l^&WMU(=`A4by?>y_&JX{%4y2bV!o{N6#R=@9dXQ5C$%94FdeGNt#_%n|#21B%NzO~Bi`6*ErL<2NZ~o#Eh< zJnAT?X(vwY3g73nXGdX{DxZ{wT8-RYCGtOEcO9O(enSkhT3UzHJM7` ze3qs}QYKEc*HGqE^;)v04&CLPlHgU`iW#Tr$FS@4f^%AdclD^FoTgjZ7EuJ}j0K?$%Sv|k=9Up zPm8=_Kgc1Ar3KHyIp&ZzPE+D3DP*1U;59w!D5ojGv(vIp2k>6*b&S*G_#18WOaPpw zi`Y)nzTAG+DuhEd@^G4d#QB4cf?aXrk(?%e(uUU^;g;8xzxHx+K0>0a_)I@?728;d zT<`X@CFfU;&02ubhnp}O16O-j)y8OaCPD3A_-TPhYrY4qmCD<4X5`WOyGE01ecoc^ zEWo2DPQe9w*8neED$Aq2%A)-mN7_o{tj(i0-mQb@^gJ;+TkvR_CKz2D$7MOYW3+iJx0z+g)d%l}auweS1?yL8 zO!hSGY;q0wH!YN|I1R|v?!$L-{oxe?yQ$M|a#gR5#*D&4j^Vvo?Vph=z~=&Nu62Xq zL#>DBG_-LWY=Z%L(csUTo#gC~=g+PRxzdnxBo94m+7$1vn%jNQo(B5-$c5W(ZY6cg3||8Jsp%P~=KvgRd(Mdc`mCoiz522}dr z`bAZp`l>%o^*5>hDb*ieUe4!H1=(L!L-tRiAJ_#8p`QG}qKcaW&t#k*uvXflT3i_y z5p7ZRTM4W!s!d`ahVwOT}Ka70;D8$_f9N0dbs zDk42OqAaQ%A~KpI%A(pWB6B&SEUNt?vW_FlqBZAyr<&d_h&WX@{4rz<( zk_dg|khZ9QlLO)C_^o#?z$Uf_p@%A%^A%#Y$TJ`Z%o#>%3q zw7&@jFn$B{$;Qf}%73>wm1i6$2+M#@6;~Ej`!~%gJL4Qc`531a^Hvts{Rh3N3gfCk zwQQ^`s!W@vQ6I(~fx0u6ORg-c7%A)0IL70FrrKCpRL+)lX#wN4K$~r>EUMRSlhQ`U z$AQk;SXop(hfk$_jGq9#GFV$w`H$423yi&sD5v_SZ ziw!mw)se~-=q^wGFW5etYl|vb%+mCZ`E{_nHrEza{4+t6i0gj^qmp{n{j^2ZZp>B6 z#5@^TfX%f<6&MssMVJ=>D`9hOQSH3kkAisq4Z)h)T(>IpaKi|y!qfKy8)9>9QJta& z6vBKS*kYS&iz>jHN?n=%3%1YZ+M;T0b)sR+uY=vSxwfdbot#25n12PMQfB?NMK!h8 z9$Lvf8CZbLwMDh=M3%s+JXETGe^`^aC4Wb8S%- z7&4Y_@$~b+7Ta7~RA=usr#H<11>0x1v8V%v3p`ood94B8>Yk%5s;0YgQxTrmY4EEaIm)8SSN=GKaL!xs?;bhI zq8hpQB~{^^gk`Yn(TS^}T6bkpUHIIPx^hlo@G>4b%A!iMq7n_`oM7;_9y!XQ+FyDd z&ETA&;1fJ@ltp!Z<}kW^9^dd+fN$m;{@8Kk6Z=A0R8w~zkU7V}!%dFdU&^BLNl`=Q zyabQ%$Wazm#yclvPQ0>EKheo~$vVoS>Ky)%ieTnee(<6?$5>R;m-ZuGHmf#JL&oxR zZq&#{6x%W5?V&i9H}A$wz<@id@0W@>FwCI0w^92*ecVx}|})vGse z=orEmHIg^`#-gg3CMi7ui*VyIN&HU!u_+5Fd|Q)kdEgtisNUl);&+Q`dy@8IBjpF> z`w*|2*gM*y@-E}F?qj?r0N9h}?* zCz2y`i-zt7&LvF$|Fl)1RG1qZFXDL#`r`aXU!33Qi}M@(!Z;;3k566h^XVZ>88yyF zIFIw$z@Du-xa37|5Ffn?V^k@;S@^JbQ6B za3*m?wJIbo2*$wS3%BLm0B#JNRLwcGk3-tPX~d6djDhnjD6)am8{6MDaE6L8ZQzU& zW7@!(BF40Vv!(^lCSw)MMjJRYMS?bP7V(%eaF&Z!0Fzhs>G>)(%D!UI4`@#vG`Xps~AvegSCP4XlF24^$~8ti1;fDXBz`2bXP92 z`hbmbc`%j^FFv^pjWXF!(u>6OVJ0fwMlDle%-t z6W~`mMH@JSd!o%194VHw8Xh#Dlbb;sIH`s`A}ck*85!}4=(l6dSbc?d@r0E@?9Vud zn6)x+;xCD3iJbN(ClU_-u*V@wj9@H@G;mhsUQK7X_y#7nfx|g6Q5!h1E(FTV3vRQB zT;@nvpVa{wvZ&E^Gnj_AjD&1wUXVvOY;(Lvv%` ze4P1BB5mNTkGLTN!*s6P^ZM;rgMv#-{+H&)z?s-oA#LEyap1A|LFAo5Cl58TCAER` z>eo+s6g>ui=aHifoPrm_WKPWL_|}ikK4is4kXu3a9j0;O*RVw1JZ#e2T0y41A2vF|7&}8hTRVB|!Y_UR|M-fivI%8e_yNTl;|ck$$9| zuMHe}-$CX)0DtYCV+@?LuXE5nKG|Z_#OD$^H6LZ*TsYU3eE4=a6HpF=je&D5q!jrv zuK-rflZRUSpIo3=%-e!>W-cxxx>cdH|9l|vsW%#EqM2M9I2%_cm3Sr4dV`ID<2~77 z@yDfg1niXI+Q6y%&k8yDL!jq2Rt8T0ma!}`^Jum3gA+Qr>fXx0Ie+n_oH{K~W`m7^ zQ~UO8O2MmE8myY;9tO_sjGajQn9>#ropq8iaCWzPCin7apox*NG;rR|X(jPWp!Ei8 z1E+b4X!2v~FwjYZje+x|PAmGso97|ebHlZP^LPEK^qO(B+E{;da^DyOC&l!5R#JRE zTIs;DFc%+^-par^w;(yiWLz4kqM2M9IIl(oQGUklfFfNob*n;Iqeqi`gyyz^b74s$ z$&7)M@>g@pz#DrrviI@K#0hU-iM4_Aa_v|u!n3`Gq&u7_4mdw!;5;fs6_|ek`=tvR z11BtQ3;h3I9en>qCnr?~&g3G8X**At2c(Lo_KMj<+Q5mpI+hOb6fKcGh^KI0=EzgX zR)v!GdL!pC3)w4wpNBSZimiAnEAK(hncpjG1Lx#B%M#1{2sxjkswWMc`aSl^da>)` zt_PjRlA5<;P2ST}E?_|K3=QB_n1PMgeuvf@}I&5f#} zdOOzShTUbwP$V6Qs-iM*5_S7Z3wg8OK++?(ipIdn{e2Xz<(yyOu6mJI*cdno3LKJk z(t_vU9J8(}=e5;vVI^6oJa|oyI?BL#H29~i(*eA{TOGB{RI5U>lI)blW*}*~TQQZW z44f_{6VWJM`YR0R)qtD_cN88}xSdRtF5mSQb(DcKYk5pr=OuWAdmY=rd5Hh7iH%!@1n9)-*#=I@ zh2ZfY>PzKnzQA|6`B&w+id#;xn%&y zV#mhl>-o{(zwqdk=Sj%rd$0!Hf5oGYH)xz^UK+F;w1!8QIrgI7wb*$76^~Zlu^0wP zXfC|}iboHpMyWfopX2>kJX-HUH57Q-AMd~7(P~+s|J*%Lj+`Gb+M#A#G}x1*cqzR9 z3ZF8r+Xc3glfSpPCgk(NKfUwN_k(fBnVN@6w+)6i^8td2&+K$qk78&UXlWzF8eR*9 z&GHyBPnECd;kpbwgJyc-{fEk=W~^_oeXYqgWCBc>Y}GKj^=KTl?o-pxauttr zn_LkABVo++T#I*ry+s>A-A=4V<)h^x7L|lqlPjVaS`g}lS7}A~?}dPLW;)s{n(j@m zSlRNED{+Mo*h*ElG&{#f(_vtuFDQxn)LBT})w5{jkO_DV=+oPgS1`Db+`d*ziF zQT9sOHB6Mf@^m1kaYk?zWv{&Ah_+YW3!FF@SlKHPB9fUS%3k>)B1Ji(>=nl#E?Si% z%3kpnktQ5b_KL5FbmNG!S7hbk98va4Jdrb#Bg$Tp^IF9bWv|G2{lgJuuOt#vofLJX zy&~s+izCWjk#m2|5oNC=7gJdwh$wp{Kt$qmMA<9pMI=2(l)aKgL<(|5*(*6kq#{R@ zy^>Ev8gWF~D}_a*6GxQ25+ovnIil>9(jqdIBg$T>AR@~+qU@EbBC?Gm%3i4{B1bu* z?3H>Va*ZR(UTG{M&pD#(m1ZLHgCh;3z0z7l;xs`-*()7HBsE8rz0y@g@^VDkD?LS| zEJu{R(oaO{aYWfGgGHnrN0hxXLPYu_V(gW%A~cah+FqF?LW?=1?Um^ww1q?3UYR38 zM-bBX%3mUKjU&olSt=sWIil9^;Pt04{D}PQog*ONS$86?L@z5!(?3G)Wj!*%{ zS%7jemP@YRiM6*8RbX5Z=noq!d!_owZPbu)TcFN1R`!ZD#G5)Y9t||n#>!r)@-{CG zV!RS)y}{aE>3=69O<{Z(=wu`;?Uj?hHE1d02SCpZ*7l0en_RS&u~&2aCpbE}V%lDL z6|#Z?LV(i%WwNodSH_p`M|l{R1S)T^wpTK44WlxQn*z1Av9edn?eU?yj0Xdaw6U^R zve$b>M|jZ|0xh?(vR5ulSVmVFhXEb5v9eb(m&`%W7~cfCZ?Lvk`klT>ZF%0`fUFi~ zy_LOEt-}@S$2b{KfQ^;Ck~`IKn!va)P;rB`y;5d%X*$5TK2V6k#$LI*;xAgrybstQ zn`?Vz%E&pinfV;Bg*MmrO8yEnD4h9Dust@{_DZ*h$>`h1gu%D^+98 zq#VrqfDN*_wpXehIYK3v&jDL#b8W9gf3u5fGT#Zd$L88zxo{wpaEhjG)-O{R)8v*<9NzKi-w4`8<7nun?PT zdu8UtU9^#TAFx4&8+)bezzejW`5dr?h8ue&9>cZ0QhsO;+CB*Q3ebIx z9WTW7PT4DYllP{5obwIb*;=il%2D>p-7~G|5zodSJd1mdwpUif+b-u-8oZikjP!7)d4DM*-zV6CixsHEKE5SL*!83T|D0`)Aq5f2pbBcpk^2p&|aAG?; z)L3+rW?;ixExqzM>~Vr#|PDy^`bXNjl6&O>Urq zjOB-@vR8_iT2E&gR|l$Vrq=e#j`YRJ(E;IZW=dnP1g9)cqY$2|k-Skh_DbfMU1%lP zb~i4Q#Ba>p3;{V4;S)Yvn(eLGUilk$5x?6jlLj9U8|gg?@qLKbJl++m4WQJsSI}aN z$Hk<4bK)YTH(W(GWf|qZG^p&iSNr`sfhb2^u_%Y`r>{H zeO}){o&vWtQQ0de{oBe%$#HSx6@bobJ=R}rWVxlay|QvwH2K?SVI=Wg+HZ-w*1(u3!6&yn`Z{wld;MtRVxIz!njkNgTq*b<<< z4TZhZadi<1hXRbYp|DpHEc#Qzg#dgDEEdkTS1QDRM2>$E-^VPJk5pr?++B(`VlE?o z(`MRUInl8fEF{f_N^QX?rE;G_IuO5U*l0 zZLd`BTn@(&;%#lF?Uf4|f01Jl;v;OP?Uk>?7ovG5#24F4+bhc(9U#Yc#CO|F+bfqk z;)Qk>5Wi|OZLg%>jrVN5Li~fxw7oKIS1bH@h*KyoI=SxVMDw&)w&R!%ei@_DVM~EbW#4Vp!TML&UJOSH_89 zX|GHc!_r=vD~6@LvQP|5du6p4miEd9F)Zzs9Xzb&^W4-}dUG>!3Ub(x!E80IrI5nd^`cuHzD;Z}lAgcgaIXA98 zCHQ+yB1g{S56j8#BTbOh-XtEEiz)4uc%RDAZeFe7;FCN)!1YWOG zw7s(CR|%SmU1%KwIl)wH25qnG8-W$MgYZK$p=v+o4DF)6JYkG(xOSP}5FKLH%3kSE zH%#VaGC7fOc$sD^B`(ES5^1m0ZE%t%aPbaIYGpD%CB677Czn*oM zIa^IN&q7J8Mqx{2Qn+3iH6vxOJWF$2F6;+0BOxSddnNsbf|AGSuC|AV< zBS+aQe_mTIbB=@GHaTLa+FMH7E0wc#lG&e;>HTNqxyntZ?Uf$aTg$`%BxTTv#$Gvp z?x@7Yfyx@J?Ukt+Ye^ge)Y8VvUMW{Gk^EVIAkaj{eBerZU;+bdaX z&X`*_LZU2E0PBP4!I$$*4xI?328v6uWK_i|aF%8{_NSC+ceE3;YxwKrJXD@|_P zmY-t7fyNqa?3Ec6eP|bNo@HQb4A=I`wJ%=Q2F3?~jxiSd#@H*R57nhB%JcYDZa^86<=TRHk zEq|YfwpV_}eNCeB0OU;gy|T7fYNz@t>n%sl)~M=9dnMvqb6M{ca&AUZPq!a)q+MfK z@FS9<_x)`n7<=XFoZ7NtDkSCLME7+k*(^+BtMtHlme{Q2kyJ0LippLYbg{Fn*cC}b zqN=Fum0}xO}8{TOV}xYN}>oQairS%pvP!1~1Gx<}0B%0!;fcJ(9kY3sn^Ux9J#7bz*7tKPfYpW`eRj{m8ySN^?#^-vWc?( zHPz2IS&mnlBl`~3&wzel7#2o7Jqd6WYPOy&mOg{k(~|&4k@tu3A12Om9O0)Y0gl?Q zrsC907_=b<)~U@m9&xT={4`ch;I50gM8cC-=3}J$z6FUf^4G;r80k^CPEzDv;@qzp z821Shk;feAFgO6O;fa4qOkLo{WsD?oZQxSMlPNAnlqWN93C}iQ2qsjX%p#6xPiDEm z#ThG4W{rr{;E3{MHi}3KjwnxNi-`2(i1K81ipXe=C{HF#MCNitwa0NlMAmU6DD(!_ z>he*JBrGgOuJ;g&-Tp*Tkf)~vX(dLUO=ptx<++a_bFA}>a^}aQ$^gew>#`{N3q^CL zUo!}yqgKs0NcWvFcMZl`)sJ>uerqi}6upa-mFIAJZxb5E zxH?c>8!OKt%cp4848~o6dfHfd4zHc@td)!>0nM=SWS_)nc%?zJBsb{p65tI$J2iIH z6>Fz{)jV)5fSz&AdGMPaIqFxwQPq)8t_oh>-Icyv!Ovhx!P9XL zZ$w99o|peX-#4@;c*Db#Bu>si;8MB_`KO4mXivKs(Ss#z2-4J0-!d~+Q)j8=904=m}>th{(FPHnLmBc%M!VLER`Lqq~>FanmmA3QIbqVB# zO>+;(PJ5OQ*k4!D_aI*k%@dgE6z!Rm_*@mTVvWE{u+hl_Cy&p=^|WXA+Jp0O8-!?f zL;S~VNln);Y^-0LcJchmf>dTI&V_(@^QP1FqSl1Jdc*%fxV4$kxAlxEl*X~UUZWBe z#(QEg&`3{wXzhc{bb|3hpyiC^NhYVhystqCy23aN=$M{bew9&kxP9i2w)B8=?t#D1 zC1j4DS2eyYMzp&m)pmC1GuYTyne8d4Ep2kqc`nz9H_-;qyELG?}uW4QpSm&6% z-&Y38V=7Tqmd@L`TRI9)>os#=R{Fpbw26x6@p@LLvE;)vr-~VR*Q4;_Ue|WLmZ)Mj z4pj8o+U|o2zcqRjW2Ol-1w2p*U=dN+-C$HIE)PICdZb84D z>*HDJ9336~>iCk+Qg9jt2>_ks-tF@Zqj0C!m$<*=S>O+pp0T);NSw%P^iwp@Nb*b+0jpX8;i4(+=TUyiI@VEgUq z`DgwBM>%WU;5X#Qi+=;`o;|(f6|LMSn^Owr-@vRfY7>xO@6ZR7!O_F3e#iOLu`a$a zBnL}v^R^SWQbtEr$3wri)Qfphu#$$C>ev&wv19bY*Ah1bYHF|_8%CKNe^|jEb5RDK zeLt`vhWifi`9hf;jjNxECb!O9phX6k>e#UdWpPAv%&J+H#_`<$0o!Z1-}XQMqpXfu zjy7NF(G2F-!0y<5Pv3Zy%`wfobt!}vGXDbh%jUPwkEHC5QI3vBrqF8UNyqw=KRR{d z_*Y*+IUIjE61Cn=q09?|6}S0NR{_fD$mU4C=?v{=-Tr{tLgjw={L&bNPqw4DoWTn zG5jB(d>Y#)xV+f;b{`wv%Ig@GH_b?T%h%ef$gHKa$@d37mGU~)HyT-jVhsiE2-Mx+ zJU{PRbRy_34U(`j}Pc&|AvIN6ltrZ8tUiZp3in z%kXilPski9!u%ZA4b2_>xQHLiZvl=IR-311WYR|@eA7uJntlp!oV4Dy`6zk9@puw| zPHvP^ExP=P=}%cLJ6@4IKUh(lvpE>xIBoeie=K<&uttXavDFyhIAblFvW?2{LiPmf zZ+IzIDgzv6t>oFpQ8nf>!RFh%YnR^O=d6BJT2p=I+rai|F0ZDgWYT%7(8)^FoRh92 z;h{+yGCM9LfuM-Vs1$Csyy%VJrT{J6xyZ}gK*_FHNzZvxB7{?Gq;8ibziM52ADs$- zm2=~f{@LSglB7h=aNK}p%XSR^>b^5&N!$mUb zTx1sm@a>jYOx~4+q>q#PU~G%Oq=f+-w4wBI{!Md2OnDuEZ_w0~(#QFlGy^q5@H0BT zYg17AID>}#Ctw0BF5k*2D1DqUztRhs8=#EciA%`A!pkafgV$ zxI;u=+##aR>l?^Z;C>}4A7|zK!SXg^F=n-yXP1aiibzk4OD>CncL`OTpM9!KJdPy3 z@BA%M`8Z{cwWogI);s)hOo}2=`8eNF&X$SEk(4#6MCIeOIJikBmO)bOs1lWrlQ}T8 zOzecDK5mJ|$N5H0WzJOa1s*xd$LT$1fy~(kzRx{J`Z%8pc9j`dKyT>`<>Mr7{7%9T z0AFn=e4H+S_mwan?%5Ng6Wfu3gpU(Gql1Jw0Qja}Li0YSRX_2HyGn>xXO@DGRO90$ zb5$irYs5R+O#3)p(nhx&!w?^1vj?g*nYhtigQG0Xnq~+Q*?*Xb~q1;<;?5eVh^no|2;+ z;#F*>eVi*5qv4oEysgc&kCWkk7x+JjkFc5carPA%0sjZ_#fF&^&C|yzhr>BI#k=k} zksO)#EOz&C(&8b>|5G2QBTiZNU&Iq2^u_s&zBs?p7w0$nqp?(+$EPm$`SjpEpLpEo zBb@tuHgKPhX72Mb%Y8mPxz9%;_j#vqpLYQFd1G^*H!SygBL?!Oz-CZBj(nnY0$ae{ z$GOQ7<>QD8f_S2o&~Z8-13wm7ymbwJ`*T_uYvLP((`Q;FIj4Fp4khQ1mUD*kQzIki zOe?};`sGd+urq8q=cX9ba?U+5rsbUHVob|9eZ*{r@oco5^F}0SIp-^nDLLnt7?yHQ z48Gw>Ddn8lVpz&KNyM;}b5e?7Dd%Jq!&1)4CWfV)Q$P$$Ij5)?mU2#6F)ZbrN@7^b zIkkCM%Q^eEuaOtzhWONPiq0zyUk|jLll;s8iTeT#wy~0PuAZtQ@f@Iq25UK|TmA23 zZ9#YsqfGiE!N@ru@1%nN4ECQJS6|nZoa6hWlDt3pjwJ6Hx=>!Zm{QIeaK0=x;MEEM z&uVfCbB>a8{!E{nPV?3;4O~&DXgSAcPaG=;cA?b_qzzNC8MK^}@7gM|1|U4lOsM3X z=|N2>5l^@h#Qwl@h*>K+Cwj_6GUu?#iG;(4bgVD&9mbMKIj8nMKPxjA_n8S|%Q>7Q z6SbVvuuXgtnb|p0eD2yw>g7%o`aF<1HB2=-N59;uX8qGLsT(In;!4iRo3xW$*r{el zJU8=lr{ig+NxoilBj=1vr;wI&9-Y4?b8qQfx#zW<^E29e$s;s3a?TQOg|wXWrpPa} z|2hjzU!aqR8ZSI)IcIqA33(Ki0{DGnAxH+4 zg)twvQqCzZHbDOlO({IJ_2~X=nOGW0wM?Q|T$!lkocjeE$;6IG8W2^Yl5;-J@Ro@) zk+j$(%3?~+N#?gv=KKSG$UR5PIrUztwqtIA|EF_|ob%>Dm@M%fh<}n$S12XtjBdO` zZlB~p{7Xfoov-Dbo9q9QImN;G*NsRyM$WnT^DPDP$<`7H?Kw$a36-2vIgiU~!Izlf zKw}Lya?Y<}O{f#|WngPOd8n1NR3U21{2bSvbt%Rt83$0GkLc8kW_>dZAB>_K8vl1AgeUBm%tvJM=2#wu@~9b zcnWcmGPj43r;u`vSJQNI9&eFtEl>;pTV9K+l@7?tNs*J8^V}+^Z7hX(_&U2mh%bk|4?L=RA4;MgENlvuCg2|j6R=}{K6rFcXL-1B^ z#f+Tu-{!`$&LHry9(9zQ^Wcy9vd&WQ4IXt=(=spKO_p_zfM0g2BlfJ3b9Q`)ki}jj z>6cqEm8j$#$D@UGkJm8CLbSt)F7g_RoMw&|1C!88&ItrB&pGB0F>=oKi??N+rr;es z>L@vR&av09q!4c!dF}B^K*u?!6nIsSI!ex2@zP~o;+)pt z-Q4SFIj3xxmz9~1mvP|p-0G+`RC112k^z*T6SpAgpj$DOsG62p**O)7iZ_w;*sY?G zb2d%7CyNoj!N)`wX$`%Fc(cvxe4Q{^CmncB&WUuiD>)}^otm;v1@Kz#b&Q;oH~xR* zXb0Fu7qR7>i*f#=5eQG#$V1L)a_=@R2ixk#e|y@xhUS(vgh(|}&LvtzJ$0sG{M;mnVUy@W?fFM=@XWcvjmT3jsbONRPc9l{(;dB zE4};UJxm3vkTZm7vnq+u{tXYkAJCMX-FfI_KuxrN!$Xad493rKJXGiAVRBC4p~*My zV|2hza&7K^9F529Yz2=d6O5WyO_3JN@^C1sqeubA$z2>2H-!hW(3lDj(K7jUb@a))?BidcO&B=wL zGz{(OB<9$W+>_D%4Td_*Di84}E5~x@DnQQsJTz@TTFfcVLu-!UrB@YsXvf9l_Gf-w}F!g&k-ci{-xgpojgMvQ+!34V}_&ec7I&p!mGqw^|Pq72@}^!EPWv~gWL z^7$FZmomOcO!f<$f>(WvZL!*ubu%7-pdY&9f9tnYb%v_`F4e!P`X5z4XQ-UdrfssH zXRqu(+avq2F&?-A3!@&y;0HsmO?WEethG!%h%stUD~>3&=kiXR*jnxRk4Ky%7%R1> z6qoq_q4sR%TsO7n07sPC(_2if)SmTXM5#UZ#E4RRh8^SCe&Y$1+B2FXTJ4!2aI)pV zO6{2{BH1{i)Sg))62uXu_RJTN>KsvO&teg2&Jm^dtPqhN98qe|S`it=5vBHQ;)qsz z5^d(qq12wOf+)2oKNF+&{KLqoJ$ppa>nIwv+LN-?c=??-!3sS8N9UF18g3}G+Ee~q zUdo7xt-L^mZLHLuw)lxI9NW&S2~^+4O6>{ReU9!i?grG`#!BsJcPP5$!^Nin&9bpl zd-8W7dc{+30@}tnlUOvR_H5fTm16PKXMnYfpXhesXYz){7qdLR|2YTW2N>~Y;}Q#GHwUd#l}kQNuTc! z9pn8n257p*j=W;+l-l$4#}T@~IqSi9c;qOx=ljm~G@WO24*Z5kj#7I{OMHFWp-Ti^5JI5{ys#nOv3%8@ zPlHC$PF_=^_9O}%Divu~_*`8YwP)YEigbb}C>0sc;}^2(wD2Z|TeTSej`1_`Dn6g&!@HT zB-9px9=;)?_LO+rOfqA^r$xwUwdYmU)ROrVd|QN!R(qBl`XZS#;MaXKM(xSgX)(Rw zZSxNNGiTJ{VAY=fP~Oep2h!t5Vhwm*e918wP*Fa5OH@Bt-?caFv#i~wI?i7u;Bba zMJ%>zPpkNKDK^jkN3ceg8?|TY#oMxVdI1fv*s48g{JM$SGX-p>l?1rd4zk$s$Jc8PDIDJb| zdp0Am$2Vluo|UnZ5`TAeu7HP{3>mej{@*J_?fC!{XN_J<_W+lp+^9W`8`Y#^e6G!e zWDb+IYR}kYN9aD|@<3HB)@sk}1W)n%4{EzJQ6ILI`5aM`&khHXqDJno+` zK{4n(->5y~3k5i;{aj!_SZ>vx_FFqqHeSdYV0A6GYER;5tLO*j-N5>|+^9X@wW~-a zm`?Q2oiE2x`xY zY0)SiE_703koPOXU&3^K%W4l_yJedby*#Tu$=61v_9Tr_T%9L_(GXu*`5ob|d3~#$ zPh-N=Np>IrUvBxGS5VZR_N_CiDSro;>q1d`e);dYnsOrmU!dtJMeUh7_!9-8@-zm% zYSU2Eo{39pDEJJ3FXc28wI@ohCIxAhuWt}fflCyv_FN6XRY}a1{mR1FDe+&-LUNfg5VIP~vkS%gdu-n=nOp5- zyRk-sixJuoSx~DzF~g41kKoR~`0rX|L9O--{_Q6TzD3B3E7@;mt<|25PvbbM#Z(CK zCGR&ut@bPojwvlxK&ZA)(5gLECwwQFPT+kbWVG5-ua2JKMDSU@8Bu$F?siLBSqHks zB(&NyJ!zQ069DI2sMMZan;r>#4Diy0O6|!s_JF|X>+!Z?P;2VmYA0s$^yEp8`mD^t zcu%!zPvjM|eR%3$*Ri~2JzGiuLNJQCCM0QJvYX4Ibf?M9I&Dt74@81(uX zwdc~lO5{n6`iw3!YR{y!X~|O*^`%{A)Sl+0!pPGA^-W!7)Sj#JPLQWJ>IYh8544DC zPipL?3!M(Z>bT41tl5NJEUG7)!#kuJ;X_c3@G+=H_#jjx<;_S7G@@$wP*Wqko2n7s z7u5*waB772D>cIVkQ(9rC5RUU9SJPfMD^r#)K|RtnQjN*RUPNQ;?wB~_6w&nx`Y~G z@O$NZJjXA223`4{CQjF5O)QjIjlJk(_uBLC=l(~;^etB?Gl82Ex z>yxDTF{ie~jHft5D)y4lQv}{e2+2H`ITac-l28I{=ad-Sc~YrM2Xv zg%1b&#qvnj*pJuP%X@#5Yo80@Qw93jL0``;26_ztFFm(rX~!>nLR7S7o){F8_G8y0 zIGo=ej_!mgpNtP5_R3UuC`$EVhf;mmp;RAsDEa8(93Na<^2ZdH{3*mGf5>pj#~hb@ zq;bgy8kc;Wamj}nm%O35ypOfzGMau}L6_}N2JxoAX3(CSbg!<%7V!1l_Hm8&+|*~; z|KzznN7&wkN<25et*A1dTUzcY{a<))+wf+%p4&e4%6M*v)hpw$0*MdgbIB}HleDX7YC=>Gsa>cb@zQ+sZc(v*{n^*abXv%$E0 z;Sf_lLM_q6VN{Y=E82Ga=^F-_St8D8&uz<@Otg`=a#rBnCSp9dfzD-0gtySC2vVJ? z+6=~Xt2GvX-Oviv9qfeKa|^&9tbD;<=llxde*5#NS!>VD^ChojR@+QCe0IV=Jp>)@fmYSPT4SJhh_!Psf=l0Wo8X3>6%0qJ0w%c#A^3EI2Eq}ZT z($-DGt><e)ZUiTYqB+_wF0dE#-!bvKM6m&mSS9J-45)jFL<>@Rl~C zzS6r}!gy}YslKEKAvw;b!v(unicV)=In`QqmEaPDR+^yo+%A?qDR>{y5sQuI_GGzN z@NJ+6F4mq~`tO%YcbNyjT*b$rc3kn?lJo9wZbG%8c>)P$MW~1ks>PL{_S_baDk;G_ z2(^kVs6Dq$M+-=BFhalBpfsjEx3A|mN@fB0D&LIp+}8bEMKb%rkD842+?#(xz+b^*%NhTvW|I`;QV?DRhjXO~~KG>=tP>Vxy zCe)r=n@@jGWj@7p1nO?F_1wxftxrEP9}6}qB46h$={SpOFkcC_mN}mft>-p>&pPQ< zI|6jlPHsH68!vVWegO2$V(YmT9`cF!v(t(G4?b}*$if@Xt>f7dGI=JT94^+LTeLy# z1eXV@>SFD=1s)qLxD8Mzi>>FD=t@6o%BwaCY?9#-Jhw7+T9W#CbR`07O~`s~k0XN}&^SA}@!W>KnNR%~uL5#E zBCO{Yef~V*2Mu>Ux2jEx3$vbE{C)+gJ#Xw+Jfl5&Rl_xFJhyhSrqW=ZZE}Rta8Opt zcy4nVXQ8pogTP9ehOFnd@vq(F)I)U>JE`{E?gV|I_dH>5kO_vmOW=+f&+Wx?cuV-? zc9tQ%o2TGI%gwoC`sPxN-_0K`^SFfcgKy_yZbDVbFNw75?8T`cLxh%%=T`mGLTN8E zGKDy2zm2Gw>)h5-tA3L9Y9iA-lJ<<}_B2*8X>b5SVufx?I(MTwq5MXrL?|-{?MmC5P&J)8lb&#< z6nIsi#;oTSa{mLVcG`eS?FN+a8Kr9E&aM4g8#=&CFzH)@h^|!X zxYtyT_cb8iO&CVruUyyX#18UC$ImPsM{ma6vl3t|Ao^l#uoOI&;g_@I&B$Z9W8mR& zxp}N}^4sJs!eg02Uy-*g#+poQbd{U{PwNIp@U;r1>QF(+9V$Wm1B&jz2=H{44ve0d zN?o}Ic)AoQQkRv_Q_T2Jo>dVsqsMLYREmh|wb>+M!kYhCZHdZBf_tWUXJt?RXW z%Cr50C)B!LXRa~2UJr#2GuFCZUsZF3YqYL6NYy;y8m;RMQ#D_?M(cW`R872NsL{IK zSXGmjYqYL6QPt$<8m;S1+cK*fRzhKZ)Yh7=~ z#fLPJaUf6z7i(Q_(XbV?nQ?KTvM$!TUe$O7X%6FHpjM2}t3}hg-nwq9X$RxMKqFkN zb-m98d(wTzvw;>emKD>w-rvikJ0BQt2iomot?TuCw~k_Bb)CyVH(jiCz0eh2Cne+e zKwn*~b-lA&UQ#Z`Nsi-301SHGTGwkZvnZ|M_oV<(DT6(sYVEYHw|3>vw1qQ`z}rN~ zXkBkh)Ui~GXA=TGCPGH*dU=urQhzk;ECOG{8QzGVFrJsz_0oK;CC=Od;A5s4b0@Ah z^^OX?1M<*PqwDQWe_gQO2|WJ{gI-mw>kVwtS#TPlOfJ^C-r%aw1(yUWZ?V?(ZcW=k zCHOsR3ewu8qU)vKlT+wmkP((@T`zacjrg-f)Xrg|b{wtimHKfLIcrh7*%GbmU0E7J zWqE!lK+Z8$yNuEG-t=xp&O=l`w-Xv&uk`2SRG#07=qGVT#GrRo@$vQz2}(e97-s^? z!C3Z1t?Na{4@1ovmj|k4rk1a1M%VkhNCN7@nU3InOcRo^x?ZoERcX&tgeD>|--dX{ z^40a?O&LO+cukG27ZsoUs^S!;QmsnUM%VkaWdIG~30_3T^Z2bk5yMeD<|#eB)%6Mt zyeN|zUGL8l*K~!}^#;Var7N_q_b%&3sj#|Ui-Ae7U5W~L%5L9_4fbhan8h!Lr!7vvJo;`*DE|Zsw23y<&(^C z@bSJGqw5Vi(TuL}wpj|kiZg2Et*-Yx;8z-nHE<4q9W!mXcjB6|caUtIdti_4^hVdK z{csnlPy486a1n?>zcohJd!N!nueka2U|E^V?9H9Hq94mod^&Qm~>H@aSjs+Z^{ zFMeyVj_&kE*IPF~p7W6TNU*W)^hVcfh$BbciE9biN|zg5@A&6=;^XZHJ8HSn^-3-# z!FPZjT5NT_iDhxuIG%l!v-s+YK~~@BdL2@Q$ks^s1;R!%=tQDh*cAa;xk8 zxAuwXdM&})yWHq{r;C&kU2g=~XqOvZ@4@@NqU$XJTj6q}>vcP|Qgpq&V2539biE-> zdWo)g8|;DQM%Rm3yB*cy^MdCbe*eXw*Iw&-{r(wB{Eg2^4V2MhtLrUJ6T?w=;wlMN z#qbEa-rc8viLTcMf$qK`qwC$d|Cac>qcaA4qRCiY@7m@9qU)^y+GVhNfXm6w=z8gQ zccOuOuDyWdHIufw-oy*|WMTXk=##}-*IS*tBRO%;<6c!5)UNJ%kGUy!u)DS)o zY>DMo*Q<1Yn()8D_PgBZdcSumBK!u}UCXVmS8G8$iq8xA6)frnvl3R<%aJM{C1;)r zEWOK(u6K23f6BnTI9MgailALz5PX! z(R@^|G$?|uSHDs^`UmW!50}suzb56jlM~02%XtIbV(-Fy_*R_j>T6u26?x4K*~vs%cc|ikg7XpLi`Z|1+WiY0kdbPFJBRV#rO1NX{hOF0s-uE05%OG)q($xi z4eRA6!DI+!jV!3$zbL(5$*jvDRNW_N-MWffNn4e?fz|flt$oDfKx71?q7!~dh^@|c8*!f2vIq6};7%| ztvLKQ)MsQioA*@f{_R}c2Eq*LOS{atf1_t_f&Yg3rY^gq-M|0l1(ByW>Ib^axPLES z#dJKAP(R&e#{FA*9*?$Ljr#R2GwxreJIl#)81*MyX52sjBOA$c7xj-^X52r|vl--Z zuuJ=6(CcU1zn5V}$&&*0XbSe^j6xR;EU)VhA9-qo4?Q))$DSJDKA|9<&RSm2o$BS{ z$#HZavwX_4UC3{vw!A(%?-~{p9t|^yjX`tSM2=@k&{W}>z;d`;RyT&HbFM_fD}YsV zxvX+RPwwdYxti_3x>z2`YI~IBH3f^#^RFC3S9E}hD$!Mx#W`omwXU&$%iVJd{lDD z2OyWcp}9PcwN>@HYdDXaq*%-@fmkJom>kz-vme;>( zTr95(YFsR@t7=>?q(LfAH zX)u=8%9{6u4=~(XUR!EuWGt_IBhyKCrOC=WZ!E7YE%k;uV7Rrs;(C(Fq{i|}zwa|S zkCA(aL3TB@C5`1(qN{xMbmHE|O@J_j&uGi*WwMX5r{x2$XftXh-7R4(ua4eKl5T-y z51S4b)RtF~f1{}H%g$JYCYhkMypo31mUjLC`paTtd9AEEMet#u6E4=4SLq?sq?hGB z(0`11#}&(KKkxp=@|qTFwFKkg7m?H$B&Zfwg4*&rT;{a|3nNr1vY@uS{#ch)f-Mp1 zVuR9{w!Ef?oR-Yb;J^81jODd`T?@&q1Yc`1*76!!I85*nApTiLpP{tnm8M-h***_| z_}89rZ>+Jr`sa8fnOOLBh<_mpm$8=D_Gy3PM@<}Tc@QYbAvqIj%PYrE^(Z%=Vrl}_ zv)Ec*8&hqgBFwvk^^M5aIraOFryrP40-Mg9&xh9X`u){t>5TacXp^1XSY8!k))9OH z=$ysY^4j%bBJpRZ^9<~b<;L=A&~2DZ9{V2d|B6A@&0kwy9d0%foE<2yi?!u7;c7C$ zRe)+)Y%Q-Pd80aIdDS|B^))<#HUjBwsJmkBn6bRxRk}=% zc#82zFXJhEmpS|tayPTAgF|E%+DS(sCFw@4ju>SY8Ki1W9{w9^kJ3 z7~~A#Znac$H?yCww2<}+AXA=mzDuf~An5P(Oq@#^Y=%&`NE$SjSGi87q{Yz)&4{c; zZFx;B-$zUZOtnPJ&LSF{iwmgaj(%q-t18x;%hesccrc66+F#D zXE>7yJTGVL3R}yoSH67GP8INa5!%s~*XxNm(Q`Z9zz0TXM_XPS2X2#grhqT@X-Dk= z_HJgiALBlm+}KWp{`F~02esvOrbjgTlY{pVdg0Teebiu-szJ1!GXalqC4nLQ8Y+Y9 zH&3P={iK~7;DtEjep&U`mRI|gN2Q%w;7ua5qb;wOKdzT{`hbt}X-6-(w!GF>i|43? znupMzK8;DxSY8FnR;3VL`a=kv@oCXoUdiLNrLmlO4F1liG5e^&F^_K1bk4+mjPE}f z!mXjPyyDjXixzPvA9!)jgxeRCyw%UI;*;0(jx+Va+xfJk*HBwtS+mY3KYSB+h9NY` zr!gJWme-KVN2J9+5ZdU|qP4tstluh)9S6VU)0nlq@~){X?Ysp49HAY3H?un-dZ7~G zN+30caBFBSuS)6SlBWP*Q4Xk2g25Zg&%sTz8+(SPj!U&r-Nc{>me=bNZKwy>a33Dd z@{&$g7E%I=48Kd>NeBj+=Ol%`@|$orgMCLY(D0&3q0h5y7a zJs)x3u)NWtk~cO!M*_xf9*rA{ZH7ga0xvs`-TpnM{c}BevoUQj_;>R1_m+U#x8stx z1dp|jbB(-}c&yv=isY@sW3x9LK;JQsm0AL=Yt1uQXy2D=hIO0x4ojbAH3jTGlnqZA zj0N*6Mh!gt@88*F@O;3mRk1+$i}rw1vmtn;pTCv@KJ;8k-WA-`rZ=U?yPn4`_g+li zojleh)l~8x3BZc^o%d>+E&Bce$?n`hUp#3}YRmBxr&ApK)Da z%YwN78G7sk8VwC5Z!8`gJPRUSVjkO)KMn4G#$(TuLSD;?u?E*-T%;tY(m!~CXF{Ax z&)q2~*lqehE4aS}N$zez!M!agxN`*s_eY}OucIiqrvwG}V4>iC5)`VNggfMMegEcZ zdpcEUXK{33boG`WK&KA25IaN2qQ5==2xL^HLgW|cgW0UbYy81Er#o*s@QgO%nsYdnU{wQCo%7RpO zDI031TDBe6krE;8v;=AIQtmxI)%Hy0!<3xqFpx=xszYCn|5Pg1>0 zs2fUo*QbWFKrNiQNnp7hi7CUq!flA}TM^|e{$)t`Ijg+lKOD|5wNeMUP;lIP z33{Jm%Qcx;I0lu7?kUjmwcF_$-4o=Ldga^cnl{32U{&+Ugq6!en z<6z=go0uwpq8s5i~cM?{|uW`{mMW3KDv03ntkQylN^VebH2kS_#T6v`rf=Un7YQp zoi(Twnsf336^e*|yclf;RbX5Ts6Jy}NV$pQ(-&F|U2#1zenTY8x=G9PH;IkV7Y;TV z%8uUuw=xTFdbGovp37mnoU6<2x*Xsq{9F_%AH|Y#kuDFS3<}1==)Pwdq1W)fINtB@ zeyF}@7@>{*_(>QUxJDbH6Z``)fqpjYY<}S_%UBzsHD7TP^|&Uo2ej@>&h7PKthLa? zs^%B2(OT#zZX%)9Lbt0IS_^%yUT7_}L1LcwZk|wUp}|~Zw9u9c-(;+{&~~ckCD&*z zw6m&-@)k8(3+rdD9-z8s0bgxD5f; z)p-x})x}y1y>KFoW-?ClE)}K3pr;nGv+m@#dubWt0zgGwthLZ103RG7qqWe6Tk}%`p3OAy1rajR-(TQmix67E zXQ^%A`#HlK(G!j5rM1wVd;Ccqq1S+Kn`Vp_diU~Tp&vn<_jXnF16ns8*Z6y&Ko@H* zbX4D`*au{gOGOLKnI*H(DIhZ~)mmu6 zw$Sd^pmqZjwc}_lw0P>)xc)=!aZ9uodZ_&%YQ^)r2lAMy+GUIuIweIK_|G5k`!5E) zFN)Z?dN;p?-{mf!dp?s_Tj23!(_g!6~wa{ca_UQ_(h5qtv zn^agWG{bfe?c_BZhW3BPAY0ICp^vYWqJzvAfGxA!XrVDHw3VaaAD{z_)gEEA(9Sit z3BCdJ%;0dF!DykM>y(x6L(x9r{s$P;Vt8Wn(PXvIQh)0|?9PrrLEn(kLI*b2&m5@< z-Z(-=YoUz~gv!i%gAa|6(OT%J7;!`|odLesH)FKWxA}L|G2S*i!S`}Tt-RGj+ut}y zYxxv$4eYjQ!_`7-6$q5A^O@OaGriG57cRO^>LWinP#VT+=hk;=Ea@cf9mV+$8^{R) zD`h9QcX1pU6heGDavFoRaHls~X!*0Dbcz>$5ZG{cdZUF7tx=DzFrN*!(4F3Bp__}u zr-mu;g<%KS9+w*}G|iQtsTK39V7DwcT4;rI;{|^Na=zHrGY@F3a;7ug<=H0#OKrK) zLjNu8IBM$@1}b5()k0qlx=sCf?hV13S#Gt^@>dVgaOMNRhPvEnq1C7Np>fP-g3Wii z(Lw`$D@oIsZv*?s-;mKlN1Ulo z`~}ik0KUv*tQOjA_*vS@P5c9N&S3Wdm-DF6LZ>b0Lcj63_9>FDP13X zASJ*cJG|CHM$48Z|MzTi-onMvwdx@jmTXOAN16x;~F*K-<* z$=SQ?a0O2TT(nSigUAZM#r9~Dc*!YcayH=0O&FW%G7+V^Ohl zqR4{UtGx@zr|;t^?TO zLS=Gx8@Ej02>`ybS1aI}oa^3CAjmceKeFd-pHoDUSNGE;A-)lu>KQ(+Ks=U1m(qtRtF`r!VRUyUduJ2?tyx&t%lk zaG5bVvpmGI{E7OFE;Al}7qTX~cysZd^x79aKGVn33uRLaB~#lnyoYniM+29;ulm;9!1$!`Fcys^3D4a+5O#30@j*bG`}ly0St z=qoZxqjW0`<{GUus^i=!jmOe*w}^Q_>)S;5`1h_r*eZ>w@Z@dByMwEY(wK+)hOE-q zIXk~H4`}U)H^WsL2dh^`X&kOz8KrTYdS#Tx@@h6|qhU5iX`G}2MroYIue8!QUyX~> z_=g%7rSVTSE=uE8H7-iyE;TMn;~_OJO5?w3T$IKOYFw1Yt7=@7#(Qd9l*UJDT$IK) zJZ_Z6m@n(f3Hc*dz=@9i{y3ixjMA8PU1`DJ0|mNRD~+?VM|1cj?-T+mZn04sYj(tq z>*}DoDWkLIBf%<-zhwCiE+E)XK3soYlP->&@u%L9>ytSMEw{lNvY4VYE~vPaKJaSo z20vyqcR8b##^xK7Q5TNf0e)yAMrmBq^dOzUp5k}{0x22>*$hT$JX0&WIe|G#0rY(^-Pe=G+E<8X=>V#u)Upq zqm23ZRoy|JN4%dJr7_d1kJ8<62cg$Cs1{d(T4_9&G=}s!#6sVH3JlU>xS&=V-`2h$ zE&hN|NgI^Lw9*(gETLo?g17d~7^N{J^DxN_0sqNltkO87XK}%EfcSR_eTLFXW04On zWc%y@;-4$Rz4=CIJheWaWNw1SG9Z=7kUt*-!7?ycACmrBY4nE0bNm?>2P$hPH%jC1oJ}b=kzkkFFq(m5GQmr&L`OuNp@q{@*Dj4dnm^)^a#z%Q`(k`B& z8PWrI3g2Z8KZPibj|S(GdHja-!f)qcl*VB1@6z%%WR85>vQZkl_-ByzZXxqBvi3x2 zY?Lif+6#yuNZ(_Ku%uRL+|z!EG?*8m(j2s3Z`9i8U~K36J#D1L#t3zatVOLf7VJM) zS{#Yc)W}-YN~7m~e`#?ILc1bsQ7erdg09g_-s~3;y5-ZNRT^{kPD)ET^AX&eAp8nj zrLomrl6F#oXW@)pSDkt0ya_2N?UV+u7NH%jG#0Kt-eSER9V> zXueNlI;fS#26v9ra9;YY2<`J}(JGCh?eEjCoVf;m-={HqXS#W46vqr~_wigFlVXj($LE>Mm!f4`=)n22y+s z;nz?rjW-%%7M#fnUW7AtU(jo)mB#$*-_m&w)0jRT?+1U4Xv{!KFf63~Ke< z8`o_}_ma}1I+sBal*VE?ic(pyAAR^Yy^U;C1Pna09ru4jFktVa=dke_d!2yo6>y)p zeq5L5_s@7%>84oZ{h43-Z^y037B|OpQ>XFEepB%Bj1z^tOZesaBLyj-z}1@M-M}wT zR>9L;bF{vJZz<<2?9sEar`Tj{C_>VkR z^lm&S;D?XZasM}dxz__RvO13?I-MGGTUZQ_Z~dz-1r#cSmwnzhpn$o74JqK)M*z7i zq@#eC8;jzRu6;tWZf83~|Lpe_OYjcn;x7xYkas3Gb@<$9@-F7F4CnDk*EKvwlgpBK z3y&Qf5zF!J;j!9DALEg;H`7wUz8)*cd!Fky4o*+rn;7f(CfOPCKIFQ0m)er|HIHSg z{h7R9cNoPn=dtg?=8-o!#+s!5G!@s(p5QKc5yU;n`thyha^A%K zk5O3*gI}MOrNWy({P}j`*xrV9Xo(d18)Pa(UwqfcAP7`9l1tZ zLV4d~DkBIb%aH^x=A6NA6`o#!{K7k(vsw^JuWD9sjTVI3sj0OfG)KMAg3xL8LJLAq zgLt;LctR}*z2X`p2>qw9^F6Q@gg&d91YDy9Ax}|mB0bk=LC9a#6yO>y2*p%26}d(W zLh)2hBd*bcP$E^+nQOEll#FYPAmsmnH;2A&T%aOa5X!*B3PR}_SwSd^YIHXmwSrJc zGQ^D_H2#vdRzD)*B*X4n_;vyG|7bzzeerS>o5}Y;fiBj9(A;y&Xgju@QwXTIi?tw> za!C*!Vq706*u`298ry#ZJ!9M#Xt0a5Ak?@;4LZko8qjRUCDfv6LC8C_HN9rM5oo)M zwII}NZ3PPCB|i&vnX#;x7KF<5zf5@;zXE#iVl4=bDxZPMFpi%*kdk1~Q)@wJcE)B@ zmvL^O0xs5qP@3j*s2$@PKy_WL1)+}r)uDX+zH|i|V6dmMT01QW{XMrH730ig@VOB( zS`b>?KR*rN*=z>i6CtAop={Zo(Np}a=v)E6#~I#;o|-%_EeORp{(#i+_yssh3bU^I zF|TPirVyGOB#ou!zH#$LhX^hLRMN#-5SsRe9MyJ1pk^-Cg3z8{m&w%qfkG_Sf>4S> z(WoE4!_z_LxKsq8UrLM?x)Ef%rCJbrIkXp*(+tKTKx53*@-4{-LQU_Mqotf#1ir>JAsH(Ob*cS;DilTN5CRu%h<7Z{ zjORbNg3#q6b!joLsS$+g{FqoOqNnn?Mm2&^T))?}i6_V$8PDUF}JVkhs^>Mi5GzJ-T#5WJV|-2l7lErId7Zm;CDEqR^AFijn;3X4}6OF0v08;UMW`)$`PfsY@L)~>6pvLJC-O96?*9$ z%9@qb2YgYW((dHuzHtq%t)M2@Ku!~|mUeP02t_~ljQDiq37Smv7P(Ow}b6=xeU+UMaXB;>ffc?XBM4=A8khLHqq7J6kjYp<=t7v|B;+PSf!-Rd&YtdnWCWq$ zXGLi}pKIf!!*?+Z`gHyIL0ih}S(T(!EawE{96HY2dpgj_-BdeoSX zYUBdgHOs9a^kmW+nf@KvXO|m6C|Zsc!V{;*F98_zNw?x;xWJy{PVj@H^gAzP0kEQ$ zTS2JJv&yuPc|EWuE;oYE`!Yjm74yDe!wr|SsTG96+LWVB9GZ>5G8_89A7?p={Wk$i za@JXMJR^B_0`BF2Iz3rIDE6U@bP?6J4T>NL`3H}u|G=W*`bOTb!bBAAl090+KnOy7 zZI&%g9xTX~6n?1rRuG!BbEY~^mPJE+G3ED~buKLkefWAoon%`8@D-LH@mpC?1fiv~ zepFM20E~2@2ts#Dj8Id~2HqiR{-xVRNjKDaAH(8*dMI}#XVhqVWvP@tVM;>b)8CBfAJKG#?SJULXJD?&wxDN z{2dTcfz#!4pdl2z)H3TKLZoZ$4A-Jt@ZSpGv122xxL5 z51sDZ4Qb`^HR@0JPS;hRMJe89X-B6U&f_a1 z?{0?8{-{c)8%f1!ROD&Ywg8=Ok}zp9a^B&!KUUFiARnot_`h-d_Nc%6JKd`BTd(}e zoeG)socm2t-pZ$2C%f{O{Ps{3q_m}zoKC!aZ3m59Lvs*!8UwWmhkGz?cQfQEEn++n zXqd&Zd3AZ!V)I(^NQSJ#HmELuDA+r(Kk}Q@WZi=)_`S-LCMjS0qg2=IDAhGPN_EYS zl6S`-enW8usr{`piDvT4leHFVepHAWeR_4EV(E;MfFt7P`HS!Y!-yL zC*Yf)_P2@-kKNvF#Y8hEj`&)^3jwBTvgwVLig4*9Y@V2o8mmst;vY__2;vIf2 z!Q%*B@(Egh>puPhRL%7z_~!^2?Qa!*7ez9O(9@9`gS)OI{#L1#*CkO9w3ta~f9ulV z+X8u+6b_L4j+QNNa1Jl+?rzm*}m zzvDTG`hQ(!{H=k_nvv%=>L0l5j`p{HU338VHbs5ZthP<#Z&e-Dl03;!pW0={-+DD= zD*pZ(^+jD~{H^HCyO5_g>KnMs_*=DlRUuDT)c1Co@wfJT&O@HDsGsCA<8RfXCFEI# z`qeHo{?_og_~V7Ws6Xs7<8LL+_9uC6p#HAQjK4LY?@ID~M7@Ke z2A9-}!8KQ9#Nb-a(D)wg8) z2;}56QyYUTao9=t->6Q_D24e@um;!KH7VhLgO&5)(l22iJ({S&3%P)7ickj|%p{8` z2G{qQ$I@zEtr6hA+Ds14XoIWX+21J_N0tJwG7)2N?K?1#CgCk~_JJH>sy2f$xPJHR zO3n>b-?bBJgR5hzB-EcLjGile*M~>VS{q!s+g^}NCYuR|&%W(?TyQDILd4+OeIWsj zyTuU*S?h`f0O9 z#^4J64S%{n47qU_WLHyL(imJ>+SZr7XbJdV5i;7~8ebwnGKayh+l=bSakrE)xbk$Z zDCu`d`s1s;J6G9c#^74rIgX<`Q3DamV1nfDe`^Ar?e3|(qOr779H^|t#^CZl^RM7w zpjIx{2G^;yqofOGFwl6$yyL3=I!`{{{f)sjI&B6CE=6dQ4XX8$pftf1Y@z4;&kV35f*U+1LgyqR_|&j6Nre_fAUfs6neZLu}Dx~@J( z+j-`Tz*bmp46eFM3ejrDdw>oxR_~29xTfDMOBa~m0=w@{t_`l}Rie{j#?B8o6JU_Z zjlng(@?LtyI3rNFt0H4?H9Qt5yp-Xt!BzN#X4c@ESn3*`RlRN*ROeR4?3@hd;JAgY7g8S%Yg(f?N3ecT``rlWK#j*qlAoizj>z z5>P-l?5>zQW(=<4Iiov6d5Sbh2k{iX%N%|RF}T*WpDXjIgLJEJ=V1)4ZAG(?YIzVc zSG$N<8cMO@Uk+f$XJ^HahLuv30LQxBTvk|Pp^>|?w zX)z^2IXLLM?&Plxu7-`$NsHwXsux*{+Thy##|CM!8$v@PYf&3qU+(l_I%he zN7~5@UWhaHE1}v0>`m#~FFGfU)k3I+Ph&c$4X*lQ5>Odl`hf_I@@df;TnDDsry87@ z2mXgoW7gohbhenZvlsk$gm$#SRenZ)X(tT)WrTLL!8Pr#$I?!W!hw_w!#8WF4X*9E zn@eN)5GupL2z!MwxZW0?M&I$$H$kYKPm9*z>al1o1#)H>_&A@&tiiRuLVe1{nI+(V zMQBGGT!A}3QbEof20!cDj(PNGxh1J-9A}<@fA(odzct$6x_+b${m#KeMewZ$L&P=o z*9Otik11{k637Gx%>2+R+AAoBao+ot5C5 zeA}@G*C+fM={W{?+BD)CTw9LirZ7~$G$?|><=1~G`Qz-I7=x@wVRW~B(;du$OF*xp zxW!xs1Oxsm-;x5R+#f&zy(?WMZ(*)0Qp@Aup`mzLkzb}R7{duTw!b}j>+{RiA3%TW zdyu?s`Q>*fV^ct?m95CzhhO%aj3<3o=n|8>Bl+d@y)P)B((PZ!JB44i&5dV`26@+^ zR~j!nrae~+?cKRW-gQj#WkL5Ke^CkeAy)`_5AfLSin#mTNgi8N1viYlta7(ulilI5 zH=kgWJuEzq0#+Q^0KY3Me6bZLahJS`G0$O*mOrF`OU3YP&}p^uQb6fa(VT!)TT4LM zih(t1SZ5m^x|-O*uSDqE4Tw2sB6$n(SlS|xs7mwLh!hXVTb0MEV>^25@mRD3BQT>? z!(erVz%c8`b;oMpajCsA*729}%g7tTbt_wW$vc|I>K5Ng-pM?c=W%TE&f&4LC8tr&pP*ZEiE2hIuX~(OidZ8V!RxNn82Y5p5 zc(vym<9KyZ_%37Zc=c2@@3=-gUj0-}^b)Aij@MvSlZWak>~c>SzuigS&2 zyvC`Tnp~qDuSr~E9IrlVv9;qhO%d&QO=V&ouUU+&<27G3x&)0{$E#Kx?%kggx5V?!Nui(7`=poXM*THnx=_S_H`2rNBq{Z6tTKlXY&10MbD6Naj?RW4% zrMgG!=cHAPgMdo8SUX;?PL!rIj2i(pcd<-8Gw}0h+RAtU&``$3)S_v}Yw(P@bdm84 zpm{FVj@M+IG^1dloh?AS7|V)j$E#_cos@|21)ys#){fWRy=^HIM2FbmQ9b8a&;fsxZz6RM^GZ@d}I)-T9*haBZMqgFO}1+G)q@$YFnH184ez z508-1j@Py5jVYLCGYfoagp78)N;J(&p?C2c(%;}mIKvy!Q=R8!o(+1xlsusG7Vv%3 zjJXNa{?>7YQt3dPv+b(tn?PL%{!VZzp!6=*j#umLKMF1eRK~^H@!B?NvEU{^EiKlL z*Y~IXq{jRX4+I(JQgOVtzYG&P17x11+VT2z*azJI3$GOuu+pzIlP8E(HWHr4FZk3y!ZR6e9j}_1 zrU^2Rmv`GtU7;PXpG(fu725F{@Y5uzu#Q*a#y`;^Ub9hXe;fwcg4XeB->o*CX1)|` zmF33qIzOPf90mJZW44^3Cwz*y1$N)G;W}O~GSrl<<0+4y+cD^kryZ|`MSdjp zX`dP>BV)C5+nYf3O7WE%VFNiO!OGjot>ZN|r$c-?a+-s+b*DFuSB`7b=qfM%FtDH9 z>5bzxv&b^K$9w_UGIx68c+HxZLY@t}8|;u6vSZ*Az;H4q5b&3O(wb(jd@BU3d>e--8!CG5x9k0u8 za?7(pL%>G5+&Er8OdTQ52Av1C#O22E8h7BSJR9_Hu>CGKj@O^DX2`QaZ-Cu(xpBPu zWm+cB2K@>awW3*l<9JoBQJ=c-c_AfGIu~olYf!3M#NYUwqCllBwvJbl-MdIV8?*^n zJHsP5UU9z+lxKquM_{~f$T(i3s=O!u?&vH9Uu81Z@v2$(m^>SFKhR}^-2+_CqsH;- zfgc;D^SSmFlJ8C0-UO<_jNfQIx5qc3w611ydH<*&zgB5K7u*8=Fq#oalHI{?V{MslYynS+&W&nFRq~^ z%!`1Pbh&Z7N?xr)X_z+xYh$>aO|9c~ILQ*q#-X7IjI|-(n?Pk)wu3wi0GDweqlJN8po?sj~ePETMmFPxBOlyD2~^JNq?y+TLQFqp*UW3s&-dX4h7%~ zG(Dv_UO%iXPyVQ!gMqKwG!)0{d0(%?a2p1`l+#cgudTz^sVOf2T(eNQ4YI-?u|1mX znu@z#K@tkCfh#_g>IxC1x^3?#)t8E;GvEQnD@vzb{yS z_W-ny^Q>LAkp#OU#MhnQ1hqsov;8Ux1b2SNf6F5aYKf?6ql6ONjnJvcf?6V48ZWv8 zA0qT2vY?iT{QJk0U; z7z{eXB(y|Se*7STGXdtiP)S68W!folGr&$4Dv78jdYaU>I}5-U^=buNiRgKf2IP5; z`nSxY@JYu?L_cSHO`e$511UZR&5T48b73fXGNC?)%kF52=;(v<cuDD*q(=eo>DL?iE&BhLoZZ*!TEh;p1OO`eme zKkqUl5mhU8h&+!`|I%efBI;l4E$*L-Lm@T>z3xUL`nd8QdD5Xii_45ebiQf^@{~Y* zIm_&U7EvO4j3a5Gb7+e??yfsOqE|&dvy+cJHNuCU8sTG4jc_+k5Ko7XBw3B;PV?sh z@|)Ra%yK8sHb8xL$f|sF{z`gLj+OL-^-yiCHvxR4y0JAD+y=H1~C<{^2&pvniF9ol+;fJC&B* zDJPse<*574|Id%}a>P3JI(@}<1-eQd{*F+&o^B1fz2hK z1i0jbm`grXx#XjgOFjU(aZFYbLxy57jx>O8W(fwmKqmx zDol-wIrTz~i#hdHjf*)&{QXKl&NHeS7jr6(8W(fwJ2fumR7xH<=2W>M8T9^-75I$7 zFD@TH#+*7h@sZ#}b#OZ%3>s^5s_EJTg7X6vvDlbXJ%6r5P7PEyVw4OG%NJ11Kh4cn z2Y)RLHq?jfZ>jp;SMSUGD3@h35L#@58DufVoO-aWBcQsz)Ma;dgLNhI=^*mu|5chN5 zqh_tmsl21ZB-6rX!r`-VQ+5|Th_Mhcr(%@fO9!~|B}`m%iZc>4=2Vf%RU~=DXBOdG zdz?Grb;&%ntwn4oiL-anatXz*s~1MkNSjm7p7)i7&B5ILb-#UeR!CPQBZr zkuj%I9=jvi0VXT&yfLRTonI|{s^Qk0`tO29#+)j>9FpF4%%gqrUf5UGV0< z8DmcED_lxuH~@U8$yjqLVc+;7&CCGeUt;trNSjlgL)Odo*#g8r(1d&QjXCx1$R5dD z1?L}i!ey*EHS<S&Ev(!DYlXtBlCoGS9NBJpRZvkPpW z<;I+v_^yylehuihi?umbX7*aapMX3K&8qurbE;6y?t+s6rMB3bQ)Q!!qLRF7MZn4# z9^u|s72510^+Q-Q1lpL8HK$sC-XuFg2++uISj?%LQ~we?7ih7?#++(CBA$E;+zGVT zVrx!)-#D1w@aDM&cH44ePK7P$N@0vY0eKpk_r{u2%j?8);^DK=Ne-5Vx%!aw*XC5O zzlxC`<03#M?c~Os3O*c@vNLWD6z-I1%&FAhMR61#WVmZi{hCNKYfi;Vy^bpL#$Jx} z7M__p;N3H^F{dWRsz-TvwxoH@ zNwqmurup}@h9}GdQpQks#oRG#PWk7gZ9GL|r2Fs`zRMhb3NfcHzF8pi_!a57-_FCB zQ|C{#mXlcOyOR9w^f9H6m6VhN# zgo<;}e!Wp^W6i1TXMU6x>m$@IvKF;D75iuoX>k}rlOk(Tn^T(~+>{poKxkWJEoyVB z@X&)ajW_!lgs%IvXw9kn8i&b$Nn1czT?Yfk09FjLw|2A+X4c3pMmnKS0_a%rbH zc%=yK=zCx7jgnm2X$jubryae`^u4d*-%BEmjYDX*Ph&c$&8hVj2GbB;`i%(vzms-SgJs(3n%z=leO;c25H ztLeif41ZaNW`{yiDD!DtZ6nm(}<7q=2`Vi<0+mez|JmbqctiH!XRO z^UEZ0x=}!_T(GXL@ynvqAwE^gjoWBF=9d}5W>G-qj(B?JM}B!~ARdyrFZCnx2H-;{ zAf10QJY=*{XYwY+%Z^D$;W3@t&u%1dCZ>y5;Z9NfB`2W9=5*u@;<20S?vuA1k7eER zp1d`9?7u^}@m50~+cK>M1&mCd1XHYlLp8K>6$jbRKk9%5mJI|N>+|=+qxE0o)JXZK&U-E9{u@^CMm#)1$ zHmOb{^8U+XLo?i>fCUF2a1EbYjJ%;-7jr$H8~O-i9fz*Nv~RfXVno2{-kA&c z|7wY`y*H!b{$D&6^s_(Pc{>R$2~ysr^6by9KMbcKNIOkI zTDz3HnoqTD-r^+v#B?yocth2BLQWR?*`N8J?~&XRWd8EWnP-2VycpF{O&tQh=o8UR z$+JHv`i+sMo+IE4AOyKFHaiPdlxI%MTX^|tM20Z(df4)%f zfIR!to-rc!wC3i0vrf`t)Nb3%oo&$Zwj3T6-c;^i*|s2eus@yP8UM#K1@=3~>v>bn zSUr(*VV3K&$Vm*8(c(T)k>T&0=JB3As!zoCU+@~=X2J)T#EyfXmRcb+;(rlTX_-Vl z!E@uS|36Rg{1=FLi|NpIQsN0#M%j3Fyq|0c%rTv4tOw(6h z=Nu+w*ib2B;C0YKER62{ghx0!Kl&oQZQAPYPwNr(;~MP|o*95+(RhS6`Gt2nW9<{t1!r2*Xk8r!HDb6+8Bm76z)Z`lN5$;ztExAT}ghy0OZ?4fE;R#jq zGuLR3@T{tt!8O_=yu>xeBg_+(H;48JuPdTG!kSF1M|hi&^$72)MxUV3$UVY5U*E`C zE@ONAHj2ToLKqHF;}H%mbeRfcVy7HX6&GudFwNfuDGVFkX${oT#o8mx+WJp=&G;vv zF)r2~;o0%6C>b}t2xx_iwMY2r=?Zcf?*Tf*xSCot?GcW+m6`$>hXRGUSbK!A@qMid zW9k6^1A|^M?Ga|GKbV3UrvggvV(k$oFIbnlF)jvF#>Ltr95iPD4QJd0sHKawN0_H| z7Mj9%5YTWJYmcx%$G7xy4Dc+VrT-smZviF65w>kVJqrU2EV2X%gy8OOiv@Rg3+@^` zxVr^OaCdh|aCckW-JPHT{`;w?s(NSH_dVY^@6S0+ch_}ywf9W-Tw86hr?y%x^pAFEKB z&=TztE{M^Omh$|vgXCqZHiYpAm;YLWoC+weW+&8^-#-%*W~b%6C)xr178dWT*0um` zVLTdWB4atpv`6@EXH449csbA}GqrqV7?1GB)&R93Zb_M zL};hyqYf;8kMQP(pXiiY(^~&LrI6*GJ!U&giGiCLAQB=>f!Nh0qb^; z65i2p>k-~5^h%KN2+wAGrwg=4xc}QHU7$U}KHZ;6f%OREq-;wudCg9s{t$Gs1+7Oo zsOU6G!2CJbTg#0{7(d<~IST^YC!yHr}?-fzgzhw~em@{t^P6ti1II^B-A2U-%M{4lE0Eb#!W;*U43Qw`{yJ zV3q9j=4FykhtxD-$Yi)~wRZzE2oJUsiBVC^k89^vQ9H)ZP#0~%wo^#~6Q-$sXc z?u)@zT5dhU4okMs8RiGUj=S7=gw2{prK`*zfIV}$@dyu`4sh->kJJh6U!v1%Z#=?& zN8{2<=BdFly4-k#zT11~6Z4W__j%zp;2a@qgX%pX(7uNE(xV;iG02QVVPy)+2n>t0k3Vz60#A;hsKRiS-EA@BAR4 zI|w{7A=e}9J~yiHfZy=`Gjy`=tw$KQObOx1!P2_ic!WP>Dk8inSZT}c%Op=GxIr~| zA)A1;vfO%vk%qpfUzraA8{u-}5w46=hgvhA54Os1xtdy!Fws6Qb>Yw<1kT!!zekv0 zP7KHM2=E05)YnAo5$2x}!->E*H0Wf1LHlt;+Er~MYe&~CTu=U{g>N?p86?Nyz-t#@DZY!?Vx8~|1I~IU%w*mrqSL(Ln zV(e|Ard$rN)`j8`W}dKBO?e1_Z_xCV;t_VQcaJKf@E$t8Ytv9X!X%kcEgVtEgY8KBfI-eBw1hgLEhR1<&Ke8DizVG}ls69ewYiDW+?%c$GFT)FJk1*Hp z*bsaq5jL%IQG(eJ`X#)e_6VnZxh}!F2sQT$T8}W@p|6tZ2R<@PMtg*w zBljdTAAFU6Mm)mIv9?NLKj=}D&>rEwrP~GG26*T~Lic`Bj2hRcjc zI3o?5#@wpK?wCG{Ji}2w)-rpdg?+k}1BdcFCvJ2IIuSkBotb#5qGUln^V9&J zdTM~rJvG3Oae{feP#$6KRlmu3^bNC&h)Mzy@NNt;9%1|1kA)`&OX+gs5f(|Sr!NFn z+~vk2T=HjMnZ6-dGnX5WaQJ_{g!cm*VtF{L?cuAjcR3cb{=;;OasBY5JvGALBaDn^ zL&@1Abfj%c@d%T18*I*ZZLm4YBP^m?U~>vo&K4Cdw0-Vy1P&s=lF`neZDGipRYIE=M$Uzd=cP2pTykfQ&-E5$09H;t>{9!{QN^Qp3^$ zTX{7s9$`&2EFNJ!H7p)sa~?Jx;lw>l_V%z;eM2fSS5kdxS}D z3>Dl5XpqImBb>DI8~k?^&u5e#70VY;;}MR|8i21EV2Av;{+6me!m6Fu$Zgpzgr3@9 zE?G?R2m}8hYQw7)u@7$j(88SfHRqh@dzjPj^M<`E_6zOlw+zk zgYgLW?~U#_jZoaePN-X8d-8+N`HZ8^83p2g&U@6XwMY2;(FszSWi}HEheVjQSMWZ@ zLc}9{_P9Jn=cRha#PtX{BSGU4dS{=OWKdtT7;dP%s_ki~{RJhHi!-V=HzO6rcY2ol zETI}43dOZYm@r2lS=erNM(XDT;}Kr#+fMid!>vcybAU$1BfR$Mk!1Intn7K?5njuu zx7#(ttw;DOSR>;RcIx^Qe*f-=A6U?Z+WW>MeBLO(97UBm9LAf8!D6n_pFeX%Na|gKBXls6E2uU6V_& zGD3~Q3u=#W&hb4G?1j(}8Rry?4Pk7Vd1&IP*OhGN+VE_Lvkh5 z9^u}k>8LATVp;;Vx7d1w0sCK2Kjy>1#)jqVoYX-#sTcDlV5^w(_0YD!HgHjOd46&b z=(wHSc!Y%}XB2!N=&8llBTUe}BJpRZ;~fb90i7(o@d%gxqMu!*1WNB>?GZNjzLnaG z0hMvF_6Wz{h~lV^=O#d{EVdqDnWocd1h3j4u(5`R@d&-=4wL#JYzYFZOvrkKgL9Xa zy?hYpcqrVyCnfN-di(H_;QK&NEjAuu#x=L(b132<90cfO^{q#E=~)*l!232OSbEEi zM_B9RZ1>yS)cRj+06*aRS;q`F^=nvl5FOjCfdR0SJYdpe`3(=_;&-O=z5_3>i z%Cx}tZ~wS7oOxcbLZ%|?5q@?)l2Z-Eb?l_tBfK$nJH6uxJA;fi)LjC1$asYGsv~*u z$?YsadIwLzr!~YCMe4rSNLh9^v>!jikoc2ziEnzs`}gN7%prQM%4MDj`CtIA~YedW82E4yDJO zDFj}|uQKZq-W`5X>S+SrK1@Bj1-4pW?n^zxz$b>OM|*@jm-m)>mV^K8SC8z3NZKPD zvpklg7AgdxyMC4Fp!NupUh&WYUivQxMIPqAhAPv@b8b4?=;usQ@C=->2cPu_XRhif z^%MuM6s8{S5#CO-N$P0@-X%;ux&^kpgGWd`W58$n)uR_&dxXEFKO~iHLg;{BWfC+V zVZ$6#X$mj>4TK*1)o4A!rMvsmJkA6R$4P)L)EX91j$qw@Y_|^6D$b+^&&C<|SddKP zfI1Hj(l*YN1+U>>k7k-NmSr$%wfst2|_Z-5$Ngrb4ZI!?8L)&CC(vkNOmz8^33rgKkjDFzJZH<L!f2bic|ypSC%6WAJ2HJy0Sn1ra(rKM zmL%_B9*X<~n%!6)x|0}htNfFP>UuwrcODN7e}NZ=cD>Yve3cWvgT(luC|Z6yaTZIE zZxr;t+jzNV#GPoKu0} z``BIjf9vtX86^4H40`-%20eZfgC0M;L@zVG`Ju;;RnUtlRr5m?jHzcT{PaFtk1${~ zfbj^Ie2$6tl5{8;Z7Q8U(&bxBis?};%bm_9PhoN)tUbb!EpQ5JkMP^U;_@x44R|MX z0fYD}to8^OtXwH{1jsm-ibq)c_+A=|w6hpwrAx&lJoIEcO=7wqtSe$>l+&s9(-{gtNPSCZ`ry6Xw(S zJB!+m+9NDj?gzAg1vJbL%MxpkFnBlqFljpYn(s3b6pyeGe)wC+Ti_saXKZ#kiYQz0 zISJtr<_xYyo@YQG(7_|*tAniEmoBkL%wsMK`=qreADfN4{>dI;#BoU|xG6j;>k&>k z-j6Qvj0@wiEsHMT2CwI1HDmDz2W{K|{}ZT##ou{^OUF*d_h0Zozt89mqAFXM-~*c3 zTY=Eg{~;J^SB2vdIz*Hz&X@G^I+<_ymuhmE)^cwU>b11qIHOkIjc&xbBTH9tSULlCFY&8s^k`zn0L-{iSY>YsKqw#oK-}7gf*F1k1!=8 z>k+0?mFAp)=L9L2_N64AgN|Q&gcFvZkgHq=M7p92$o?3osPPDYny{V*Vu_rwK$Bdo zJ;G8=dsAk{D}mO#SbKzzAXNu5J_dBg#o8mh+uorjjGq9#aLA%&~g`Rk1&%r0$pXi59o-C%{ylsHKH8rfbRf3H`r55t)2D= z`!C;01vwMx5BPuR)Z*)m_6Yy@6y15wvq=x0D@;avgdv_qbo&u5hZVu=aE3Rcrwq?a zdxTdGP8ON3GjI=6jcJc?$%kY@$Ae6<)OdvL+B6ru8fc@7wMY0YG6_Bb6yjp-5tfY` z)ltnWJOg@TvGxeJ-Saq4aY1mRPQsh8(8(@LEFNLxc27ysv>=%+)gIx2LG8#Xiqg_d z)PbWt!czxo!v92R6HBy5SoP3Qdd2hm9b^Dgb;uZxu=DlQF3_GFm2;04%NpE;h zYy|o{EZ&!)VR|AQ-%be7WyW$WYLBq$yO|Wo_zlokGqrrm7>{sxo%ED|Gw~)Tp=9Xf zcu>!(tw$K?W@akI2Td>nwWMBu5qW!Bn9>v5ZHUzriv} z#}mv9k7o-=`(qs8TMV}z;g~g!qb4;T;rKU!xu!Lc5}U4RA~9BMNd zk8tNd`cKVgBD92qydyo8_-wKsVWJrN@Z1a2yJ?BeAXRsco z4!1qRyy@|>BIXmp{S`Oo78j|ZA!vGoW?r|v<$c=l_+Hd$^w!dF-B$ksUt zbk1Vy5&lqbC|%;YzX1E!a_bQ`FYj^gFpu#U4gz#~?Tkmb_~QwB#ym4vPL~^xa8B8O z=soj_VAWl2Ji?Rj@H^8R@D5;IU2Z(WN^u@hROaKrCR=Vi!q#n;(O14?t^(TNV(k&G zsIY+e8y^~dg9K)=^$34?QjTJB?a#nI7#_wWJc|~h;&3Qv8gApz$$8Kg-<-*KgcGuq zCI0T{QdUop_sTyNr+Ciguh34Dg90IWChI40d;w^9%09$4X7N7YZ{~$Bq8lTqi|ly- zzTFCVtDv+;c(`jfHRT(Ck1iCC@bs(NYRZ_HDc_*!Da9lFeaIA=iYYPz@LijR;t_7S zR#?F@0DLQ_p?HJ|MxxP8OxXgUorR%Rcobm$oj34D7w`n1?1 z&+8k^Q{a9jJdbcl-Ark%ejGg*S)5aRpJ?}FMRjNEtttwF{~ zgHWFEg4!c&)i*?fl@V$bUQm04BTC(tU@wG5h8NTxVXBUEB{(0URenM15%#?KSTYB} z&xFZnkMLBAGm?1%{?0!m9$~)43ndYVJMY-&)Yi}*Vc#6f1f~PX;zH#SW}(#rO9GU4 zq4Ee*zndelDFENpOSRS`oEK1^JpEBVlvzZ+=va?1e;%~0Hv{GKTxLAN0S&j1XA8=A zxa_X>2>Z@IL7otlUv`=C2Z}hkG z*@!-$y4>f}gZq5qai5QH?(^BeeLkAG&&MqH`S9dEABo)Oox*+I0o><}&3)dm+~

+

+[Go Top] +


+ +Q: Except the python-C++ interface provided, could I use Jython to call libsvm ? +
+

Yes, here are some examples: + +

+$ export CLASSPATH=$CLASSPATH:~/libsvm-2.91/java/libsvm.jar
+$ ./jython
+Jython 2.1a3 on java1.3.0 (JIT: jitc)
+Type "copyright", "credits" or "license" for more information.
+>>> from libsvm import *
+>>> dir()
+['__doc__', '__name__', 'svm', 'svm_model', 'svm_node', 'svm_parameter',
+'svm_problem']
+>>> x1 = [svm_node(index=1,value=1)]
+>>> x2 = [svm_node(index=1,value=-1)]
+>>> param = svm_parameter(svm_type=0,kernel_type=2,gamma=1,cache_size=40,eps=0.001,C=1,nr_weight=0,shrinking=1)
+>>> prob = svm_problem(l=2,y=[1,-1],x=[x1,x2])
+>>> model = svm.svm_train(prob,param)
+*
+optimization finished, #iter = 1
+nu = 1.0
+obj = -1.018315639346838, rho = 0.0
+nSV = 2, nBSV = 2
+Total nSV = 2
+>>> svm.svm_predict(model,x1)
+1.0
+>>> svm.svm_predict(model,x2)
+-1.0
+>>> svm.svm_save_model("test.model",model)
+
+
+ +

+[Go Top] +


+ +Q: I compile the MATLAB interface without problem, but why errors occur while running it? +
+

+Your compiler version may not be supported/compatible for MATLAB. +Please check this MATLAB page first and then specify the version +number. For example, if g++ X.Y is supported, replace +

+CXX = g++
+
+in the Makefile with +
+CXX = g++-X.Y
+
+

+[Go Top] +


+ +Q: On 64bit Windows I compile the MATLAB interface without problem, but why errors occur while running it? +
+

+ + +Please make sure that you use +the -largeArrayDims option in make.m. For example, +

+mex -largeArrayDims -O -c svm.cpp
+
+ +Moreover, if you use Microsoft Visual Studio, +probabally it is not properly installed. +See the explanation +here. +

+[Go Top] +


+ +Q: Does the MATLAB interface provide a function to do scaling? +
+

+It is extremely easy to do scaling under MATLAB. +The following one-line code scale each feature to the range +of [0,1]: +

+(data - repmat(min(data,[],1),size(data,1),1))*spdiags(1./(max(data,[],1)-min(data,[],1))',0,size(data,2),size(data,2))
+
+

+[Go Top] +


+ +Q: How could I use MATLAB interface for parameter selection? +
+

+One can do this by a simple loop. +See the following example: +

+bestcv = 0;
+for log2c = -1:3,
+  for log2g = -4:1,
+    cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
+    cv = svmtrain(heart_scale_label, heart_scale_inst, cmd);
+    if (cv >= bestcv),
+      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
+    end
+    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
+  end
+end
+
+You may adjust the parameter range in the above loops. +

+[Go Top] +


+ +Q: I use MATLAB parallel programming toolbox on a multi-core environment for parameter selection. Why the program is even slower? +
+

+Fabrizio Lacalandra of University of Pisa reported this issue. +It seems the problem is caused by the screen output. +If you disable the info function +using

#if 0,
then the problem +may be solved. +

+[Go Top] +


+ +Q: How to use LIBSVM with OpenMP under MATLAB/Octave? +
+ +

+First, you must modify svm.cpp. Check the following faq, + +How can I use OpenMP to parallelize LIBSVM on a multicore/shared-memory computer? + +

+To build the MATLAB/Octave interface, we recommend using make.m. +You must append '-fopenmp' to CXXFLAGS and add '-lgomp' to mex options in make.m. +See details below. + +

+For MATLAB users, the modified code is: +

+mex CFLAGS="\$CFLAGS -std=c99" CXXFLAGS="\$CXXFLAGS -fopenmp" -largeArrayDims -I.. -lgomp svmtrain.c ../svm.cpp svm_model_matlab.c
+mex CFLAGS="\$CFLAGS -std=c99" CXXFLAGS="\$CXXFLAGS -fopenmp" -largeArrayDims -I.. -lgomp svmpredict.c ../svm.cpp svm_model_matlab.c
+
+ +

+For Octave users, the modified code is: +

+setenv('CXXFLAGS', '-fopenmp') 
+mex -I.. -lgomp svmtrain.c ../svm.cpp svm_model_matlab.c
+mex -I.. -lgomp svmpredict.c ../svm.cpp svm_model_matlab.c
+
+ +

+If make.m fails under matlab and you use Makefile to compile the codes, +you must modify two files: + +

+You must append '-fopenmp' to CFLAGS in ../Makefile for C/C++ codes: +

+CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp -I$(MATLABDIR)/extern/include -I..
+
+and add '-lgomp' to MEX_OPTION in Makefile for the matlab/octave interface: +
+MEX_OPTION += -lgomp
+
+ +

+ To run the code, you must specify the number of threads. For + example, before executing matlab/octave, you run +

+> export OMP_NUM_THREADS=8
+> matlab
+
+Here we assume Bash is used. Unfortunately, we do not know yet +how to specify the number of threads within MATLAB/Octave. Our +experiments show that +
+>> setenv('OMP_NUM_THREADS', '8');
+
+does not work. Please contact us if you +see how to solve this problem. On the other hand, you can +specify the number of threads in the source code (thanks +to comments from Ricardo Santiago-mozos): +
+#pragma omp parallel  for private(i) num_threads(8)
+
+

+[Go Top] +


+ +Q: How could I generate the primal variable w of linear SVM? +
+

+Let's start from the binary class and +assume you have two labels -1 and +1. +After obtaining the model from calling svmtrain, +do the following to have w and b: +

+w = model.SVs' * model.sv_coef;
+b = -model.rho;
+
+if model.Label(1) == -1
+  w = -w;
+  b = -b;
+end
+
+If you do regression or one-class SVM, then the if statement is not needed. + +

For multi-class SVM, we illustrate the setting +in the following example of running the iris +data, which have 3 classes +

  
+> [y, x] = libsvmread('../../htdocs/libsvmtools/datasets/multiclass/iris.scale');
+> m = svmtrain(y, x, '-t 0')
+
+m = 
+
+    Parameters: [5x1 double]
+      nr_class: 3
+       totalSV: 42
+           rho: [3x1 double]
+         Label: [3x1 double]
+         ProbA: []
+         ProbB: []
+           nSV: [3x1 double]
+       sv_coef: [42x2 double]
+           SVs: [42x4 double]
+
+sv_coef is like: +
++-+-+--------------------+
+|1|1|                    |
+|v|v|  SVs from class 1  |
+|2|3|                    |
++-+-+--------------------+
+|1|2|                    |
+|v|v|  SVs from class 2  |
+|2|3|                    |
++-+-+--------------------+
+|1|2|                    |
+|v|v|  SVs from class 3  |
+|3|3|                    |
++-+-+--------------------+
+
+so we need to see nSV of each classes. +
  
+> m.nSV
+
+ans =
+
+     3
+    21
+    18
+
+Suppose the goal is to find the vector w of classes +1 vs 3. Then +y_i alpha_i of training 1 vs 3 are +
  
+> coef = [m.sv_coef(1:3,2); m.sv_coef(25:42,1)];
+
+and SVs are: +
  
+> SVs = [m.SVs(1:3,:); m.SVs(25:42,:)];
+
+Hence, w is +
+> w = SVs'*coef;
+
+For rho, +
+> m.rho
+
+ans =
+
+    1.1465
+    0.3682
+   -1.9969
+> b = -m.rho(2);
+
+because rho is arranged by 1vs2 1vs3 2vs3. + + + +

+[Go Top] +


+ +Q: Is there an OCTAVE interface for libsvm? +
+

+Yes, after libsvm 2.86, the matlab interface +works on OCTAVE as well. Please use make.m by typing +

+>> make 
+
+under OCTAVE. +

+[Go Top] +


+ +Q: How to handle the name conflict between svmtrain in the libsvm matlab interface and that in MATLAB bioinformatics toolbox? +
+

+The easiest way is to rename the svmtrain binary +file (e.g., svmtrain.mexw32 on 32-bit windows) +to a different +name (e.g., svmtrain2.mexw32). +

+[Go Top] +


+ +Q: On Windows I got an error message "Invalid MEX-file: Specific module not found" when running the pre-built MATLAB interface in the windows sub-directory. What should I do? +
+

+ +The error usually happens +when there are missing runtime components +such as MSVCR100.dll on your Windows platform. +You can use tools such as +Dependency +Walker to find missing library files. + +

+For example, if the pre-built MEX files are compiled by +Visual C++ 2010, +you must have installed +Microsoft Visual C++ Redistributable Package 2010 +(vcredist_x86.exe). You can easily find the freely +available file from Microsoft's web site. + +

+For 64bit Windows, the situation is similar. If +the pre-built files are by +Visual C++ 2008, then you must have +Microsoft Visual C++ Redistributable Package 2008 +(vcredist_x64.exe). +

+[Go Top] +


+ +Q: LIBSVM supports 1-vs-1 multi-class classification. If instead I would like to use 1-vs-rest, how to implement it using MATLAB interface? +
+ +

+Please use code in the following directory. The following example shows how to +train and test the problem dna (training and testing). + +

Load, train and predict data: +

+[trainY trainX] = libsvmread('./dna.scale');
+[testY testX] = libsvmread('./dna.scale.t');
+model = ovrtrain(trainY, trainX, '-c 8 -g 4');
+[pred ac decv] = ovrpredict(testY, testX, model);
+fprintf('Accuracy = %g%%\n', ac * 100);
+
+Conduct CV on a grid of parameters +
+bestcv = 0;
+for log2c = -1:2:3,
+  for log2g = -4:2:1,
+    cmd = ['-q -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
+    cv = get_cv_ac(trainY, trainX, cmd, 3);
+    if (cv >= bestcv),
+      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
+    end
+    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
+  end
+end
+
+

+[Go Top] +


+ +Q: I tried to install matlab interface on mac, but failed. What should I do? +
+ +

+We assume that in a matlab command window you change directory to libsvm/matlab and type +

+>> make
+
+We discuss the following situations. + +
    +
  1. An error message like "libsvmread.c:1:19: fatal error: +stdio.h: No such file or directory" appears. + +

    +Reason: "make" looks for a C++ compiler, but +no compiler is found. To get one, you can +

      +
    • Install XCode offered by Apple Inc. +
    • Install XCode Command Line Tools. +
    + +

    +

  2. On OS X with Xcode 4.2+, I got an error message like "llvm-gcc-4.2: +command not found." + +

    +Reason: Since Apple Inc. only ships llsvm-gcc instead of gcc-4.2, +llvm-gcc-4.2 cannot be found. + +

    +If you are using Xcode 4.2-4.6, +a related solution is offered at +http://www.mathworks.com/matlabcentral/answers/94092. + +

    +On the other hand, for Xcode 5 (including Xcode 4.2-4.6), in a Matlab command window, enter +

      +
    • cd (matlabroot) +
    • cd bin +
    • Backup your mexopts.sh first +
    • edit mexopts.sh +
    • Scroll down to "maci64" section. Change +
      +		CC='llvm-gcc-4.2'
      +		CXX='llvm-g++-4.2'
      +
      +to +
      +		CC='llvm-gcc'
      +		CXX='llvm-g++'
      +
      +
    + +Please also ensure that SDKROOT corresponds to the SDK version you are using. + +

    +

  3. Other errors: you may check http://www.mathworks.com/matlabcentral/answers/94092. + +
+

+[Go Top] +


+ +Q: I tried to install octave interface on windows, but failed. What should I do? +
+ +

+This may be due to +that Octave's math.h file does not +refer to the correct location of Visual Studio's math.h. +Please see this nice page for detailed +instructions. +

+[Go Top] +


+

+LIBSVM home page +

+ + diff --git a/gklearn/gedlib/lib/libsvm.3.22/Makefile b/gklearn/gedlib/lib/libsvm.3.22/Makefile new file mode 100644 index 0000000..6289cb7 --- /dev/null +++ b/gklearn/gedlib/lib/libsvm.3.22/Makefile @@ -0,0 +1,24 @@ +CXX ?= g++ +CFLAGS = -Wall -Wconversion -O3 -fPIC +OS = $(shell uname) + +all: svm-train svm-predict svm-scale + +lib: svm.o + if [ "$(OS)" = "Darwin" ]; then \ + SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so"; \ + else \ + SHARED_LIB_FLAG="-shared -Wl,-soname,libsvm.so"; \ + fi; \ + $(CXX) $${SHARED_LIB_FLAG} svm.o -o libsvm.so + +svm-predict: svm-predict.c svm.o + $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm +svm-train: svm-train.c svm.o + $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm +svm-scale: svm-scale.c + $(CXX) $(CFLAGS) svm-scale.c -o svm-scale +svm.o: svm.cpp svm.h + $(CXX) $(CFLAGS) -c svm.cpp +clean: + rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so diff --git a/gklearn/gedlib/lib/libsvm.3.22/Makefile.win b/gklearn/gedlib/lib/libsvm.3.22/Makefile.win new file mode 100644 index 0000000..b1d3570 --- /dev/null +++ b/gklearn/gedlib/lib/libsvm.3.22/Makefile.win @@ -0,0 +1,33 @@ +#You must ensure nmake.exe, cl.exe, link.exe are in system path. +#VCVARS64.bat +#Under dosbox prompt +#nmake -f Makefile.win + +########################################## +CXX = cl.exe +CFLAGS = /nologo /O2 /EHsc /I. /D _WIN64 /D _CRT_SECURE_NO_DEPRECATE +TARGET = windows + +all: $(TARGET)\svm-train.exe $(TARGET)\svm-predict.exe $(TARGET)\svm-scale.exe $(TARGET)\svm-toy.exe lib + +$(TARGET)\svm-predict.exe: svm.h svm-predict.c svm.obj + $(CXX) $(CFLAGS) svm-predict.c svm.obj -Fe$(TARGET)\svm-predict.exe + +$(TARGET)\svm-train.exe: svm.h svm-train.c svm.obj + $(CXX) $(CFLAGS) svm-train.c svm.obj -Fe$(TARGET)\svm-train.exe + +$(TARGET)\svm-scale.exe: svm.h svm-scale.c + $(CXX) $(CFLAGS) svm-scale.c -Fe$(TARGET)\svm-scale.exe + +$(TARGET)\svm-toy.exe: svm.h svm.obj svm-toy\windows\svm-toy.cpp + $(CXX) $(CFLAGS) svm-toy\windows\svm-toy.cpp svm.obj user32.lib gdi32.lib comdlg32.lib -Fe$(TARGET)\svm-toy.exe + +svm.obj: svm.cpp svm.h + $(CXX) $(CFLAGS) -c svm.cpp + +lib: svm.cpp svm.h svm.def + $(CXX) $(CFLAGS) -LD svm.cpp -Fe$(TARGET)\libsvm -link -DEF:svm.def + +clean: + -erase /Q *.obj $(TARGET)\*.exe $(TARGET)\*.dll $(TARGET)\*.exp $(TARGET)\*.lib + diff --git a/gklearn/gedlib/lib/libsvm.3.22/README b/gklearn/gedlib/lib/libsvm.3.22/README new file mode 100644 index 0000000..5b32236 --- /dev/null +++ b/gklearn/gedlib/lib/libsvm.3.22/README @@ -0,0 +1,769 @@ +Libsvm is a simple, easy-to-use, and efficient software for SVM +classification and regression. It solves C-SVM classification, nu-SVM +classification, one-class-SVM, epsilon-SVM regression, and nu-SVM +regression. It also provides an automatic model selection tool for +C-SVM classification. This document explains the use of libsvm. + +Libsvm is available at +http://www.csie.ntu.edu.tw/~cjlin/libsvm +Please read the COPYRIGHT file before using libsvm. + +Table of Contents +================= + +- Quick Start +- Installation and Data Format +- `svm-train' Usage +- `svm-predict' Usage +- `svm-scale' Usage +- Tips on Practical Use +- Examples +- Precomputed Kernels +- Library Usage +- Java Version +- Building Windows Binaries +- Additional Tools: Sub-sampling, Parameter Selection, Format checking, etc. +- MATLAB/OCTAVE Interface +- Python Interface +- Additional Information + +Quick Start +=========== + +If you are new to SVM and if the data is not large, please go to +`tools' directory and use easy.py after installation. It does +everything automatic -- from data scaling to parameter selection. + +Usage: easy.py training_file [testing_file] + +More information about parameter selection can be found in +`tools/README.' + +Installation and Data Format +============================ + +On Unix systems, type `make' to build the `svm-train' and `svm-predict' +programs. Run them without arguments to show the usages of them. + +On other systems, consult `Makefile' to build them (e.g., see +'Building Windows binaries' in this file) or use the pre-built +binaries (Windows binaries are in the directory `windows'). + +The format of training and testing data file is: + +

x`q>&V2BdAKB4Pp2fFi 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%0D=V-(2bN!Zkf7WL{L)Y=F-2T;a9ZT%q$5HL;zog& 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