diff --git a/.bumpversion.cfg b/.bumpversion.cfg index d059d740e..6d0944b7e 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.0 +current_version = 0.8.1 commit = False tag = False allow_dirty = False diff --git a/.test_durations b/.test_durations index bf283f1a9..7a7768311 100644 --- a/.test_durations +++ b/.test_durations @@ -1,4 +1,74 @@ { + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv1d_nn_pert]": 2.59026943400022, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv1d_nn_up]": 2.7703545530002884, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv1d_no_grad_up]": 0.8260756999989098, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv2d_nn_pert]": 1.101015895999808, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv2d_nn_up]": 1.206421760000012, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv3d_nn_pert]": 1.4294998579989624, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[conv3d_nn_up]": 1.3345100419992377, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[simple_nn_class_up]": 3.361096810000163, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[simple_nn_pert]": 0.6431655560008949, + "tests/influence/test_influence_calculator.py::test_dask_ekfac_influence[simple_nn_up]": 0.7108467549987836, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_pert-arnoldi]": 1.4143697240015172, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_pert-cg]": 2.522983850998571, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_pert-direct]": 1.3974800130017684, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_up-arnoldi]": 1.4222584220005956, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_up-cg]": 2.5742563249987143, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_nn_up-direct]": 1.3653277730008995, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_no_grad_up-arnoldi]": 0.48600830500072334, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_no_grad_up-cg]": 0.7124692380002671, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv1d_no_grad_up-direct]": 0.47575023000172223, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_pert-arnoldi]": 0.8454596849987865, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_pert-cg]": 1.7426123529985489, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_pert-direct]": 0.808057442000063, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_up-arnoldi]": 0.8408936979994905, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_up-cg]": 1.8711466349977854, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv2d_nn_up-direct]": 0.7968461060008849, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_pert-arnoldi]": 1.041476223997961, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_pert-cg]": 2.6348945509980695, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_pert-direct]": 1.0208977649999724, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_up-arnoldi]": 1.3290127370019036, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_up-cg]": 5.805227180999282, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[conv3d_nn_up-direct]": 1.8304335940010787, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_class_up-arnoldi]": 1.9109577300005185, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_class_up-cg]": 4.174298836998787, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_class_up-direct]": 1.5329143839990138, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_pert-arnoldi]": 0.4525704900006531, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_pert-cg]": 0.8970914879992051, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_pert-direct]": 0.46585072099878744, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_up-arnoldi]": 0.4456351110020478, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_up-cg]": 1.0693235140006436, + "tests/influence/test_influence_calculator.py::test_dask_influence_factors[simple_nn_up-direct]": 0.473094435999883, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv1d_nn_pert]": 2.9761773999980505, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv1d_nn_up]": 4.120701600999382, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv1d_no_grad_up]": 1.3337201610011107, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv2d_nn_pert]": 2.1662617799993313, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv2d_nn_up]": 3.132741712999632, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv3d_nn_pert]": 2.958187670999905, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[conv3d_nn_up]": 29.53393912699903, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[simple_nn_class_up]": 3.257567571998152, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[simple_nn_pert]": 1.361139677999745, + "tests/influence/test_influence_calculator.py::test_dask_influence_nn[simple_nn_up]": 1.261350679998941, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv1d_nn_pert]": 2.6579838110010314, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv1d_nn_up]": 2.6499502710012166, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv1d_no_grad_up]": 0.8881425300005503, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv2d_nn_pert]": 1.463408392999554, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv2d_nn_up]": 1.4602782740003022, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv3d_nn_pert]": 1.7320480180023878, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[conv3d_nn_up]": 1.5744405670029664, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[simple_nn_class_up]": 4.504372877998321, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[simple_nn_pert]": 0.8736393959989073, + "tests/influence/test_influence_calculator.py::test_sequential_calculator[simple_nn_up]": 0.8922971840001992, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv1d_nn_pert]": 2.381483594999736, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv1d_nn_up]": 2.314768557000207, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv1d_no_grad_up]": 0.7438636890019552, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv2d_nn_pert]": 0.9980942529964523, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv2d_nn_up]": 1.1705565329993988, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv3d_nn_pert]": 1.2230443010012095, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[conv3d_nn_up]": 4.6594328910014156, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[simple_nn_class_up]": 3.0931850600009057, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[simple_nn_pert]": 0.7189972920023138, + "tests/influence/test_influence_calculator.py::test_thread_safety_violation_error[simple_nn_up]": 0.7615732119993481, "tests/influence/test_influences.py::test_influence_linear_model[cg-train_set_size_200-perturbation]": 0.8664472580130678, "tests/influence/test_influences.py::test_influence_linear_model[cg-train_set_size_200-up]": 0.18988716599415056, "tests/influence/test_influences.py::test_influence_linear_model[direct-train_set_size_200-perturbation]": 0.66577532098745, @@ -78,61 +148,230 @@ "tests/influence/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data3-8-160-1e-05]": 4.422049004002474, "tests/influence/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data4-4-250-1e-05]": 9.08382142597111, "tests/influence/test_util.py::test_lanzcos_low_rank_hessian_approx_exception": 0.0035210640053264797, - "tests/test_plugin.py::test_failure": 0.001304317032918334, - "tests/test_plugin.py::test_fixture_call_no_arguments": 0.0014436830242630094, - "tests/test_plugin.py::test_fixture_only[1]": 0.0011941569682676345, - "tests/test_plugin.py::test_fixture_only[2]": 0.0013037140015512705, - "tests/test_plugin.py::test_marker_and_fixture[1]": 0.0011783259978983551, - "tests/test_plugin.py::test_marker_and_fixture[2]": 0.001276884024264291, - "tests/test_plugin.py::test_marker_ignore_exception[0]": 0.0011224850022699684, - "tests/test_plugin.py::test_marker_ignore_exception[1]": 0.0009688139834906906, - "tests/test_plugin.py::test_marker_ignore_exception[2]": 0.0011277040175627917, - "tests/test_plugin.py::test_marker_ignore_exception[3]": 0.001226628024596721, - "tests/test_plugin.py::test_marker_ignore_exception[4]": 0.0010670160118024796, - "tests/test_plugin.py::test_marker_only[0]": 0.0027732179732993245, - "tests/test_plugin.py::test_marker_only_with_data_fixture[0]": 0.0012184199877083302, - "tests/test_plugin.py::test_marker_only_with_data_fixture[1]": 0.0014672029938083142, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data0-4-avg]": 0.20045989400023245, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data0-4-full]": 0.06902083099885203, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data1-5-avg]": 0.5016348780009139, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data1-5-full]": 0.1801713530021516, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data2-10-avg]": 0.1689359069987404, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data2-10-full]": 0.06361526499858883, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data3-8-avg]": 0.23464886900001147, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data3-8-full]": 0.08587454999906186, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data4-4-avg]": 3.4049244679990807, + "tests/influence/torch/test_functional.py::test_get_hessian[model_data4-4-full]": 0.8161465619996306, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data0-4-avg-no_precomputed_grad]": 0.07086462199913512, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data0-4-avg-precomputed_grad]": 0.05853749299967603, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data0-4-full-no_precomputed_grad]": 0.042555562999041285, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data0-4-full-precomputed_grad]": 0.04254312700140872, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data1-5-avg-no_precomputed_grad]": 0.12398883400055638, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data1-5-avg-precomputed_grad]": 0.09578048600087641, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data1-5-full-no_precomputed_grad]": 0.08458008900015557, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data1-5-full-precomputed_grad]": 0.08726069599833863, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data2-10-avg-no_precomputed_grad]": 0.04802275299880421, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data2-10-avg-precomputed_grad]": 0.03521194200220634, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data2-10-full-no_precomputed_grad]": 0.036551941999277915, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data2-10-full-precomputed_grad]": 0.037776481000037165, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data3-8-avg-no_precomputed_grad]": 0.07563198299976648, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data3-8-avg-precomputed_grad]": 0.06490736200066749, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data3-8-full-no_precomputed_grad]": 0.04830970400143997, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data3-8-full-precomputed_grad]": 0.046601254001870984, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data4-4-avg-no_precomputed_grad]": 0.6670472200003132, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data4-4-avg-precomputed_grad]": 0.5045342149987846, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data4-4-full-no_precomputed_grad]": 0.2970590019995143, + "tests/influence/torch/test_functional.py::test_get_hvp_function[model_data4-4-full-precomputed_grad]": 0.3075855399983993, + "tests/influence/torch/test_functional.py::test_hvp[model_data0-1e-05]": 0.021658439001839724, + "tests/influence/torch/test_functional.py::test_hvp[model_data1-1e-05]": 0.059265748001053, + "tests/influence/torch/test_functional.py::test_hvp[model_data2-1e-05]": 0.01743878900015261, + "tests/influence/torch/test_functional.py::test_hvp[model_data3-1e-05]": 0.02271863699934329, + "tests/influence/torch/test_functional.py::test_hvp[model_data4-1e-05]": 0.03280089899999439, + "tests/influence/torch/test_functional.py::test_matrix_jacobian_product[100-5-110]": 0.022210784001799766, + "tests/influence/torch/test_functional.py::test_matrix_jacobian_product[25-10-500]": 0.020637996000004932, + "tests/influence/torch/test_functional.py::test_matrix_jacobian_product[46-1-632]": 0.01833421299852489, + "tests/influence/torch/test_functional.py::test_matrix_jacobian_product[50-3-120]": 0.01751421799781383, + "tests/influence/torch/test_functional.py::test_mixed_derivatives[100-5-512]": 1.7785364399987884, + "tests/influence/torch/test_functional.py::test_mixed_derivatives[25-10-734]": 0.27127136799936125, + "tests/influence/torch/test_functional.py::test_mixed_derivatives[46-1-1000]": 0.18510219099880487, + "tests/influence/torch/test_functional.py::test_mixed_derivatives[50-3-100]": 0.055743695000273874, + "tests/influence/torch/test_functional.py::test_per_sample_gradient[100-5-120]": 0.022160912998515414, + "tests/influence/torch/test_functional.py::test_per_sample_gradient[25-10-550]": 0.0378074430009292, + "tests/influence/torch/test_functional.py::test_per_sample_gradient[46-6-632]": 0.033401361002688645, + "tests/influence/torch/test_functional.py::test_per_sample_gradient[50-3-120]": 0.02004740899974422, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[cg-train_set_size_200-perturbation]": 4.1002855009992345, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[cg-train_set_size_200-up]": 4.092100218998894, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[direct-train_set_size_200-perturbation]": 0.5856196849999833, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[direct-train_set_size_200-up]": 0.1793102950014145, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[lissa-train_set_size_200-perturbation]": 74.52067036900007, + "tests/influence/torch/test_influence_model.py::test_influence_linear_model[lissa-train_set_size_200-up]": 72.80234433299847, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv1d_nn_pert]": 2.6213616719978745, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv1d_nn_up]": 2.9271264809995046, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv1d_no_grad_up]": 1.1280039110006328, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv2d_nn_pert]": 16.078887900001064, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv2d_nn_up]": 16.092805495001812, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv3d_nn_pert]": 5.826150597002197, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[conv3d_nn_up]": 5.808433192996745, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[simple_nn_class_up]": 3.4398634410008526, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[simple_nn_pert]": 1.783800326000346, + "tests/influence/torch/test_influence_model.py::test_influences_arnoldi[simple_nn_up]": 1.5235134640006436, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv1d_nn_pert]": 2.470179049998478, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv1d_nn_up]": 2.3925959699990926, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv1d_no_grad_up]": 0.7791441699991992, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv2d_nn_pert]": 1.128924710001229, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv2d_nn_up]": 1.256267286998991, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv3d_nn_pert]": 1.2739636030000838, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[conv3d_nn_up]": 1.2143029310009297, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[simple_nn_class_up]": 3.279752685999483, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[simple_nn_pert]": 0.7043358350001654, + "tests/influence/torch/test_influence_model.py::test_influences_ekfac[simple_nn_up]": 0.7221000240006106, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_nn_pert-cg]": 2.666355408999152, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_nn_pert-lissa]": 3.536100011000599, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_nn_up-cg]": 2.8996486520009057, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_nn_up-lissa]": 3.648799233000318, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_no_grad_up-cg]": 0.846027261000927, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv1d_no_grad_up-lissa]": 1.46926116800023, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv2d_nn_pert-cg]": 1.322623816999112, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv2d_nn_pert-lissa]": 2.4566458920016885, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv2d_nn_up-cg]": 1.3719535260006523, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv2d_nn_up-lissa]": 2.3520564940008626, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv3d_nn_pert-cg]": 1.4215319300001283, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv3d_nn_pert-lissa]": 2.5365598410025996, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv3d_nn_up-cg]": 1.4816708039998048, + "tests/influence/torch/test_influence_model.py::test_influences_nn[conv3d_nn_up-lissa]": 2.420441305001077, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_class_up-cg]": 3.5962213779985177, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_class_up-lissa]": 4.116930427000625, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_pert-cg]": 0.8423471179994522, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_pert-lissa]": 1.8240221239993843, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_up-cg]": 0.8927097550003964, + "tests/influence/torch/test_influence_model.py::test_influences_nn[simple_nn_up-lissa]": 1.7715864019992296, + "tests/influence/torch/test_util.py::test_align_structure_error[source0-target0]": 0.008872623999195639, + "tests/influence/torch/test_util.py::test_align_structure_error[source1-target1]": 0.008990501999505796, + "tests/influence/torch/test_util.py::test_align_structure_error[source2-unsupported]": 0.008625348000350641, + "tests/influence/torch/test_util.py::test_align_structure_success[source0-target0]": 0.009682354999313247, + "tests/influence/torch/test_util.py::test_align_structure_success[source1-target1]": 0.011076738001065678, + "tests/influence/torch/test_util.py::test_align_structure_success[source2-target2]": 0.008422474998951657, + "tests/influence/torch/test_util.py::test_batch_hvp[model_data0-1e-05]": 0.018433343999276985, + "tests/influence/torch/test_util.py::test_batch_hvp[model_data1-1e-05]": 0.04329261199745815, + "tests/influence/torch/test_util.py::test_batch_hvp[model_data2-1e-05]": 0.021779085998787195, + "tests/influence/torch/test_util.py::test_batch_hvp[model_data3-1e-05]": 0.02447877800113929, + "tests/influence/torch/test_util.py::test_batch_hvp[model_data4-1e-05]": 0.027325978000590112, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data0-4-avg]": 0.05654373300058069, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data0-4-full]": 0.048235695001494605, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data1-5-avg]": 0.10194805900027859, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data1-5-full]": 0.07934144700084289, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data2-10-avg]": 0.04320316699704563, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data2-10-full]": 0.03360124099890527, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data3-8-avg]": 0.062039004000325804, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data3-8-full]": 0.039968260998648475, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data4-4-avg]": 0.5075304600013624, + "tests/influence/torch/test_util.py::test_get_hvp_function[model_data4-4-full]": 0.29033965000235185, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data0-4-200-0.0001]": 6.130291282001053, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data1-5-70-0.001]": 7.575732932000392, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data2-10-50-0.0001]": 5.145587835002516, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data3-8-160-1e-05]": 9.05795658399984, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx[model_data4-4-250-1e-05]": 15.930120687000453, + "tests/influence/torch/test_util.py::test_lanzcos_low_rank_hessian_approx_exception": 0.010992516999976942, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-30-5]": 0.3716939040004945, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-30-6]": 0.3245709369984979, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-45-5]": 0.4916222280025977, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-45-6]": 0.44272739400003047, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-50-5]": 11.764691698001116, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions0-50-6]": 6.499053524999908, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-30-5]": 0.3747018210015085, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-30-6]": 0.33021277699845086, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-45-5]": 0.5002059710004687, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-45-6]": 0.46272212300027604, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-50-5]": 0.5805674699986412, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions1-50-6]": 0.5113370569997642, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-30-5]": 0.44749919500100077, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-30-6]": 0.37910716500118724, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-45-5]": 0.5593350939998345, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-45-6]": 0.47198495200063917, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-50-5]": 0.5512238980008988, + "tests/influence/torch/test_util.py::test_torch_dataset_to_dask_array[tailing_dimensions2-50-6]": 0.5188143759987724, + "tests/test_plugin.py::test_failure": 0.003285975997641799, + "tests/test_plugin.py::test_fixture_call_no_arguments": 0.0033647860000201035, + "tests/test_plugin.py::test_fixture_only[1]": 0.0034970750002685236, + "tests/test_plugin.py::test_fixture_only[2]": 0.0034195480002381373, + "tests/test_plugin.py::test_marker_and_fixture[1]": 0.0034149520015489543, + "tests/test_plugin.py::test_marker_and_fixture[2]": 0.003513548002956668, + "tests/test_plugin.py::test_marker_ignore_exception[0]": 0.003384523999557132, + "tests/test_plugin.py::test_marker_ignore_exception[1]": 0.00331666099918948, + "tests/test_plugin.py::test_marker_ignore_exception[2]": 0.00323147399831214, + "tests/test_plugin.py::test_marker_ignore_exception[3]": 0.0032334910029021557, + "tests/test_plugin.py::test_marker_ignore_exception[4]": 0.003230911001082859, + "tests/test_plugin.py::test_marker_only[0]": 0.006288947000939515, + "tests/test_plugin.py::test_marker_only_with_data_fixture[0]": 0.003481858999293763, + "tests/test_plugin.py::test_marker_only_with_data_fixture[1]": 0.003525184998579789, "tests/test_plugin.py::test_marker_only_with_data_fixture[2]": 0.0012167239910922945, - "tests/test_results.py::test_adding_different_indices[indices_10-names_10-values_10-indices_20-names_20-values_20-expected_indices0-expected_names0-expected_values0]": 0.0020641259907279164, - "tests/test_results.py::test_adding_different_indices[indices_11-names_11-values_11-indices_21-names_21-values_21-expected_indices1-expected_names1-expected_values1]": 0.002675808995263651, - "tests/test_results.py::test_adding_different_indices[indices_12-names_12-values_12-indices_22-names_22-values_22-expected_indices2-expected_names2-expected_values2]": 0.002674269024282694, - "tests/test_results.py::test_adding_different_indices[indices_13-names_13-values_13-indices_23-names_23-values_23-expected_indices3-expected_names3-expected_values3]": 0.0020707659714389592, - "tests/test_results.py::test_adding_random": 0.0034820580040104687, - "tests/test_results.py::test_dataframe_sorting[values0-names0-ranks_asc0]": 0.0029723149491474032, - "tests/test_results.py::test_dataframe_sorting[values1-names1-ranks_asc1]": 0.002218269946752116, - "tests/test_results.py::test_empty[0]": 0.0012037760170642287, - "tests/test_results.py::test_empty[5]": 0.001365817035548389, - "tests/test_results.py::test_empty_deprecation": 0.0013571020099334419, - "tests/test_results.py::test_equality[values0-names0]": 0.0021291770099196583, - "tests/test_results.py::test_equality[values1-names1]": 0.0016342299932148308, - "tests/test_results.py::test_extra_values[extra_values0]": 0.001437259983504191, - "tests/test_results.py::test_extra_values[extra_values1]": 0.0015066640044096857, - "tests/test_results.py::test_from_random_creation[-1.0-10]": 0.0015409209881909192, - "tests/test_results.py::test_from_random_creation[-1.0-1]": 0.0014630080258939415, - "tests/test_results.py::test_from_random_creation[1.0-10]": 0.0012284110125619918, - "tests/test_results.py::test_from_random_creation[1.0-1]": 0.0013108189741615206, - "tests/test_results.py::test_from_random_creation[None-10]": 0.0012196720344945788, - "tests/test_results.py::test_from_random_creation[None-1]": 0.0015253000019583851, - "tests/test_results.py::test_from_random_creation_errors": 0.0009378239628858864, - "tests/test_results.py::test_get_idx": 0.0010275309905409813, - "tests/test_results.py::test_indexing[values0-names0-ranks_asc0]": 0.0014630479854531586, - "tests/test_results.py::test_indexing[values1-names1-ranks_asc1]": 0.001598447997821495, - "tests/test_results.py::test_iter[values0-names0-ranks_asc0]": 0.0013525879476219416, - "tests/test_results.py::test_iter[values1-names1-ranks_asc1]": 0.0014122460270300508, - "tests/test_results.py::test_names[data_names0]": 0.0015603950014337897, - "tests/test_results.py::test_serialization[values0-None-dumps-loads0]": 0.001649087033001706, - "tests/test_results.py::test_serialization[values0-None-dumps-loads1]": 0.0016458219906780869, - "tests/test_results.py::test_serialization[values1-None-dumps-loads0]": 0.0015400749980472028, - "tests/test_results.py::test_serialization[values1-None-dumps-loads1]": 0.0019450989784672856, - "tests/test_results.py::test_sorting[values0-names0-ranks_asc0]": 0.0016402129840571433, - "tests/test_results.py::test_sorting[values1-names1-ranks_asc1]": 0.0016363860049750656, - "tests/test_results.py::test_todataframe[values0-names0-ranks_asc0]": 0.0023001570079941303, - "tests/test_results.py::test_todataframe[values1-names1-ranks_asc1]": 0.002222412033006549, - "tests/test_results.py::test_types[indices0-int32-data_names0---True]": 0.013553835999118746, + "tests/utils/test_caching.py::test_cached_func_hash_function[foo--False]": 0.009608976999516017, + "tests/utils/test_caching.py::test_cached_func_hash_function[foo-foo-True]": 0.007844682999348151, + "tests/utils/test_caching.py::test_cached_func_hash_function[foo-foo_duplicate-True]": 0.00921746999847528, + "tests/utils/test_caching.py::test_cached_func_hash_function[foo-foo_with_random-False]": 0.006780997000532807, + "tests/utils/test_caching.py::test_cached_func_hash_function[foo_with_random-foo_with_random_and_sleep-False]": 0.008397087000048487, "tests/utils/test_caching.py::test_failed_connection": 0.0039788429858163, + "tests/utils/test_caching.py::test_faster_with_repeated_training[disk]": 5.499508081999011, + "tests/utils/test_caching.py::test_faster_with_repeated_training[in-memory]": 5.596929604998877, + "tests/utils/test_caching.py::test_faster_with_repeated_training[memcached]": 6.545152930997574, + "tests/utils/test_caching.py::test_memcached_failed_connection": 0.009630470000047353, "tests/utils/test_caching.py::test_memcached_faster_with_repeated_training": 5.003239913989091, "tests/utils/test_caching.py::test_memcached_parallel_jobs[joblib]": 3.1677759810409043, "tests/utils/test_caching.py::test_memcached_parallel_jobs[ray-external]": 38.430890925985295, @@ -151,303 +390,439 @@ "tests/utils/test_caching.py::test_memcached_parallel_repeated_training[ray-local-20-2-20-10]": 0.007027510990155861, "tests/utils/test_caching.py::test_memcached_repeated_training": 2.3077823049970903, "tests/utils/test_caching.py::test_memcached_single_job": 0.007132280006771907, - "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.1]": 0.009810923977056518, - "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.5]": 0.0023630280047655106, - "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.8]": 0.002483188029145822, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.1-kwargs0]": 0.0022864479979034513, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.1-kwargs1]": 0.001960736990440637, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.5-kwargs0]": 0.0018571619875729084, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.5-kwargs1]": 0.0019256969972047955, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.8-kwargs0]": 0.0020103229908272624, - "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.8-kwargs1]": 0.001870437990874052, - "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.1]": 0.004145220998907462, - "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.5]": 0.002273507008794695, - "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.8]": 0.0025340290158055723, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.1]": 0.002445343037834391, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.5]": 0.002387374988757074, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.8]": 0.0025074610312003642, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.1]": 0.0031885300122667104, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.5]": 0.0018069100042339414, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.8]": 0.0019649149908218533, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.1-kwargs0]": 0.002473844971973449, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.1-kwargs1]": 0.0024133779807016253, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.5-kwargs0]": 0.0023138070246204734, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.5-kwargs1]": 0.002177672984544188, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.8-kwargs0]": 0.0030658979958388954, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.8-kwargs1]": 0.002469450992066413, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.1]": 0.0016314840177074075, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.5]": 0.0017394520109519362, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.8]": 0.0017109749896917492, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.1]": 0.003284825972514227, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.5]": 0.0038210980128496885, - "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.8]": 0.0023955479555297643, - "tests/utils/test_dataset.py::test_grouped_dataset_results": 0.00312941602896899, - "tests/utils/test_numeric.py::test_powerset": 0.002356015960685909, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[0-2-ValueError]": 0.0011365640093572438, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[1-2-ValueError]": 0.0010459299955982715, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[10-1-ValueError]": 0.0011281229672022164, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[10-2-None]": 0.001765107037499547, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[2-10-None]": 0.001528021995909512, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[4--2-ValueError]": 0.0011659429874271154, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[7-23-None]": 0.001419320033164695, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[10-2]": 0.001462101994547993, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[2-10]": 0.001395261992001906, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[7-23]": 0.001416039012838155, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[10-2]": 0.0015627649845555425, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[2-10]": 0.0014263579796534032, - "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[7-23]": 0.0016800050216261297, - "tests/utils/test_numeric.py::test_random_powerset[0-1]": 0.0012409990013111383, - "tests/utils/test_numeric.py::test_random_powerset[1-10]": 0.0014637470012530684, - "tests/utils/test_numeric.py::test_random_powerset[10-1024]": 0.0079122620227281, - "tests/utils/test_numeric.py::test_random_powerset[5-128]": 0.0020825770043302327, - "tests/utils/test_numeric.py::test_random_powerset_label_min[0-10-3-1000]": 0.11152737599331886, - "tests/utils/test_numeric.py::test_random_powerset_label_min[1-10-3-1000]": 0.11375491399667226, - "tests/utils/test_numeric.py::test_random_powerset_label_min[2-10-3-1000]": 0.11396494103246368, - "tests/utils/test_numeric.py::test_random_powerset_reproducible[10-1024]": 0.013066521001746878, - "tests/utils/test_numeric.py::test_random_powerset_stochastic[10-1024]": 0.012338358006672934, - "tests/utils/test_numeric.py::test_random_subset_of_size[0-0-None]": 0.0015464180323760957, - "tests/utils/test_numeric.py::test_random_subset_of_size[0-1-ValueError]": 0.001127758005168289, - "tests/utils/test_numeric.py::test_random_subset_of_size[10-0-None]": 0.0013323969906195998, - "tests/utils/test_numeric.py::test_random_subset_of_size[10-3-None]": 0.0015970039821695536, - "tests/utils/test_numeric.py::test_random_subset_of_size[1000-40-None]": 0.001427212991984561, - "tests/utils/test_numeric.py::test_random_subset_of_size_stochastic[10-3]": 0.001142591005191207, - "tests/utils/test_numeric.py::test_random_subset_of_size_stochastic[1000-40]": 0.0012538870214484632, - "tests/utils/test_numeric.py::test_running_moments": 0.35335890398710035, - "tests/utils/test_parallel.py::test_chunkification[joblib-data0-3-expected_chunks0]": 0.0042906299931928515, - "tests/utils/test_parallel.py::test_chunkification[joblib-data1-2-expected_chunks1]": 0.004308464995119721, - "tests/utils/test_parallel.py::test_chunkification[joblib-data2-2-expected_chunks2]": 0.004244079987984151, - "tests/utils/test_parallel.py::test_chunkification[joblib-data3-3-expected_chunks3]": 0.004028873983770609, - "tests/utils/test_parallel.py::test_chunkification[joblib-data4-5-expected_chunks4]": 0.004101024009287357, - "tests/utils/test_parallel.py::test_chunkification[joblib-data5-42-expected_chunks5]": 0.004789252998307347, - "tests/utils/test_parallel.py::test_chunkification[joblib-data6-42-expected_chunks6]": 0.004256373038515449, - "tests/utils/test_parallel.py::test_chunkification[joblib-data7-4-expected_chunks7]": 0.004143773025134578, - "tests/utils/test_parallel.py::test_chunkification[joblib-data8-4-expected_chunks8]": 0.0040604640380479395, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data0-3-expected_chunks0]": 0.0060307729872874916, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data1-2-expected_chunks1]": 0.005929058010224253, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data2-2-expected_chunks2]": 0.009121662005782127, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data3-3-expected_chunks3]": 0.009956339985365048, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data4-5-expected_chunks4]": 0.010149178997380659, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data5-42-expected_chunks5]": 0.010347278992412612, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data6-42-expected_chunks6]": 0.010047424992080778, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data7-4-expected_chunks7]": 0.008645244990475476, - "tests/utils/test_parallel.py::test_chunkification[ray-external-data8-4-expected_chunks8]": 0.009245932975318283, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data0-3-expected_chunks0]": 0.0045589170476887375, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data1-2-expected_chunks1]": 0.004910157964332029, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data2-2-expected_chunks2]": 0.004910080024274066, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data3-3-expected_chunks3]": 0.0059317940031178296, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data4-5-expected_chunks4]": 0.008992511982796714, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data5-42-expected_chunks5]": 0.008223566022934392, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data6-42-expected_chunks6]": 0.007052068045595661, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data7-4-expected_chunks7]": 0.004718763986602426, - "tests/utils/test_parallel.py::test_chunkification[ray-local-data8-4-expected_chunks8]": 0.005322564014932141, - "tests/utils/test_parallel.py::test_effective_n_jobs[joblib]": 0.0014253620174713433, - "tests/utils/test_parallel.py::test_effective_n_jobs[ray-external]": 3.978927739954088, - "tests/utils/test_parallel.py::test_effective_n_jobs[ray-local]": 4.104055134986993, - "tests/utils/test_parallel.py::test_future_cancellation[joblib]": 0.005014022986870259, - "tests/utils/test_parallel.py::test_future_cancellation[ray-external]": 1.9293224809807725, - "tests/utils/test_parallel.py::test_future_cancellation[ray-local]": 0.07703918303013779, - "tests/utils/test_parallel.py::test_futures_executor_map[joblib]": 1.5601177359640133, - "tests/utils/test_parallel.py::test_futures_executor_map[ray-external]": 0.09417001300607808, - "tests/utils/test_parallel.py::test_futures_executor_map[ray-local]": 0.09271710200118832, - "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[joblib]": 0.007176648010499775, - "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[ray-external]": 1.090440120024141, - "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[ray-local]": 1.095393077004701, - "tests/utils/test_parallel.py::test_futures_executor_submit[joblib]": 1.8566069509834051, - "tests/utils/test_parallel.py::test_futures_executor_submit[ray-external]": 0.04992300402955152, - "tests/utils/test_parallel.py::test_futures_executor_submit[ray-local]": 0.048481280013220385, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices0-expected0]": 0.0015987549850251526, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices1-expected1]": 0.001547530002426356, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices2-expected2]": 0.001560483971843496, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-numpy-indices4-45]": 0.00178057502489537, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-range-indices3-expected3]": 0.0015469170466531068, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices0-expected0]": 0.0018091480305884033, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices1-expected1]": 0.01276223495369777, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices2-expected2]": 0.012882986018666998, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-numpy-indices4-45]": 0.01399321696953848, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-range-indices3-expected3]": 0.012885421980172396, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices0-expected0]": 0.15361307095736265, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices1-expected1]": 0.8156346119940281, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices2-expected2]": 1.3068530370073859, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-numpy-indices4-45]": 0.01750938399345614, - "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-range-indices3-expected3]": 0.017205809010192752, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices0-expected0]": 0.0029827099933754653, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices1-expected1]": 0.0027304230316076428, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices2-expected2]": 0.0026203590095974505, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-numpy-indices4-45]": 0.003456770005868748, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-range-indices3-expected3]": 0.0027074709651060402, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices0-expected0]": 0.8282912400027271, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices1-expected1]": 2.2837093910493422, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices2-expected2]": 2.4645657170040067, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-numpy-indices4-45]": 2.281004316988401, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-range-indices3-expected3]": 2.393285626982106, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices0-expected0]": 1.903353853005683, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices1-expected1]": 2.947957994969329, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices2-expected2]": 3.211508878011955, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-numpy-indices4-45]": 3.3349247129808646, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-range-indices3-expected3]": 3.599037625041092, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices0-expected0]": 0.016201907012145966, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices1-expected1]": 0.013995222019730136, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices2-expected2]": 0.013650566979777068, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-numpy-indices4-45]": 0.013722714997129515, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-range-indices3-expected3]": 0.013983122975332662, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices0-expected0]": 1.5035187809844501, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices1-expected1]": 2.235937710967846, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices2-expected2]": 2.1283504489983898, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-numpy-indices4-45]": 2.0944344620220363, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-range-indices3-expected3]": 2.104675643990049, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices0-expected0]": 1.7145587989652995, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices1-expected1]": 2.772829012013972, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices2-expected2]": 3.1254515810287558, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-numpy-indices4-45]": 3.4023931239789817, - "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-range-indices3-expected3]": 3.7103631219943054, - "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[joblib]": 0.01629631401738152, - "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[ray-external]": 3.550109267991502, - "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[ray-local]": 3.186494815017795, - "tests/utils/test_parallel.py::test_map_reduce_seeding[joblib-42-12]": 0.05403909899177961, - "tests/utils/test_parallel.py::test_map_reduce_seeding[ray-external-42-12]": 9.918427228025394, - "tests/utils/test_parallel.py::test_map_reduce_seeding[ray-local-42-12]": 9.834357938991161, - "tests/utils/test_parallel.py::test_wrap_function[joblib]": 0.0031614619656465948, - "tests/utils/test_parallel.py::test_wrap_function[ray-external]": 3.1981390729779378, - "tests/utils/test_parallel.py::test_wrap_function[ray-local]": 3.2998613989911973, - "tests/utils/test_score.py::test_compose_score": 0.0027295449981465936, - "tests/utils/test_score.py::test_scorer": 0.0051104900194332, - "tests/utils/test_score.py::test_squashed_r2": 0.001943372975802049, - "tests/utils/test_score.py::test_squashed_variance": 0.001487176021328196, - "tests/utils/test_status.py::test_and_status": 0.001112824014853686, - "tests/utils/test_status.py::test_not_status": 0.0010235870140604675, - "tests/utils/test_status.py::test_or_status": 0.0009352969937026501, + "tests/utils/test_caching.py::test_parallel_jobs[joblib-disk]": 0.008082594998995773, + "tests/utils/test_caching.py::test_parallel_jobs[joblib-in-memory]": 0.007858986000428558, + "tests/utils/test_caching.py::test_parallel_jobs[joblib-memcached]": 5.864486223999847, + "tests/utils/test_caching.py::test_parallel_jobs[ray-external-disk]": 0.019337756999448175, + "tests/utils/test_caching.py::test_parallel_jobs[ray-external-in-memory]": 3.8737009590004163, + "tests/utils/test_caching.py::test_parallel_jobs[ray-external-memcached]": 0.010424148002130096, + "tests/utils/test_caching.py::test_parallel_jobs[ray-local-disk]": 0.006320855998637853, + "tests/utils/test_caching.py::test_parallel_jobs[ray-local-in-memory]": 0.007159704999139649, + "tests/utils/test_caching.py::test_parallel_jobs[ray-local-memcached]": 0.010268650999933016, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-disk-20-1-10-5]": 0.040544517996750074, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-disk-20-1-20-10]": 0.041609834999690065, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-disk-20-2-10-5]": 0.450297680001313, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-disk-20-2-20-10]": 0.41885778900177684, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-in-memory-20-1-10-5]": 0.04637932000150613, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-in-memory-20-1-20-10]": 0.038561840998227126, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-in-memory-20-2-10-5]": 4.16153838199898, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-in-memory-20-2-20-10]": 0.47474137900280766, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-memcached-20-1-10-5]": 0.03560425399882661, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-memcached-20-1-20-10]": 0.04425754300064, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-memcached-20-2-10-5]": 0.46746473100029107, + "tests/utils/test_caching.py::test_parallel_repeated_training[joblib-memcached-20-2-20-10]": 0.47426626100059366, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-disk-20-1-10-5]": 0.019769640000959043, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-disk-20-1-20-10]": 0.02465987799951108, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-disk-20-2-10-5]": 0.012952293998750974, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-disk-20-2-20-10]": 0.010107056999913766, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-in-memory-20-1-10-5]": 0.013676337999640964, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-in-memory-20-1-20-10]": 0.009283014000175172, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-in-memory-20-2-10-5]": 0.014747097000508802, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-in-memory-20-2-20-10]": 0.012189770999611937, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-memcached-20-1-10-5]": 0.014756809001482907, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-memcached-20-1-20-10]": 0.014543373998094467, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-memcached-20-2-10-5]": 0.018690378999963286, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-external-memcached-20-2-20-10]": 0.017414769001334207, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-disk-20-1-10-5]": 0.00978782600031991, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-disk-20-1-20-10]": 0.008025870998608298, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-disk-20-2-10-5]": 0.00932121699952404, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-disk-20-2-20-10]": 0.012999636999666109, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-in-memory-20-1-10-5]": 0.010384335999333416, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-in-memory-20-1-20-10]": 0.007256282997332164, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-in-memory-20-2-10-5]": 0.007955910998134641, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-in-memory-20-2-20-10]": 0.006997692000368261, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-memcached-20-1-10-5]": 0.008193191000827937, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-memcached-20-1-20-10]": 0.010128158999577863, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-memcached-20-2-10-5]": 0.013161438002498471, + "tests/utils/test_caching.py::test_parallel_repeated_training[ray-local-memcached-20-2-20-10]": 0.009240641998985666, + "tests/utils/test_caching.py::test_repeated_training[disk]": 1.2679626049975923, + "tests/utils/test_caching.py::test_repeated_training[in-memory]": 0.8953080740011501, + "tests/utils/test_caching.py::test_repeated_training[memcached]": 1.0694843190012762, + "tests/utils/test_caching.py::test_single_job[disk]": 0.013467190003211726, + "tests/utils/test_caching.py::test_single_job[in-memory]": 0.007606943001519539, + "tests/utils/test_caching.py::test_single_job[memcached]": 0.012050191000525956, + "tests/utils/test_caching.py::test_without_pymemcache": 0.0068226680014049634, + "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.1]": 0.020587041000908357, + "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.5]": 0.00390724699900602, + "tests/utils/test_dataset.py::test_creating_dataset_from_sklearn[0.8]": 0.00450960899979691, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.1-kwargs0]": 0.0038753029984945897, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.1-kwargs1]": 0.0036959019998903386, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.5-kwargs0]": 0.0038168650007719407, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.5-kwargs1]": 0.0037348340010794345, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.8-kwargs0]": 0.003279165001004003, + "tests/utils/test_dataset.py::test_creating_dataset_from_x_y_arrays[0.8-kwargs1]": 0.003160262998790131, + "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.1]": 0.00434540000060224, + "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.5]": 0.004031194001072436, + "tests/utils/test_dataset.py::test_creating_dataset_subsclassfrom_sklearn[0.8]": 0.0037131489989405964, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.1]": 0.0038164179986779345, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.5]": 0.005253569997876184, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn[0.8]": 0.005844020997756161, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.1]": 0.003921200999684515, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.5]": 0.0038101809986983426, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_sklearn_failure[0.8]": 0.00419950299874472, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.1-kwargs0]": 0.0037465159985003993, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.1-kwargs1]": 0.0037122550002095522, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.5-kwargs0]": 0.003727491999597987, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.5-kwargs1]": 0.00471100999857299, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.8-kwargs0]": 0.004182996997769806, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays[0.8-kwargs1]": 0.004742823000924545, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.1]": 0.0034745570010272786, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.5]": 0.0029412200001388555, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_from_x_y_arrays_failure[0.8]": 0.003702544998304802, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.1]": 0.004099161000340246, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.5]": 0.004149230999246356, + "tests/utils/test_dataset.py::test_creating_grouped_dataset_subsclassfrom_sklearn[0.8]": 0.004327725000621285, + "tests/utils/test_dataset.py::test_grouped_dataset_results": 0.005107523998958641, + "tests/utils/test_numeric.py::test_powerset": 0.003924966000340646, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[0-2-ValueError]": 0.003189409999322379, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[1-2-ValueError]": 0.0027116169985674787, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[10-1-ValueError]": 0.0027666500009218, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[10-2-None]": 0.0031559840026602615, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[2-10-None]": 0.004578909001793363, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[4--2-ValueError]": 0.0026738769993244205, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number[7-23-None]": 0.0031755019990669098, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[10-2]": 0.0032696249982109293, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[2-10]": 0.0026570699992589653, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_reproducible[7-23]": 0.004022232000352233, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[10-2]": 0.004431671000929782, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[2-10]": 0.003217298000890878, + "tests/utils/test_numeric.py::test_random_matrix_with_condition_number_stochastic[7-23]": 0.002955772999484907, + "tests/utils/test_numeric.py::test_random_powerset[0-1]": 0.003080959002545569, + "tests/utils/test_numeric.py::test_random_powerset[1-10]": 0.0025249310019717086, + "tests/utils/test_numeric.py::test_random_powerset[10-1024]": 0.012735986998450244, + "tests/utils/test_numeric.py::test_random_powerset[5-128]": 0.0035692419987753965, + "tests/utils/test_numeric.py::test_random_powerset_label_min[0-10-3-1000]": 0.171625541001049, + "tests/utils/test_numeric.py::test_random_powerset_label_min[1-10-3-1000]": 0.17619158500019694, + "tests/utils/test_numeric.py::test_random_powerset_label_min[2-10-3-1000]": 0.1760632390014507, + "tests/utils/test_numeric.py::test_random_powerset_reproducible[10-1024]": 0.018217550998087972, + "tests/utils/test_numeric.py::test_random_powerset_stochastic[10-1024]": 0.018896675997893908, + "tests/utils/test_numeric.py::test_random_subset_of_size[0-0-None]": 0.002780025000902242, + "tests/utils/test_numeric.py::test_random_subset_of_size[0-1-ValueError]": 0.0032452249997731997, + "tests/utils/test_numeric.py::test_random_subset_of_size[10-0-None]": 0.0033025680004357127, + "tests/utils/test_numeric.py::test_random_subset_of_size[10-3-None]": 0.002845983000952401, + "tests/utils/test_numeric.py::test_random_subset_of_size[1000-40-None]": 0.0032918939996307017, + "tests/utils/test_numeric.py::test_random_subset_of_size_stochastic[10-3]": 0.002797532002659864, + "tests/utils/test_numeric.py::test_random_subset_of_size_stochastic[1000-40]": 0.0036268280000513187, + "tests/utils/test_numeric.py::test_running_moments": 0.6145333489985205, + "tests/utils/test_parallel.py::test_chunkification[joblib-data0-3-expected_chunks0]": 0.015510658000494004, + "tests/utils/test_parallel.py::test_chunkification[joblib-data1-2-expected_chunks1]": 0.012093620000086958, + "tests/utils/test_parallel.py::test_chunkification[joblib-data2-2-expected_chunks2]": 0.011375399999451474, + "tests/utils/test_parallel.py::test_chunkification[joblib-data3-3-expected_chunks3]": 0.016111063001517323, + "tests/utils/test_parallel.py::test_chunkification[joblib-data4-5-expected_chunks4]": 0.02149817300050927, + "tests/utils/test_parallel.py::test_chunkification[joblib-data5-42-expected_chunks5]": 0.013197087000662577, + "tests/utils/test_parallel.py::test_chunkification[joblib-data6-42-expected_chunks6]": 0.017662769996604766, + "tests/utils/test_parallel.py::test_chunkification[joblib-data7-4-expected_chunks7]": 0.013664767000591382, + "tests/utils/test_parallel.py::test_chunkification[joblib-data8-4-expected_chunks8]": 0.0129568249994918, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data0-3-expected_chunks0]": 0.02873299299972132, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data1-2-expected_chunks1]": 0.037400651001007645, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data2-2-expected_chunks2]": 0.04821507099950395, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data3-3-expected_chunks3]": 0.03959165199921699, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data4-5-expected_chunks4]": 0.030608711000240874, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data5-42-expected_chunks5]": 0.026263547000780818, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data6-42-expected_chunks6]": 0.01923054399958346, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data7-4-expected_chunks7]": 0.020033368999065715, + "tests/utils/test_parallel.py::test_chunkification[ray-external-data8-4-expected_chunks8]": 0.019113988000754034, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data0-3-expected_chunks0]": 0.022260648998781107, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data1-2-expected_chunks1]": 0.02477619599994796, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data2-2-expected_chunks2]": 0.037821603000338655, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data3-3-expected_chunks3]": 0.0276968880007189, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data4-5-expected_chunks4]": 0.03822717000184639, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data5-42-expected_chunks5]": 0.03200487200047064, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data6-42-expected_chunks6]": 0.02251517100012279, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data7-4-expected_chunks7]": 0.02549016900047718, + "tests/utils/test_parallel.py::test_chunkification[ray-local-data8-4-expected_chunks8]": 0.016007507998438086, + "tests/utils/test_parallel.py::test_effective_n_jobs[joblib]": 0.005121522000990808, + "tests/utils/test_parallel.py::test_effective_n_jobs[ray-external]": 4.8416320709984575, + "tests/utils/test_parallel.py::test_effective_n_jobs[ray-local]": 6.68878685799973, + "tests/utils/test_parallel.py::test_future_cancellation[joblib]": 0.013322050999704516, + "tests/utils/test_parallel.py::test_future_cancellation[ray-external]": 6.1742852379975375, + "tests/utils/test_parallel.py::test_future_cancellation[ray-local]": 5.196579726998607, + "tests/utils/test_parallel.py::test_futures_executor_map[joblib]": 2.7167825960004848, + "tests/utils/test_parallel.py::test_futures_executor_map[ray-external]": 0.10519307000140543, + "tests/utils/test_parallel.py::test_futures_executor_map[ray-local]": 0.10775902599925757, + "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[joblib]": 0.012954608999280026, + "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[ray-external]": 1.1045504180019634, + "tests/utils/test_parallel.py::test_futures_executor_map_with_max_workers[ray-local]": 1.100314563000211, + "tests/utils/test_parallel.py::test_futures_executor_submit[joblib]": 3.2937196319981012, + "tests/utils/test_parallel.py::test_futures_executor_submit[ray-external]": 0.06437306899897521, + "tests/utils/test_parallel.py::test_futures_executor_submit[ray-local]": 0.05545763400186843, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices0-expected0]": 0.0033702880009514047, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices1-expected1]": 0.003624205000960501, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-list-indices2-expected2]": 0.0034593179989315104, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-numpy-indices4-45]": 0.003431146000366425, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-1-range-indices3-expected3]": 0.003291076000095927, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices0-expected0]": 0.0043230089995631715, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices1-expected1]": 0.014759305000552558, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-list-indices2-expected2]": 0.014669898000647663, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-numpy-indices4-45]": 0.014518962998408824, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-2-range-indices3-expected3]": 0.014446292998400168, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices0-expected0]": 0.16248785400057386, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices1-expected1]": 2.277719737998268, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-list-indices2-expected2]": 3.347688416000892, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-numpy-indices4-45]": 0.04604001000188873, + "tests/utils/test_parallel.py::test_map_reduce_job[joblib-4-range-indices3-expected3]": 0.057255595000242465, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices0-expected0]": 0.026082702997882734, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices1-expected1]": 0.023299047999898903, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-list-indices2-expected2]": 0.02191418300026271, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-numpy-indices4-45]": 0.02673473200047738, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-1-range-indices3-expected3]": 0.027526039999429486, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices0-expected0]": 3.4228467769989948, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices1-expected1]": 4.798353305001001, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-list-indices2-expected2]": 4.636959622999711, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-numpy-indices4-45]": 4.028821964997405, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-2-range-indices3-expected3]": 4.398552747999929, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices0-expected0]": 3.734075545000451, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices1-expected1]": 5.287959784998748, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-list-indices2-expected2]": 6.245923890002814, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-numpy-indices4-45]": 6.61028953999994, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-external-4-range-indices3-expected3]": 6.340780258999075, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices0-expected0]": 0.026392571999167558, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices1-expected1]": 0.0228169030015124, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-list-indices2-expected2]": 0.026224847002595197, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-numpy-indices4-45]": 0.02119264299835777, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-1-range-indices3-expected3]": 0.02678771700084326, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices0-expected0]": 2.813331847997688, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices1-expected1]": 4.129950463000569, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-list-indices2-expected2]": 4.1853057150001405, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-numpy-indices4-45]": 3.9139689650000946, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-2-range-indices3-expected3]": 4.066097430000809, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices0-expected0]": 3.626414754000507, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices1-expected1]": 5.354816800998378, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-list-indices2-expected2]": 6.589774920001219, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-numpy-indices4-45]": 6.373054822000995, + "tests/utils/test_parallel.py::test_map_reduce_job[ray-local-4-range-indices3-expected3]": 6.71076984499814, + "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[joblib]": 0.03710782099915377, + "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[ray-external]": 6.3739082100000815, + "tests/utils/test_parallel.py::test_map_reduce_job_partial_map_and_reduce_func[ray-local]": 6.171818285998597, + "tests/utils/test_parallel.py::test_map_reduce_seeding[joblib-42-12]": 0.16202725999937684, + "tests/utils/test_parallel.py::test_map_reduce_seeding[ray-external-42-12]": 19.644846438999593, + "tests/utils/test_parallel.py::test_map_reduce_seeding[ray-local-42-12]": 19.494929903998127, + "tests/utils/test_parallel.py::test_wrap_function[joblib]": 0.010273419000441208, + "tests/utils/test_parallel.py::test_wrap_function[ray-external]": 4.3178896000026725, + "tests/utils/test_parallel.py::test_wrap_function[ray-local]": 4.386876819999088, + "tests/utils/test_score.py::test_compose_score": 0.003188072001648834, + "tests/utils/test_score.py::test_scorer": 0.006043704999683541, + "tests/utils/test_score.py::test_squashed_r2": 0.00286291600241384, + "tests/utils/test_score.py::test_squashed_variance": 0.002624727998409071, + "tests/utils/test_status.py::test_and_status": 0.0023914820012578275, + "tests/utils/test_status.py::test_not_status": 0.0024304439994011773, + "tests/utils/test_status.py::test_or_status": 0.0031306429991673212, "tests/utils/test_utility.py::test_cache[2-0-8]": 0.00677607100806199, - "tests/utils/test_utility.py::test_data_utility_learning_wrapper[10-2-0-8]": 0.004311377968406305, - "tests/utils/test_utility.py::test_data_utility_learning_wrapper[2-2-0-8]": 0.0040499519964214414, + "tests/utils/test_utility.py::test_data_utility_learning_wrapper[10-2-0-8]": 0.007143015998735791, + "tests/utils/test_utility.py::test_data_utility_learning_wrapper[2-2-0-8]": 0.008842511999318958, "tests/utils/test_utility.py::test_different_cache_signature[model_kwargs0-2-0-8]": 0.0038117940130177885, "tests/utils/test_utility.py::test_different_cache_signature[model_kwargs1-2-0-8]": 0.0034867670328821987, - "tests/utils/test_utility.py::test_utility_show_warnings[4-4-False]": 0.00734079402172938, - "tests/utils/test_utility.py::test_utility_show_warnings[4-4-True]": 0.007422954018693417, + "tests/utils/test_utility.py::test_different_utility_with_same_cache[2-0-8]": 0.00974041799963743, + "tests/utils/test_utility.py::test_utility_serialization[False-2-0-8]": 0.004299543001252459, + "tests/utils/test_utility.py::test_utility_serialization[True-2-0-8]": 0.004922002000967041, + "tests/utils/test_utility.py::test_utility_show_warnings[4-4-False]": 0.018307410000488744, + "tests/utils/test_utility.py::test_utility_show_warnings[4-4-True]": 0.009923514002366574, + "tests/utils/test_utility.py::test_utility_with_cache[2-0-8]": 0.010860190002858872, + "tests/value/least_core/test_common.py::test_lc_solve_problems[test_game0]": 6.664896995000163, "tests/value/least_core/test_common.py::test_lc_solve_problems[test_utility0]": 3.0655845460132696, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False--1-test_game0-0.1-128]": 0.10254659299971536, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False--1-test_game1-0.2-10000]": 0.95324419499957, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False--1-test_utility0-0.1-128]": 0.05090764199849218, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False--1-test_utility1-0.2-10000]": 0.39550038598827086, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False-1-test_game0-0.1-128]": 0.11610117799864383, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False-1-test_game1-0.2-10000]": 1.9240173660018627, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False-1-test_utility0-0.1-128]": 0.054777625045971945, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[False-1-test_utility1-0.2-10000]": 0.7125970929628238, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True--1-test_game0-0.1-128]": 12.35835815199971, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True--1-test_game1-0.2-10000]": 1.27118392400007, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True--1-test_utility0-0.1-128]": 6.515727574034827, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True--1-test_utility1-0.2-10000]": 0.6112625639943872, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True-1-test_game0-0.1-128]": 0.13497778700002527, + "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True-1-test_game1-0.2-10000]": 2.054010283000025, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True-1-test_utility0-0.1-128]": 0.07473104700329714, "tests/value/least_core/test_montecarlo.py::test_montecarlo_least_core[True-1-test_utility1-0.2-10000]": 0.7888634809933137, + "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_game0]": 0.056533884000600665, + "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_game1]": 0.05103961900022114, + "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_game2]": 0.04528383999968355, + "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_game3]": 0.04622581199873821, + "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_game4]": 0.04450138000174775, "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_utility0]": 0.024124946998199448, "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_utility1]": 0.02425819096970372, "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_utility2]": 0.023533977015176788, "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_utility3]": 0.023558928980492055, "tests/value/least_core/test_naive.py::test_naive_least_core[False-test_utility4]": 0.024587185034761205, + "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_game0]": 0.055623405996811925, + "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_game1]": 0.05625994600086415, + "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_game2]": 0.05063546000201313, + "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_game3]": 0.05257723800241365, + "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_game4]": 0.055973189997530426, "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_utility0]": 0.025446541025303304, "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_utility1]": 0.026494102989090607, "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_utility2]": 0.02477889700094238, "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_utility3]": 0.026450325007317588, "tests/value/least_core/test_naive.py::test_naive_least_core[True-test_utility4]": 0.026973432017257437, - "tests/value/loo/test_loo.py::test_loo[100]": 3.7793434759951197, - "tests/value/loo/test_loo.py::test_loo[10]": 3.8455980509752408, - "tests/value/shapley/test_classwise.py::test_classwise_scorer_accuracies_left_right_margins[101-0.3-0.4]": 0.004718418029369786, - "tests/value/shapley/test_classwise.py::test_classwise_scorer_accuracies_manual_derivation": 0.022209248010767624, - "tests/value/shapley/test_classwise.py::test_classwise_scorer_is_symmetric[101-0.3-0.4]": 0.0053302829910535365, - "tests/value/shapley/test_classwise.py::test_classwise_scorer_representation": 0.002573036035755649, - "tests/value/shapley/test_classwise.py::test_classwise_scorer_utility[101-0.3-0.4]": 0.00688477698713541, - "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution-n_resample_complement_sets=1-n_samples=500]": 6.088012945023365, - "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_no_default-n_resample_complement_sets=1-n_samples=500]": 6.90557194603025, - "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_no_default_allow_empty_set-n_resample_complement_sets=1-n_samples=500]": 6.456796451995615, - "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_normalized-n_resample_complement_sets=1-n_samples=500]": 5.917300594970584, - "tests/value/shapley/test_classwise.py::test_closed_form_linear_classifier": 0.004191815009107813, - "tests/value/shapley/test_knn.py::test_knn_montecarlo_match": 6.380129672033945, + "tests/value/loo/test_loo.py::test_loo[100]": 6.34605625200129, + "tests/value/loo/test_loo.py::test_loo[10]": 6.683512068999335, + "tests/value/shapley/test_classwise.py::test_classwise_scorer_accuracies_left_right_margins[101-0.3-0.4]": 0.014495325998723274, + "tests/value/shapley/test_classwise.py::test_classwise_scorer_accuracies_manual_derivation": 0.059531668999625253, + "tests/value/shapley/test_classwise.py::test_classwise_scorer_is_symmetric[101-0.3-0.4]": 0.017718389000947354, + "tests/value/shapley/test_classwise.py::test_classwise_scorer_representation": 0.00893844900019758, + "tests/value/shapley/test_classwise.py::test_classwise_scorer_utility[101-0.3-0.4]": 0.02120917100182851, + "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution-n_resample_complement_sets=1-n_samples=500]": 11.03723036699921, + "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_no_default-n_resample_complement_sets=1-n_samples=500]": 12.916025546999663, + "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_no_default_allow_empty_set-n_resample_complement_sets=1-n_samples=500]": 12.068119810999633, + "tests/value/shapley/test_classwise.py::test_classwise_shapley[classwise_shapley_exact_solution_normalized-n_resample_complement_sets=1-n_samples=500]": 10.891289137000058, + "tests/value/shapley/test_classwise.py::test_closed_form_linear_classifier": 0.01344082000105118, + "tests/value/shapley/test_knn.py::test_knn_montecarlo_match": 11.906123751998166, "tests/value/shapley/test_montecarlo.py::test_analytic_montecarlo_shapley[12-owen-0.1-0.0001-kwargs2]": 0.6999966300209053, "tests/value/shapley/test_montecarlo.py::test_analytic_montecarlo_shapley[12-owen_antithetic-0.1-0.0001-kwargs3]": 1.3923712590476498, "tests/value/shapley/test_montecarlo.py::test_analytic_montecarlo_shapley[12-permutation_montecarlo-0.1-1e-05-kwargs0]": 4.533932764985366, "tests/value/shapley/test_montecarlo.py::test_analytic_montecarlo_shapley[3-group_testing-0.1-0.01-kwargs4]": 2.874565462989267, "tests/value/shapley/test_montecarlo.py::test_analytic_montecarlo_shapley[8-combinatorial_montecarlo-0.2-0.0001-kwargs1]": 4.175152084033471, - "tests/value/shapley/test_montecarlo.py::test_grouped_linear_montecarlo_shapley[permutation_montecarlo-kwargs0-scorer0-0.1-2-0-21-2]": 5.129105891013751, - "tests/value/shapley/test_montecarlo.py::test_hoeffding_bound_montecarlo[combinatorial_montecarlo-6-0.1-0.1]": 4.910673014004715, - "tests/value/shapley/test_montecarlo.py::test_hoeffding_bound_montecarlo[permutation_montecarlo-6-0.1-0.1]": 52.25644952899893, + "tests/value/shapley/test_montecarlo.py::test_games[combinatorial_montecarlo-0.2-0.0001-kwargs1-test_game0]": 8.304236846999629, + "tests/value/shapley/test_montecarlo.py::test_games[combinatorial_montecarlo-0.2-0.0001-kwargs1-test_game1]": 8.651754697999422, + "tests/value/shapley/test_montecarlo.py::test_games[group_testing-0.1-0.01-kwargs4-test_game0]": 4.506434214001274, + "tests/value/shapley/test_montecarlo.py::test_games[group_testing-0.1-0.01-kwargs4-test_game1]": 5.184473866002008, + "tests/value/shapley/test_montecarlo.py::test_games[owen-0.2-0.0001-kwargs2-test_game0]": 0.695304662000126, + "tests/value/shapley/test_montecarlo.py::test_games[owen-0.2-0.0001-kwargs2-test_game1]": 0.754036617001475, + "tests/value/shapley/test_montecarlo.py::test_games[owen_antithetic-0.1-0.0001-kwargs3-test_game0]": 1.3446016939979017, + "tests/value/shapley/test_montecarlo.py::test_games[owen_antithetic-0.1-0.0001-kwargs3-test_game1]": 1.7906026460022986, + "tests/value/shapley/test_montecarlo.py::test_games[permutation_montecarlo-0.2-0.0001-kwargs0-test_game0]": 9.640759977000926, + "tests/value/shapley/test_montecarlo.py::test_games[permutation_montecarlo-0.2-0.0001-kwargs0-test_game1]": 9.149135870000464, + "tests/value/shapley/test_montecarlo.py::test_grouped_linear_montecarlo_shapley[permutation_montecarlo-kwargs0-scorer0-0.1-2-0-21-2]": 11.869230333000814, + "tests/value/shapley/test_montecarlo.py::test_hoeffding_bound_montecarlo[combinatorial_montecarlo-6-0.1-0.1]": 12.159375920000457, + "tests/value/shapley/test_montecarlo.py::test_hoeffding_bound_montecarlo[permutation_montecarlo-6-0.1-0.1]": 121.21386299999904, "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_shapley[combinatorial_montecarlo-kwargs1-scorer0-0.25-2-0-21]": 17.78464582102606, "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_shapley[group_testing-kwargs4-scorer0-0.25-2-0-21]": 29.239474696019897, "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_shapley[owen-kwargs2-scorer0-0.25-2-0-21]": 4.124498174991459, "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_shapley[owen_antithetic-kwargs3-scorer0-0.25-2-0-21]": 7.887545032019261, "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_shapley[permutation_montecarlo-kwargs0-scorer0-0.25-2-0-21]": 5.8485472809989005, - "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[group_testing-kwargs3-scorer0-0.2-2-0-21]": 30.232708652998554, - "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[owen-kwargs1-scorer0-0.2-2-0-21]": 13.355578221991891, - "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[owen_antithetic-kwargs2-scorer0-0.2-2-0-21]": 20.621750775026157, - "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[permutation_montecarlo-kwargs0-scorer0-0.2-2-0-21]": 5.888187222008128, + "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[group_testing-kwargs3-scorer0-0.2-2-0-21]": 105.57146695700249, + "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[owen-kwargs1-scorer0-0.2-2-0-21]": 46.293949323999186, + "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[owen_antithetic-kwargs2-scorer0-0.2-2-0-21]": 75.77437868900051, + "tests/value/shapley/test_montecarlo.py::test_linear_montecarlo_with_outlier[permutation_montecarlo-kwargs0-scorer0-0.2-2-0-21]": 14.84272324000085, "tests/value/shapley/test_montecarlo.py::test_montecarlo_shapley_housing_dataset[12-3-12-combinatorial_montecarlo-kwargs0]": 0.16786966001382098, "tests/value/shapley/test_montecarlo.py::test_montecarlo_shapley_housing_dataset[12-3-12-owen-kwargs1]": 17.011920137971174, "tests/value/shapley/test_montecarlo.py::test_montecarlo_shapley_housing_dataset[12-3-12-owen_antithetic-kwargs2]": 35.88025256394758, "tests/value/shapley/test_montecarlo.py::test_montecarlo_shapley_housing_dataset[12-3-4-group_testing-kwargs3]": 0.25901710899779573, + "tests/value/shapley/test_montecarlo.py::test_seed[combinatorial_montecarlo-kwargs0-test_game0]": 0.10237690700159874, + "tests/value/shapley/test_montecarlo.py::test_seed[group_testing-kwargs3-test_game0]": 1.3946212869996089, + "tests/value/shapley/test_montecarlo.py::test_seed[owen-kwargs1-test_game0]": 2.984055114999137, + "tests/value/shapley/test_montecarlo.py::test_seed[owen_antithetic-kwargs2-test_game0]": 5.702334433002761, "tests/value/shapley/test_naive.py::test_analytic_exact_shapley[12-combinatorial_exact_shapley-0.01-1e-05]": 2.798590613005217, "tests/value/shapley/test_naive.py::test_analytic_exact_shapley[6-permutation_exact_shapley-0.01-1e-05]": 0.34537768000154756, - "tests/value/shapley/test_naive.py::test_grouped_linear[2-0-50-3-r2]": 0.057835308980429545, - "tests/value/shapley/test_naive.py::test_grouped_linear[2-1-100-5-explained_variance]": 1.2154581100330688, - "tests/value/shapley/test_naive.py::test_grouped_linear[2-1-100-5-r2]": 1.1950475970224943, + "tests/value/shapley/test_naive.py::test_games[combinatorial_exact_shapley-test_game0-0.1-1e-05]": 0.035801175001324737, + "tests/value/shapley/test_naive.py::test_games[combinatorial_exact_shapley-test_game1-0.1-1e-05]": 0.020296718997997232, + "tests/value/shapley/test_naive.py::test_games[combinatorial_exact_shapley-test_game2-0.1-1e-05]": 0.026713223998740432, + "tests/value/shapley/test_naive.py::test_games[combinatorial_exact_shapley-test_game3-0.1-1e-05]": 0.024250888998722075, + "tests/value/shapley/test_naive.py::test_games[combinatorial_exact_shapley-test_game4-0.1-1e-05]": 0.08578255800057377, + "tests/value/shapley/test_naive.py::test_games[permutation_exact_shapley-test_game0-0.1-1e-05]": 0.0334680340019986, + "tests/value/shapley/test_naive.py::test_games[permutation_exact_shapley-test_game1-0.1-1e-05]": 0.02248540199798299, + "tests/value/shapley/test_naive.py::test_games[permutation_exact_shapley-test_game2-0.1-1e-05]": 0.021266358000502805, + "tests/value/shapley/test_naive.py::test_games[permutation_exact_shapley-test_game3-0.1-1e-05]": 0.02347195299989835, + "tests/value/shapley/test_naive.py::test_games[permutation_exact_shapley-test_game4-0.1-1e-05]": 0.9876527700016595, + "tests/value/shapley/test_naive.py::test_grouped_linear[2-0-50-3-r2]": 0.19884431500031496, + "tests/value/shapley/test_naive.py::test_grouped_linear[2-1-100-5-explained_variance]": 3.9915946569999505, + "tests/value/shapley/test_naive.py::test_grouped_linear[2-1-100-5-r2]": 3.9885682109998015, "tests/value/shapley/test_naive.py::test_linear[2-0-10-r2]": 0.05533879197901115, "tests/value/shapley/test_naive.py::test_linear[2-1-10-explained_variance]": 0.058987755968701094, "tests/value/shapley/test_naive.py::test_linear[2-1-10-neg_median_absolute_error]": 0.05515471697435714, "tests/value/shapley/test_naive.py::test_linear[2-1-10-r2]": 0.05683578198659234, - "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-0-20-r2]": 7.4271527160017285, - "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-explained_variance]": 7.752014733996475, - "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-neg_median_absolute_error]": 7.2494586749817245, - "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-r2]": 7.528596303978702, - "tests/value/shapley/test_naive.py::test_polynomial[coefficients0-r2]": 0.10091358600766398, - "tests/value/shapley/test_naive.py::test_polynomial[coefficients1-neg_median_absolute_error]": 0.09756919997744262, - "tests/value/shapley/test_naive.py::test_polynomial[coefficients2-explained_variance]": 0.10092617000918835, - "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients0-r2]": 0.05707916300161742, - "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients1-neg_median_absolute_error]": 0.058802402985747904, - "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients2-explained_variance]": 0.06408755297889002, + "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-0-20-r2]": 25.743576199000017, + "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-explained_variance]": 26.06965675200081, + "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-neg_median_absolute_error]": 25.645237798999005, + "tests/value/shapley/test_naive.py::test_linear_with_outlier[2-1-20-r2]": 25.97635805399841, + "tests/value/shapley/test_naive.py::test_polynomial[coefficients0-r2]": 0.20116403300016827, + "tests/value/shapley/test_naive.py::test_polynomial[coefficients1-neg_median_absolute_error]": 0.20279847600068024, + "tests/value/shapley/test_naive.py::test_polynomial[coefficients2-explained_variance]": 0.20646126699830347, + "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients0-r2]": 0.15503699600049003, + "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients1-neg_median_absolute_error]": 0.15186486699894886, + "tests/value/shapley/test_naive.py::test_polynomial_with_outlier[coefficients2-explained_variance]": 0.1560443580001447, + "tests/value/shapley/test_truncated.py::test_games[done0-NoTruncation-truncation_kwargs0-test_game0]": 8.864981821001493, + "tests/value/shapley/test_truncated.py::test_games[done0-NoTruncation-truncation_kwargs0-test_game1]": 8.904717276998781, + "tests/value/shapley/test_truncated.py::test_games[done1-FixedTruncation-truncation_kwargs1-test_game0]": 8.893666212001335, + "tests/value/shapley/test_truncated.py::test_games[done1-FixedTruncation-truncation_kwargs1-test_game1]": 8.871429693997925, "tests/value/shapley/test_truncated.py::test_tmcs_analytic_montecarlo_shapley[12-truncated_montecarlo-0.1-1e-05-kwargs0]": 5.025441929989029, "tests/value/shapley/test_truncated.py::test_tmcs_linear_montecarlo_shapley[truncated_montecarlo-kwargs0-scorer0-0.25-2-0-21]": 5.633914494974306, - "tests/value/shapley/test_truncated.py::test_tmcs_linear_montecarlo_with_outlier[truncated_montecarlo-kwargs0-scorer0-0.2-2-0-21]": 3.523623990971828, - "tests/value/test_sampler.py::test_chunkify[AntitheticSampler]": 0.0012030639918521047, - "tests/value/test_sampler.py::test_chunkify[DeterministicUniformSampler]": 0.0011419990041758865, - "tests/value/test_sampler.py::test_chunkify[RandomHierarchicalSampler]": 0.0011900250101462007, - "tests/value/test_sampler.py::test_chunkify[UniformSampler]": 0.0013321389851626009, - "tests/value/test_sampler.py::test_chunkify_permutation[DeterministicPermutationSampler]": 0.0010862670314963907, - "tests/value/test_sampler.py::test_chunkify_permutation[PermutationSampler]": 0.001125522016081959, - "tests/value/test_sampler.py::test_proper[indices0-AntitheticSampler]": 0.0011964229634031653, - "tests/value/test_sampler.py::test_proper[indices0-DeterministicPermutationSampler]": 0.0013584279513452202, - "tests/value/test_sampler.py::test_proper[indices0-DeterministicUniformSampler]": 0.0013845030043739825, - "tests/value/test_sampler.py::test_proper[indices0-PermutationSampler]": 0.0012692750024143606, - "tests/value/test_sampler.py::test_proper[indices0-RandomHierarchicalSampler]": 0.0011780599888879806, - "tests/value/test_sampler.py::test_proper[indices0-UniformSampler]": 0.0012423349835444242, - "tests/value/test_sampler.py::test_proper[indices1-AntitheticSampler]": 0.001568679028423503, - "tests/value/test_sampler.py::test_proper[indices1-DeterministicPermutationSampler]": 0.0013892220158595592, - "tests/value/test_sampler.py::test_proper[indices1-DeterministicUniformSampler]": 0.0014415960176847875, - "tests/value/test_sampler.py::test_proper[indices1-PermutationSampler]": 0.0012552720145322382, - "tests/value/test_sampler.py::test_proper[indices1-RandomHierarchicalSampler]": 0.0017029709706548601, - "tests/value/test_sampler.py::test_proper[indices1-UniformSampler]": 0.0015911830123513937, - "tests/value/test_sampler.py::test_proper_reproducible[indices0-AntitheticSampler]": 0.0014955719816498458, - "tests/value/test_sampler.py::test_proper_reproducible[indices0-PermutationSampler]": 0.0017780059715732932, - "tests/value/test_sampler.py::test_proper_reproducible[indices0-RandomHierarchicalSampler]": 0.0015286150155588984, - "tests/value/test_sampler.py::test_proper_reproducible[indices0-UniformSampler]": 0.0013392769906204194, - "tests/value/test_sampler.py::test_proper_reproducible[indices1-AntitheticSampler]": 0.005814862961415201, - "tests/value/test_sampler.py::test_proper_reproducible[indices1-PermutationSampler]": 0.0022604400001000613, - "tests/value/test_sampler.py::test_proper_reproducible[indices1-RandomHierarchicalSampler]": 0.01281771101639606, - "tests/value/test_sampler.py::test_proper_reproducible[indices1-UniformSampler]": 0.006939170008990914, - "tests/value/test_sampler.py::test_proper_stochastic[indices0-AntitheticSampler]": 0.001301849988522008, - "tests/value/test_sampler.py::test_proper_stochastic[indices0-PermutationSampler]": 0.0013378779985941947, - "tests/value/test_sampler.py::test_proper_stochastic[indices0-RandomHierarchicalSampler]": 0.0014513320056721568, - "tests/value/test_sampler.py::test_proper_stochastic[indices0-UniformSampler]": 0.0014353079604916275, - "tests/value/test_sampler.py::test_proper_stochastic[indices1-AntitheticSampler]": 0.006029498006682843, - "tests/value/test_sampler.py::test_proper_stochastic[indices1-PermutationSampler]": 0.0019644349522423, - "tests/value/test_sampler.py::test_proper_stochastic[indices1-RandomHierarchicalSampler]": 0.012361108005279675, - "tests/value/test_sampler.py::test_proper_stochastic[indices1-UniformSampler]": 0.006347205984639004, - "tests/value/test_semivalues.py::test_banzhaf[AntitheticPermutationSampler-5]": 10.714197647990659, - "tests/value/test_semivalues.py::test_banzhaf[AntitheticSampler-5]": 4.695468286023242, - "tests/value/test_semivalues.py::test_banzhaf[DeterministicPermutationSampler-5]": 6.074063064996153, - "tests/value/test_semivalues.py::test_banzhaf[DeterministicUniformSampler-5]": 4.212341544014635, - "tests/value/test_semivalues.py::test_banzhaf[PermutationSampler-5]": 8.149094285006868, - "tests/value/test_semivalues.py::test_banzhaf[UniformSampler-5]": 4.764893947984092, - "tests/value/test_semivalues.py::test_coefficients[banzhaf_coefficient-100]": 0.003842581994831562, - "tests/value/test_semivalues.py::test_coefficients[banzhaf_coefficient-10]": 0.0032151709601748735, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w0-100]": 0.004444399964995682, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w0-10]": 0.003756532969418913, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w1-100]": 0.004344976012362167, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w1-10]": 0.003551592002622783, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w2-100]": 0.004556107014650479, - "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w2-10]": 0.0035066070267930627, - "tests/value/test_semivalues.py::test_coefficients[shapley_coefficient-100]": 0.0047601540281903, - "tests/value/test_semivalues.py::test_coefficients[shapley_coefficient-10]": 0.0030498180130962282, + "tests/value/shapley/test_truncated.py::test_tmcs_linear_montecarlo_with_outlier[truncated_montecarlo-kwargs0-scorer0-0.2-2-0-21]": 7.1438663650005765, + "tests/value/test_sampler.py::test_chunkify[AntitheticSampler]": 0.002635386001202278, + "tests/value/test_sampler.py::test_chunkify[DeterministicUniformSampler]": 0.002136322002115776, + "tests/value/test_sampler.py::test_chunkify[RandomHierarchicalSampler]": 0.0024412720013060607, + "tests/value/test_sampler.py::test_chunkify[UniformSampler]": 0.0022573409987671766, + "tests/value/test_sampler.py::test_chunkify_permutation[DeterministicPermutationSampler]": 0.0024367070000153035, + "tests/value/test_sampler.py::test_chunkify_permutation[PermutationSampler]": 0.002322892001757282, + "tests/value/test_sampler.py::test_proper[indices0-AntitheticSampler]": 0.003334062997964793, + "tests/value/test_sampler.py::test_proper[indices0-DeterministicPermutationSampler]": 0.002626270001201192, + "tests/value/test_sampler.py::test_proper[indices0-DeterministicUniformSampler]": 0.002812078997521894, + "tests/value/test_sampler.py::test_proper[indices0-PermutationSampler]": 0.002539194001656142, + "tests/value/test_sampler.py::test_proper[indices0-RandomHierarchicalSampler]": 0.0026362519984104438, + "tests/value/test_sampler.py::test_proper[indices0-UniformSampler]": 0.0024412409984506667, + "tests/value/test_sampler.py::test_proper[indices1-AntitheticSampler]": 0.0027277339995634975, + "tests/value/test_sampler.py::test_proper[indices1-DeterministicPermutationSampler]": 0.002861182998458389, + "tests/value/test_sampler.py::test_proper[indices1-DeterministicUniformSampler]": 0.004058188998897094, + "tests/value/test_sampler.py::test_proper[indices1-PermutationSampler]": 0.0026329000011173775, + "tests/value/test_sampler.py::test_proper[indices1-RandomHierarchicalSampler]": 0.003700332001244533, + "tests/value/test_sampler.py::test_proper[indices1-UniformSampler]": 0.003620775998570025, + "tests/value/test_sampler.py::test_proper_reproducible[indices0-AntitheticSampler]": 0.0028454019975470146, + "tests/value/test_sampler.py::test_proper_reproducible[indices0-PermutationSampler]": 0.0024918920007621637, + "tests/value/test_sampler.py::test_proper_reproducible[indices0-RandomHierarchicalSampler]": 0.0020272490019124234, + "tests/value/test_sampler.py::test_proper_reproducible[indices0-UniformSampler]": 0.0027337100000295322, + "tests/value/test_sampler.py::test_proper_reproducible[indices1-AntitheticSampler]": 0.009103345002586138, + "tests/value/test_sampler.py::test_proper_reproducible[indices1-PermutationSampler]": 0.003312619001007988, + "tests/value/test_sampler.py::test_proper_reproducible[indices1-RandomHierarchicalSampler]": 0.017666732001089258, + "tests/value/test_sampler.py::test_proper_reproducible[indices1-UniformSampler]": 0.010906160998274572, + "tests/value/test_sampler.py::test_proper_stochastic[indices0-AntitheticSampler]": 0.0025616729999455856, + "tests/value/test_sampler.py::test_proper_stochastic[indices0-PermutationSampler]": 0.0034559460000309628, + "tests/value/test_sampler.py::test_proper_stochastic[indices0-RandomHierarchicalSampler]": 0.0029194710004958324, + "tests/value/test_sampler.py::test_proper_stochastic[indices0-UniformSampler]": 0.0028906579991598846, + "tests/value/test_sampler.py::test_proper_stochastic[indices1-AntitheticSampler]": 0.011208809999516234, + "tests/value/test_sampler.py::test_proper_stochastic[indices1-PermutationSampler]": 0.003227124001568882, + "tests/value/test_sampler.py::test_proper_stochastic[indices1-RandomHierarchicalSampler]": 0.020847252999374177, + "tests/value/test_sampler.py::test_proper_stochastic[indices1-UniformSampler]": 0.01049548499941011, + "tests/value/test_semivalues.py::test_banzhaf[AntitheticPermutationSampler-5]": 19.099751196999932, + "tests/value/test_semivalues.py::test_banzhaf[AntitheticSampler-5]": 8.640272729999197, + "tests/value/test_semivalues.py::test_banzhaf[DeterministicPermutationSampler-5]": 11.046467014999507, + "tests/value/test_semivalues.py::test_banzhaf[DeterministicUniformSampler-5]": 7.140763282997796, + "tests/value/test_semivalues.py::test_banzhaf[PermutationSampler-5]": 16.536335553000754, + "tests/value/test_semivalues.py::test_banzhaf[UniformSampler-5]": 8.56469571100206, + "tests/value/test_semivalues.py::test_coefficients[banzhaf_coefficient-100]": 0.01005963700117718, + "tests/value/test_semivalues.py::test_coefficients[banzhaf_coefficient-10]": 0.008440342002359102, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w0-100]": 0.01072616300007212, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w0-10]": 0.010928496998531045, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w1-100]": 0.012177771001006477, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w1-10]": 0.00821317400004773, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w2-100]": 0.010945971000182908, + "tests/value/test_semivalues.py::test_coefficients[beta_coefficient_w2-10]": 0.008208530998672359, + "tests/value/test_semivalues.py::test_coefficients[shapley_coefficient-100]": 0.019708362000528723, + "tests/value/test_semivalues.py::test_coefficients[shapley_coefficient-10]": 0.007813238997187, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-AntitheticPermutationSampler-test_game0]": 22.607437191998542, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-AntitheticPermutationSampler-test_game1]": 19.905466008996882, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-AntitheticSampler-test_game0]": 22.902231953998125, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-AntitheticSampler-test_game1]": 20.254530511001576, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-PermutationSampler-test_game0]": 22.228997524001898, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-PermutationSampler-test_game1]": 19.948070817999906, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-UniformSampler-test_game0]": 23.313307015001556, + "tests/value/test_semivalues.py::test_games_shapley[beta_coefficient_w-UniformSampler-test_game1]": 20.214418551000563, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-AntitheticPermutationSampler-test_game0]": 16.339908187999754, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-AntitheticPermutationSampler-test_game1]": 14.935287896998489, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-AntitheticSampler-test_game0]": 16.71660759900078, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-AntitheticSampler-test_game1]": 15.118247157999576, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-PermutationSampler-test_game0]": 16.669900056000188, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-PermutationSampler-test_game1]": 14.85890512199876, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-UniformSampler-test_game0]": 16.9996823649999, + "tests/value/test_semivalues.py::test_games_shapley[shapley_coefficient-UniformSampler-test_game1]": 15.419395829998393, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicPermutationSampler-test_game0]": 7.571815403000073, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicPermutationSampler-test_game1]": 6.795873736999056, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicPermutationSampler-test_game2]": 6.49785933900057, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicPermutationSampler-test_game3]": 7.046587265998824, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicUniformSampler-test_game0]": 6.9995765299991035, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicUniformSampler-test_game1]": 7.470778629000051, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicUniformSampler-test_game2]": 6.813381661997482, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[beta_coefficient_w-DeterministicUniformSampler-test_game3]": 7.335269874001824, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicPermutationSampler-test_game0]": 8.675189851999676, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicPermutationSampler-test_game1]": 6.932035337997149, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicPermutationSampler-test_game2]": 6.9341853499990975, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicPermutationSampler-test_game3]": 6.737996050998845, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicUniformSampler-test_game0]": 4.491834778002158, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicUniformSampler-test_game1]": 6.446436399000959, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicUniformSampler-test_game2]": 6.968900550000399, + "tests/value/test_semivalues.py::test_games_shapley_deterministic[shapley_coefficient-DeterministicUniformSampler-test_game3]": 6.659720210998785, + "tests/value/test_semivalues.py::test_marginal_batch_size[PermutationSampler-beta_coefficient_w-5-test_game0]": 0.004239154999595485, "tests/value/test_semivalues.py::test_shapley[beta_coefficient_w-AntitheticPermutationSampler-5]": 5.1298250389809255, "tests/value/test_semivalues.py::test_shapley[beta_coefficient_w-AntitheticSampler-5]": 21.97495059997891, "tests/value/test_semivalues.py::test_shapley[beta_coefficient_w-DeterministicPermutationSampler-5]": 5.294114143965999, @@ -460,18 +835,20 @@ "tests/value/test_semivalues.py::test_shapley[shapley_coefficient-DeterministicUniformSampler-5]": 3.263753114035353, "tests/value/test_semivalues.py::test_shapley[shapley_coefficient-PermutationSampler-5]": 4.766259174008155, "tests/value/test_semivalues.py::test_shapley[shapley_coefficient-UniformSampler-5]": 8.919797526003094, + "tests/value/test_semivalues.py::test_shapley_batch_size[1-PermutationSampler-beta_coefficient_w-5-test_game0]": 9.699354351001602, + "tests/value/test_semivalues.py::test_shapley_batch_size[2-PermutationSampler-beta_coefficient_w-5-test_game0]": 11.229309665000983, "tests/value/test_semivalues.py::test_shapley_batch_size[5-PermutationSampler-beta_coefficient_w-5]": 9.19877936199191, - "tests/value/test_stopping.py::test_history_deviation[0.01-100]": 0.7586702810076531, - "tests/value/test_stopping.py::test_history_deviation[0.01-1]": 0.01646678801625967, - "tests/value/test_stopping.py::test_history_deviation[0.01-42]": 0.35505866500898264, - "tests/value/test_stopping.py::test_history_deviation[0.05-100]": 0.15892104100203142, - "tests/value/test_stopping.py::test_history_deviation[0.05-1]": 0.003904131968738511, - "tests/value/test_stopping.py::test_history_deviation[0.05-42]": 0.06365110300248489, - "tests/value/test_stopping.py::test_make_criterion": 0.0067943750182166696, - "tests/value/test_stopping.py::test_max_checks": 0.0022287879837676883, - "tests/value/test_stopping.py::test_max_time": 0.30431480798870325, - "tests/value/test_stopping.py::test_minmax_updates": 0.003805230953730643, - "tests/value/test_stopping.py::test_standard_error": 0.003371614031493664, - "tests/value/test_stopping.py::test_stopping_criterion": 0.004461375967366621, - "tests/value/test_stopping.py::test_stopping_criterion_composition": 0.007468684023479 + "tests/value/test_stopping.py::test_history_deviation[0.01-100]": 1.7738857549993554, + "tests/value/test_stopping.py::test_history_deviation[0.01-1]": 0.029810868998538353, + "tests/value/test_stopping.py::test_history_deviation[0.01-42]": 0.7947784120024153, + "tests/value/test_stopping.py::test_history_deviation[0.05-100]": 0.3636526160007634, + "tests/value/test_stopping.py::test_history_deviation[0.05-1]": 0.010319109000192839, + "tests/value/test_stopping.py::test_history_deviation[0.05-42]": 0.16107529900000372, + "tests/value/test_stopping.py::test_make_criterion": 0.016543962998184725, + "tests/value/test_stopping.py::test_max_checks": 0.006280684001467307, + "tests/value/test_stopping.py::test_max_time": 0.30847623600129737, + "tests/value/test_stopping.py::test_minmax_updates": 0.012927236997711589, + "tests/value/test_stopping.py::test_standard_error": 0.007960140001159743, + "tests/value/test_stopping.py::test_stopping_criterion": 0.011265246001130436, + "tests/value/test_stopping.py::test_stopping_criterion_composition": 0.019021763000637293 } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b3e09e30d..7b895d234 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Changelog +## 0.8.1 - 🆕 🏗 New method and noteboo, Games with exact shapley values, bug fixes and cleanup + +### Added + +- Implement new method: `EkfacInfluence` + [PR #451](https://github.com/aai-institute/pyDVL/issues/451) +- New notebook to showcase ekfac for LLMs + [PR #483](https://github.com/aai-institute/pyDVL/pull/483) +- Implemented exact games in Castro et al. 2009 and 2017 + [PR #341](https://github.com/appliedAI-Initiative/pyDVL/pull/341) + +### Fixed + +- Bug in using `DaskInfluenceCalcualator` with `TorchnumpyConverter` + for single dimensional arrays [PR #485](https://github.com/aai-institute/pyDVL/pull/485) +- Fix implementations of `to` methods of `TorchInfluenceFunctionModel` implementations + [PR #487](https://github.com/aai-institute/pyDVL/pull/487) +- Fixed bug with checking for converged values in semivalues + [PR #341](https://github.com/appliedAI-Initiative/pyDVL/pull/341) + +### Docs + +- Add applications of data valuation section, display examples more prominently, + make all sections visible in table of contents, use mkdocs material cards + in the home page [PR #492](https://github.com/aai-institute/pyDVL/pull/492) + ## 0.8.0 - 🆕 New interfaces, scaling computation, bug fixes and improvements 🎁 ### Added diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 198c7ded3..ad8038705 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ to make your life easier. Run the following to set up the pre-commit git hook to run before pushes: -```shell script +```shell pre-commit install --hook-type pre-push ``` @@ -32,7 +32,7 @@ pre-commit install --hook-type pre-push We strongly suggest using some form of virtual environment for working with the library. E.g. with venv: -```shell script +```shell python -m venv ./venv . venv/bin/activate # `venv\Scripts\activate` in windows pip install -r requirements-dev.txt -r requirements-docs.txt @@ -40,7 +40,7 @@ pip install -r requirements-dev.txt -r requirements-docs.txt With conda: -```shell script +```shell conda create -n pydvl python=3.8 conda activate pydvl pip install -r requirements-dev.txt -r requirements-docs.txt @@ -49,7 +49,7 @@ pip install -r requirements-dev.txt -r requirements-docs.txt A very convenient way of working with your library during development is to install it in editable mode into your environment by running -```shell script +```shell pip install -e . ``` @@ -58,7 +58,7 @@ suite) [pandoc](https://pandoc.org/) is required. Except for OSX, it should be i automatically as a dependency with `requirements-docs.txt`. Under OSX you can install pandoc (you'll need at least version 2.11) with: -```shell script +```shell brew install pandoc ``` @@ -152,11 +152,11 @@ Two important markers are: To test the notebooks separately, run (see [below](#notebooks) for details): ```shell -tox -e tests -- notebooks/ +tox -e notebook-tests ``` To create a package locally, run: -```shell script +```shell python setup.py sdist bdist_wheel ``` @@ -343,8 +343,12 @@ runs](#skipping-ci-runs)). 3. We split the tests based on their duration into groups and run them in parallel. For that we use [pytest-split](https://jerry-git.github.io/pytest-split) - to first store the duration of all tests with `pytest --store-durations pytest --slow-tests` + to first store the duration of all tests with + `tox -e tests -- --store-durations --slow-tests` in a `.test_durations` file. + + Alternatively, we case use pytest directly + `pytest --store-durations --slow-tests`. > **Note** This does not have to be done each time a new test or test case > is added. For new tests and test cases pytes-split assumes @@ -359,11 +363,14 @@ runs](#skipping-ci-runs)). Then we can have as many splits as we want: ```shell - pytest --splits 3 --group 1 - pytest --splits 3 --group 2 - pytest --splits 3 --group 3 + tox -e tests -- --splits 3 --group 1 + tox -e tests -- --splits 3 --group 2 + tox -e tests -- --splits 3 --group 3 ``` + Alternatively, we case use pytest directly + `pytest --splits 3 ---group 1`. + Each one of these commands should be run in a separate shell/job to run the test groups in parallel and decrease the total runtime. @@ -510,13 +517,13 @@ Then, a new release can be created using the script `bumpversion` automatically derive the next release version by bumping the patch part): -```shell script +```shell build_scripts/release-version.sh 0.1.6 ``` To find out how to use the script, pass the `-h` or `--help` flags: -```shell script +```shell build_scripts/release-version.sh --help ``` @@ -542,7 +549,7 @@ create a new release manually by following these steps: 2. When ready to release: From the develop branch create the release branch and perform release activities (update changelog, news, ...). For your own convenience, define an env variable for the release version - ```shell script + ```shell export RELEASE_VERSION="vX.Y.Z" git checkout develop git branch release/${RELEASE_VERSION} && git checkout release/${RELEASE_VERSION} @@ -553,7 +560,7 @@ create a new release manually by following these steps: (the `release` part is ignored but required by bumpversion :rolling_eyes:). 4. Merge the release branch into `master`, tag the merge commit, and push back to the repo. The CI pipeline publishes the package based on the tagged commit. - ```shell script + ```shell git checkout master git merge --no-ff release/${RELEASE_VERSION} git tag -a ${RELEASE_VERSION} -m"Release ${RELEASE_VERSION}" @@ -564,7 +571,7 @@ create a new release manually by following these steps: always strictly more recent than the last published release version from `master`. 6. Merge the release branch into `develop`: - ```shell script + ```shell git checkout develop git merge --no-ff release/${RELEASE_VERSION} git push origin develop diff --git a/README.md b/README.md index 417709714..948ffc842 100644 --- a/README.md +++ b/README.md @@ -7,27 +7,13 @@

- - PyPI - - - Version - - - documentation - - - License - - - Build status - - - - - - DOI - + PyPI + Version + documentation + License + Build status + + DOI

**pyDVL** collects algorithms for **Data Valuation** and **Influence Function** computation. @@ -332,7 +318,8 @@ We currently implement the following papers: - Schioppa, Andrea, Polina Zablotskaia, David Vilar, and Artem Sokolov. [Scaling Up Influence Functions](http://arxiv.org/abs/2112.03052). In Proceedings of the AAAI-22. arXiv, 2021. - +- James Martens, Roger Grosse, [Optimizing Neural Networks with Kronecker-factored Approximate Curvature](https://arxiv.org/abs/1503.05671), International Conference on Machine Learning (ICML), 2015. +- George, Thomas, César Laurent, Xavier Bouthillier, Nicolas Ballas, Pascal Vincent, [Fast Approximate Natural Gradient Descent in a Kronecker-factored Eigenbasis](https://arxiv.org/abs/1806.03884), Advances in Neural Information Processing Systems 31,2018. # License diff --git a/build_scripts/copy_contributing_guide.py b/build_scripts/copy_contributing_guide.py new file mode 100644 index 000000000..0c4b2fbf2 --- /dev/null +++ b/build_scripts/copy_contributing_guide.py @@ -0,0 +1,38 @@ +import logging +import os +from pathlib import Path + +import mkdocs.plugins + +logger = logging.getLogger(__name__) + +root_dir = Path(__file__).parent.parent +docs_dir = root_dir / "docs" +contributing_file = root_dir / "CONTRIBUTING.md" +target_filepath = docs_dir / contributing_file.name + + +@mkdocs.plugins.event_priority(100) +def on_pre_build(config): + logger.info("Temporarily copying contributing guide to docs directory") + try: + if os.path.getmtime(contributing_file) <= os.path.getmtime(target_filepath): + logger.info( + f"Contributing guide '{os.fspath(contributing_file)}' hasn't been updated, skipping." + ) + return + except FileNotFoundError: + pass + logger.info( + f"Creating symbolic link for '{os.fspath(contributing_file)}' " + f"at '{os.fspath(target_filepath)}'" + ) + target_filepath.symlink_to(contributing_file) + + logger.info("Finished copying contributing guide to docs directory") + + +@mkdocs.plugins.event_priority(-100) +def on_shutdown(): + logger.info("Removing temporary contributing guide in docs directory") + target_filepath.unlink() diff --git a/docs/assets/pydvl.bib b/docs/assets/pydvl.bib index e87ad3484..a79fb6627 100644 --- a/docs/assets/pydvl.bib +++ b/docs/assets/pydvl.bib @@ -342,4 +342,21 @@ @InProceedings{kwon_data_2023 pdf = {https://proceedings.mlr.press/v202/kwon23e/kwon23e.pdf}, url = {https://proceedings.mlr.press/v202/kwon23e.html}, abstract = {Data valuation is a powerful framework for providing statistical insights into which data are beneficial or detrimental to model training. Many Shapley-based data valuation methods have shown promising results in various downstream tasks, however, they are well known to be computationally challenging as it requires training a large number of models. As a result, it has been recognized as infeasible to apply to large datasets. To address this issue, we propose Data-OOB, a new data valuation method for a bagging model that utilizes the out-of-bag estimate. The proposed method is computationally efficient and can scale to millions of data by reusing trained weak learners. Specifically, Data-OOB takes less than $2.25$ hours on a single CPU processor when there are $10^6$ samples to evaluate and the input dimension is $100$. Furthermore, Data-OOB has solid theoretical interpretations in that it identifies the same important data point as the infinitesimal jackknife influence function when two different points are compared. We conduct comprehensive experiments using 12 classification datasets, each with thousands of sample sizes. We demonstrate that the proposed method significantly outperforms existing state-of-the-art data valuation methods in identifying mislabeled data and finding a set of helpful (or harmful) data points, highlighting the potential for applying data values in real-world applications.} +} + +@article{george2018fast, + title={Fast approximate natural gradient descent in a kronecker factored eigenbasis}, + author={George, Thomas and Laurent, C{\'e}sar and Bouthillier, Xavier and Ballas, Nicolas and Vincent, Pascal}, + journal={Advances in Neural Information Processing Systems}, + volume={31}, + year={2018} +} + +@inproceedings{martens2015optimizing, + title={Optimizing neural networks with kronecker-factored approximate curvature}, + author={Martens, James and Grosse, Roger}, + booktitle={International conference on machine learning}, + pages={2408--2417}, + year={2015}, + organization={PMLR} } \ No newline at end of file diff --git a/docs/css/extra.css b/docs/css/extra.css index 0a74470ce..4354e03e9 100644 --- a/docs/css/extra.css +++ b/docs/css/extra.css @@ -69,6 +69,7 @@ a.autorefs-external:hover::after { .nt-card-image:focus { filter: invert(32%) sepia(93%) saturate(1535%) hue-rotate(220deg) brightness(102%) contrast(99%); } + .md-header__button.md-logo { padding: 0; } diff --git a/docs/css/grid-cards.css b/docs/css/grid-cards.css new file mode 100644 index 000000000..8be3dcbb8 --- /dev/null +++ b/docs/css/grid-cards.css @@ -0,0 +1,22 @@ +/* Shadow and Hover */ +.grid.cards > ul > li { + box-shadow: 0 2px 2px 0 rgb(0 0 0 / 14%), 0 3px 1px -2px rgb(0 0 0 / 20%), 0 1px 5px 0 rgb(0 0 0 / 12%); + + &:hover { + transform: scale(1.05); + z-index: 999; + background-color: rgba(0, 0, 0, 0.05); + } +} + +[data-md-color-scheme="slate"] { + .grid.cards > ul > li { + box-shadow: 0 2px 2px 0 rgb(4 40 33 / 14%), 0 3px 1px -2px rgb(40 86 94 / 47%), 0 1px 5px 0 rgb(139 252 255 / 64%); + + &:hover { + transform: scale(1.05); + z-index: 999; + background-color: rgba(139, 252, 255, 0.05); + } + } +} diff --git a/docs/css/neoteroi.css b/docs/css/neoteroi.css deleted file mode 100644 index 363c9229a..000000000 --- a/docs/css/neoteroi.css +++ /dev/null @@ -1 +0,0 @@ -:root{--nt-color-0: #CD853F;--nt-color-1: #B22222;--nt-color-2: #000080;--nt-color-3: #4B0082;--nt-color-4: #3CB371;--nt-color-5: #D2B48C;--nt-color-6: #FF00FF;--nt-color-7: #98FB98;--nt-color-8: #FFEBCD;--nt-color-9: #2E8B57;--nt-color-10: #6A5ACD;--nt-color-11: #48D1CC;--nt-color-12: #FFA500;--nt-color-13: #F4A460;--nt-color-14: #A52A2A;--nt-color-15: #FFE4C4;--nt-color-16: #FF4500;--nt-color-17: #AFEEEE;--nt-color-18: #FA8072;--nt-color-19: #2F4F4F;--nt-color-20: #FFDAB9;--nt-color-21: #BC8F8F;--nt-color-22: #FFC0CB;--nt-color-23: #00FA9A;--nt-color-24: #F0FFF0;--nt-color-25: #FFFACD;--nt-color-26: #F5F5F5;--nt-color-27: #FF6347;--nt-color-28: #FFFFF0;--nt-color-29: #7FFFD4;--nt-color-30: #E9967A;--nt-color-31: #7B68EE;--nt-color-32: #FFF8DC;--nt-color-33: #0000CD;--nt-color-34: #D2691E;--nt-color-35: #708090;--nt-color-36: #5F9EA0;--nt-color-37: #008080;--nt-color-38: #008000;--nt-color-39: #FFE4E1;--nt-color-40: #FFFF00;--nt-color-41: #FFFAF0;--nt-color-42: #DCDCDC;--nt-color-43: #ADFF2F;--nt-color-44: #ADD8E6;--nt-color-45: #8B008B;--nt-color-46: #7FFF00;--nt-color-47: #800000;--nt-color-48: #20B2AA;--nt-color-49: #556B2F;--nt-color-50: #778899;--nt-color-51: #E6E6FA;--nt-color-52: #FFFAFA;--nt-color-53: #FF7F50;--nt-color-54: #FF0000;--nt-color-55: #F5DEB3;--nt-color-56: #008B8B;--nt-color-57: #66CDAA;--nt-color-58: #808000;--nt-color-59: #FAF0E6;--nt-color-60: #00BFFF;--nt-color-61: #C71585;--nt-color-62: #00FFFF;--nt-color-63: #8B4513;--nt-color-64: #F0F8FF;--nt-color-65: #FAEBD7;--nt-color-66: #8B0000;--nt-color-67: #4682B4;--nt-color-68: #F0E68C;--nt-color-69: #BDB76B;--nt-color-70: #A0522D;--nt-color-71: #FAFAD2;--nt-color-72: #FFD700;--nt-color-73: #DEB887;--nt-color-74: #E0FFFF;--nt-color-75: #8A2BE2;--nt-color-76: #32CD32;--nt-color-77: #87CEFA;--nt-color-78: #00CED1;--nt-color-79: #696969;--nt-color-80: #DDA0DD;--nt-color-81: #EE82EE;--nt-color-82: #FFB6C1;--nt-color-83: #8FBC8F;--nt-color-84: #D8BFD8;--nt-color-85: #9400D3;--nt-color-86: #A9A9A9;--nt-color-87: #FFFFE0;--nt-color-88: #FFF5EE;--nt-color-89: #FFF0F5;--nt-color-90: #FFDEAD;--nt-color-91: #800080;--nt-color-92: #B0E0E6;--nt-color-93: #9932CC;--nt-color-94: #DAA520;--nt-color-95: #F0FFFF;--nt-color-96: #40E0D0;--nt-color-97: #00FF7F;--nt-color-98: #006400;--nt-color-99: #808080;--nt-color-100: #87CEEB;--nt-color-101: #0000FF;--nt-color-102: #6495ED;--nt-color-103: #FDF5E6;--nt-color-104: #B8860B;--nt-color-105: #BA55D3;--nt-color-106: #C0C0C0;--nt-color-107: #000000;--nt-color-108: #F08080;--nt-color-109: #B0C4DE;--nt-color-110: #00008B;--nt-color-111: #6B8E23;--nt-color-112: #FFE4B5;--nt-color-113: #FFA07A;--nt-color-114: #9ACD32;--nt-color-115: #FFFFFF;--nt-color-116: #F5F5DC;--nt-color-117: #90EE90;--nt-color-118: #1E90FF;--nt-color-119: #7CFC00;--nt-color-120: #FF69B4;--nt-color-121: #F8F8FF;--nt-color-122: #F5FFFA;--nt-color-123: #00FF00;--nt-color-124: #D3D3D3;--nt-color-125: #DB7093;--nt-color-126: #DA70D6;--nt-color-127: #FF1493;--nt-color-128: #228B22;--nt-color-129: #FFEFD5;--nt-color-130: #4169E1;--nt-color-131: #191970;--nt-color-132: #9370DB;--nt-color-133: #483D8B;--nt-color-134: #FF8C00;--nt-color-135: #EEE8AA;--nt-color-136: #CD5C5C;--nt-color-137: #DC143C}:root{--nt-group-0-main: #000000;--nt-group-0-dark: #FFFFFF;--nt-group-0-light: #000000;--nt-group-0-main-bg: #F44336;--nt-group-0-dark-bg: #BA000D;--nt-group-0-light-bg: #FF7961;--nt-group-1-main: #000000;--nt-group-1-dark: #FFFFFF;--nt-group-1-light: #000000;--nt-group-1-main-bg: #E91E63;--nt-group-1-dark-bg: #B0003A;--nt-group-1-light-bg: #FF6090;--nt-group-2-main: #FFFFFF;--nt-group-2-dark: #FFFFFF;--nt-group-2-light: #000000;--nt-group-2-main-bg: #9C27B0;--nt-group-2-dark-bg: #6A0080;--nt-group-2-light-bg: #D05CE3;--nt-group-3-main: #FFFFFF;--nt-group-3-dark: #FFFFFF;--nt-group-3-light: #000000;--nt-group-3-main-bg: #673AB7;--nt-group-3-dark-bg: #320B86;--nt-group-3-light-bg: #9A67EA;--nt-group-4-main: #FFFFFF;--nt-group-4-dark: #FFFFFF;--nt-group-4-light: #000000;--nt-group-4-main-bg: #3F51B5;--nt-group-4-dark-bg: #002984;--nt-group-4-light-bg: #757DE8;--nt-group-5-main: #000000;--nt-group-5-dark: #FFFFFF;--nt-group-5-light: #000000;--nt-group-5-main-bg: #2196F3;--nt-group-5-dark-bg: #0069C0;--nt-group-5-light-bg: #6EC6FF;--nt-group-6-main: #000000;--nt-group-6-dark: #FFFFFF;--nt-group-6-light: #000000;--nt-group-6-main-bg: #03A9F4;--nt-group-6-dark-bg: #007AC1;--nt-group-6-light-bg: #67DAFF;--nt-group-7-main: #000000;--nt-group-7-dark: #000000;--nt-group-7-light: #000000;--nt-group-7-main-bg: #00BCD4;--nt-group-7-dark-bg: #008BA3;--nt-group-7-light-bg: #62EFFF;--nt-group-8-main: #000000;--nt-group-8-dark: #FFFFFF;--nt-group-8-light: #000000;--nt-group-8-main-bg: #009688;--nt-group-8-dark-bg: #00675B;--nt-group-8-light-bg: #52C7B8;--nt-group-9-main: #000000;--nt-group-9-dark: #FFFFFF;--nt-group-9-light: #000000;--nt-group-9-main-bg: #4CAF50;--nt-group-9-dark-bg: #087F23;--nt-group-9-light-bg: #80E27E;--nt-group-10-main: #000000;--nt-group-10-dark: #000000;--nt-group-10-light: #000000;--nt-group-10-main-bg: #8BC34A;--nt-group-10-dark-bg: #5A9216;--nt-group-10-light-bg: #BEF67A;--nt-group-11-main: #000000;--nt-group-11-dark: #000000;--nt-group-11-light: #000000;--nt-group-11-main-bg: #CDDC39;--nt-group-11-dark-bg: #99AA00;--nt-group-11-light-bg: #FFFF6E;--nt-group-12-main: #000000;--nt-group-12-dark: #000000;--nt-group-12-light: #000000;--nt-group-12-main-bg: #FFEB3B;--nt-group-12-dark-bg: #C8B900;--nt-group-12-light-bg: #FFFF72;--nt-group-13-main: #000000;--nt-group-13-dark: #000000;--nt-group-13-light: #000000;--nt-group-13-main-bg: #FFC107;--nt-group-13-dark-bg: #C79100;--nt-group-13-light-bg: #FFF350;--nt-group-14-main: #000000;--nt-group-14-dark: #000000;--nt-group-14-light: #000000;--nt-group-14-main-bg: #FF9800;--nt-group-14-dark-bg: #C66900;--nt-group-14-light-bg: #FFC947;--nt-group-15-main: #000000;--nt-group-15-dark: #FFFFFF;--nt-group-15-light: #000000;--nt-group-15-main-bg: #FF5722;--nt-group-15-dark-bg: #C41C00;--nt-group-15-light-bg: #FF8A50;--nt-group-16-main: #FFFFFF;--nt-group-16-dark: #FFFFFF;--nt-group-16-light: #000000;--nt-group-16-main-bg: #795548;--nt-group-16-dark-bg: #4B2C20;--nt-group-16-light-bg: #A98274;--nt-group-17-main: #000000;--nt-group-17-dark: #FFFFFF;--nt-group-17-light: #000000;--nt-group-17-main-bg: #9E9E9E;--nt-group-17-dark-bg: #707070;--nt-group-17-light-bg: #CFCFCF;--nt-group-18-main: #000000;--nt-group-18-dark: #FFFFFF;--nt-group-18-light: #000000;--nt-group-18-main-bg: #607D8B;--nt-group-18-dark-bg: #34515E;--nt-group-18-light-bg: #8EACBB}.nt-pastello{--nt-group-0-main: #000000;--nt-group-0-dark: #000000;--nt-group-0-light: #000000;--nt-group-0-main-bg: #EF9A9A;--nt-group-0-dark-bg: #BA6B6C;--nt-group-0-light-bg: #FFCCCB;--nt-group-1-main: #000000;--nt-group-1-dark: #000000;--nt-group-1-light: #000000;--nt-group-1-main-bg: #F48FB1;--nt-group-1-dark-bg: #BF5F82;--nt-group-1-light-bg: #FFC1E3;--nt-group-2-main: #000000;--nt-group-2-dark: #000000;--nt-group-2-light: #000000;--nt-group-2-main-bg: #CE93D8;--nt-group-2-dark-bg: #9C64A6;--nt-group-2-light-bg: #FFC4FF;--nt-group-3-main: #000000;--nt-group-3-dark: #000000;--nt-group-3-light: #000000;--nt-group-3-main-bg: #B39DDB;--nt-group-3-dark-bg: #836FA9;--nt-group-3-light-bg: #E6CEFF;--nt-group-4-main: #000000;--nt-group-4-dark: #000000;--nt-group-4-light: #000000;--nt-group-4-main-bg: #9FA8DA;--nt-group-4-dark-bg: #6F79A8;--nt-group-4-light-bg: #D1D9FF;--nt-group-5-main: #000000;--nt-group-5-dark: #000000;--nt-group-5-light: #000000;--nt-group-5-main-bg: #90CAF9;--nt-group-5-dark-bg: #5D99C6;--nt-group-5-light-bg: #C3FDFF;--nt-group-6-main: #000000;--nt-group-6-dark: #000000;--nt-group-6-light: #000000;--nt-group-6-main-bg: #81D4FA;--nt-group-6-dark-bg: #4BA3C7;--nt-group-6-light-bg: #B6FFFF;--nt-group-7-main: #000000;--nt-group-7-dark: #000000;--nt-group-7-light: #000000;--nt-group-7-main-bg: #80DEEA;--nt-group-7-dark-bg: #4BACB8;--nt-group-7-light-bg: #B4FFFF;--nt-group-8-main: #000000;--nt-group-8-dark: #000000;--nt-group-8-light: #000000;--nt-group-8-main-bg: #80CBC4;--nt-group-8-dark-bg: #4F9A94;--nt-group-8-light-bg: #B2FEF7;--nt-group-9-main: #000000;--nt-group-9-dark: #000000;--nt-group-9-light: #000000;--nt-group-9-main-bg: #A5D6A7;--nt-group-9-dark-bg: #75A478;--nt-group-9-light-bg: #D7FFD9;--nt-group-10-main: #000000;--nt-group-10-dark: #000000;--nt-group-10-light: #000000;--nt-group-10-main-bg: #C5E1A5;--nt-group-10-dark-bg: #94AF76;--nt-group-10-light-bg: #F8FFD7;--nt-group-11-main: #000000;--nt-group-11-dark: #000000;--nt-group-11-light: #000000;--nt-group-11-main-bg: #E6EE9C;--nt-group-11-dark-bg: #B3BC6D;--nt-group-11-light-bg: #FFFFCE;--nt-group-12-main: #000000;--nt-group-12-dark: #000000;--nt-group-12-light: #000000;--nt-group-12-main-bg: #FFF59D;--nt-group-12-dark-bg: #CBC26D;--nt-group-12-light-bg: #FFFFCF;--nt-group-13-main: #000000;--nt-group-13-dark: #000000;--nt-group-13-light: #000000;--nt-group-13-main-bg: #FFE082;--nt-group-13-dark-bg: #CAAE53;--nt-group-13-light-bg: #FFFFB3;--nt-group-14-main: #000000;--nt-group-14-dark: #000000;--nt-group-14-light: #000000;--nt-group-14-main-bg: #FFCC80;--nt-group-14-dark-bg: #CA9B52;--nt-group-14-light-bg: #FFFFB0;--nt-group-15-main: #000000;--nt-group-15-dark: #000000;--nt-group-15-light: #000000;--nt-group-15-main-bg: #FFAB91;--nt-group-15-dark-bg: #C97B63;--nt-group-15-light-bg: #FFDDC1;--nt-group-16-main: #000000;--nt-group-16-dark: #000000;--nt-group-16-light: #000000;--nt-group-16-main-bg: #BCAAA4;--nt-group-16-dark-bg: #8C7B75;--nt-group-16-light-bg: #EFDCD5;--nt-group-17-main: #000000;--nt-group-17-dark: #000000;--nt-group-17-light: #000000;--nt-group-17-main-bg: #EEEEEE;--nt-group-17-dark-bg: #BCBCBC;--nt-group-17-light-bg: #FFFFFF;--nt-group-18-main: #000000;--nt-group-18-dark: #000000;--nt-group-18-light: #000000;--nt-group-18-main-bg: #B0BEC5;--nt-group-18-dark-bg: #808E95;--nt-group-18-light-bg: #E2F1F8}.nt-group-0 .nt-plan-group-summary,.nt-group-0 .nt-timeline-dot{color:var(--nt-group-0-dark);background-color:var(--nt-group-0-dark-bg)}.nt-group-0 .period{color:var(--nt-group-0-main);background-color:var(--nt-group-0-main-bg)}.nt-group-1 .nt-plan-group-summary,.nt-group-1 .nt-timeline-dot{color:var(--nt-group-1-dark);background-color:var(--nt-group-1-dark-bg)}.nt-group-1 .period{color:var(--nt-group-1-main);background-color:var(--nt-group-1-main-bg)}.nt-group-2 .nt-plan-group-summary,.nt-group-2 .nt-timeline-dot{color:var(--nt-group-2-dark);background-color:var(--nt-group-2-dark-bg)}.nt-group-2 .period{color:var(--nt-group-2-main);background-color:var(--nt-group-2-main-bg)}.nt-group-3 .nt-plan-group-summary,.nt-group-3 .nt-timeline-dot{color:var(--nt-group-3-dark);background-color:var(--nt-group-3-dark-bg)}.nt-group-3 .period{color:var(--nt-group-3-main);background-color:var(--nt-group-3-main-bg)}.nt-group-4 .nt-plan-group-summary,.nt-group-4 .nt-timeline-dot{color:var(--nt-group-4-dark);background-color:var(--nt-group-4-dark-bg)}.nt-group-4 .period{color:var(--nt-group-4-main);background-color:var(--nt-group-4-main-bg)}.nt-group-5 .nt-plan-group-summary,.nt-group-5 .nt-timeline-dot{color:var(--nt-group-5-dark);background-color:var(--nt-group-5-dark-bg)}.nt-group-5 .period{color:var(--nt-group-5-main);background-color:var(--nt-group-5-main-bg)}.nt-group-6 .nt-plan-group-summary,.nt-group-6 .nt-timeline-dot{color:var(--nt-group-6-dark);background-color:var(--nt-group-6-dark-bg)}.nt-group-6 .period{color:var(--nt-group-6-main);background-color:var(--nt-group-6-main-bg)}.nt-group-7 .nt-plan-group-summary,.nt-group-7 .nt-timeline-dot{color:var(--nt-group-7-dark);background-color:var(--nt-group-7-dark-bg)}.nt-group-7 .period{color:var(--nt-group-7-main);background-color:var(--nt-group-7-main-bg)}.nt-group-8 .nt-plan-group-summary,.nt-group-8 .nt-timeline-dot{color:var(--nt-group-8-dark);background-color:var(--nt-group-8-dark-bg)}.nt-group-8 .period{color:var(--nt-group-8-main);background-color:var(--nt-group-8-main-bg)}.nt-group-9 .nt-plan-group-summary,.nt-group-9 .nt-timeline-dot{color:var(--nt-group-9-dark);background-color:var(--nt-group-9-dark-bg)}.nt-group-9 .period{color:var(--nt-group-9-main);background-color:var(--nt-group-9-main-bg)}.nt-group-10 .nt-plan-group-summary,.nt-group-10 .nt-timeline-dot{color:var(--nt-group-10-dark);background-color:var(--nt-group-10-dark-bg)}.nt-group-10 .period{color:var(--nt-group-10-main);background-color:var(--nt-group-10-main-bg)}.nt-group-11 .nt-plan-group-summary,.nt-group-11 .nt-timeline-dot{color:var(--nt-group-11-dark);background-color:var(--nt-group-11-dark-bg)}.nt-group-11 .period{color:var(--nt-group-11-main);background-color:var(--nt-group-11-main-bg)}.nt-group-12 .nt-plan-group-summary,.nt-group-12 .nt-timeline-dot{color:var(--nt-group-12-dark);background-color:var(--nt-group-12-dark-bg)}.nt-group-12 .period{color:var(--nt-group-12-main);background-color:var(--nt-group-12-main-bg)}.nt-group-13 .nt-plan-group-summary,.nt-group-13 .nt-timeline-dot{color:var(--nt-group-13-dark);background-color:var(--nt-group-13-dark-bg)}.nt-group-13 .period{color:var(--nt-group-13-main);background-color:var(--nt-group-13-main-bg)}.nt-group-14 .nt-plan-group-summary,.nt-group-14 .nt-timeline-dot{color:var(--nt-group-14-dark);background-color:var(--nt-group-14-dark-bg)}.nt-group-14 .period{color:var(--nt-group-14-main);background-color:var(--nt-group-14-main-bg)}.nt-group-15 .nt-plan-group-summary,.nt-group-15 .nt-timeline-dot{color:var(--nt-group-15-dark);background-color:var(--nt-group-15-dark-bg)}.nt-group-15 .period{color:var(--nt-group-15-main);background-color:var(--nt-group-15-main-bg)}.nt-group-16 .nt-plan-group-summary,.nt-group-16 .nt-timeline-dot{color:var(--nt-group-16-dark);background-color:var(--nt-group-16-dark-bg)}.nt-group-16 .period{color:var(--nt-group-16-main);background-color:var(--nt-group-16-main-bg)}.nt-group-17 .nt-plan-group-summary,.nt-group-17 .nt-timeline-dot{color:var(--nt-group-17-dark);background-color:var(--nt-group-17-dark-bg)}.nt-group-17 .period{color:var(--nt-group-17-main);background-color:var(--nt-group-17-main-bg)}.nt-group-18 .nt-plan-group-summary,.nt-group-18 .nt-timeline-dot{color:var(--nt-group-18-dark);background-color:var(--nt-group-18-dark-bg)}.nt-group-18 .period{color:var(--nt-group-18-main);background-color:var(--nt-group-18-main-bg)}.nt-error{border:2px dashed darkred;padding:0 1rem;background:#faf9ba;color:darkred}.nt-timeline{margin-top:30px}.nt-timeline .nt-timeline-title{font-size:1.1rem;margin-top:0}.nt-timeline .nt-timeline-sub-title{margin-top:0}.nt-timeline .nt-timeline-content{font-size:.8rem;border-bottom:2px dashed #ccc;padding-bottom:1.2rem}.nt-timeline.horizontal .nt-timeline-items{flex-direction:row;overflow-x:scroll}.nt-timeline.horizontal .nt-timeline-items>div{min-width:400px;margin-right:50px}.nt-timeline.horizontal.reverse .nt-timeline-items{flex-direction:row-reverse}.nt-timeline.horizontal.center .nt-timeline-before{background-image:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal.center .nt-timeline-after{background-image:linear-gradient(180deg, rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal.center .nt-timeline-items{background-image:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal .nt-timeline-dot{left:50%}.nt-timeline.horizontal .nt-timeline-dot:not(.bigger){top:calc(50% - 4px)}.nt-timeline.horizontal .nt-timeline-dot.bigger{top:calc(50% - 15px)}.nt-timeline.vertical .nt-timeline-items{flex-direction:column}.nt-timeline.vertical.reverse .nt-timeline-items{flex-direction:column-reverse}.nt-timeline.vertical.center .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-dot{left:calc(50% - 10px)}.nt-timeline.vertical.center .nt-timeline-dot:not(.bigger){top:10px}.nt-timeline.vertical.center .nt-timeline-dot.bigger{left:calc(50% - 20px)}.nt-timeline.vertical.left{padding-left:100px}.nt-timeline.vertical.left .nt-timeline-item{padding-left:70px}.nt-timeline.vertical.left .nt-timeline-sub-title{left:-100px;width:100px}.nt-timeline.vertical.left .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-dot{left:21px;top:8px}.nt-timeline.vertical.left .nt-timeline-dot.bigger{top:0px;left:10px}.nt-timeline.vertical.right{padding-right:100px}.nt-timeline.vertical.right .nt-timeline-sub-title{right:-100px;text-align:left;width:100px}.nt-timeline.vertical.right .nt-timeline-item{padding-right:70px}.nt-timeline.vertical.right .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-dot{right:21px;top:8px}.nt-timeline.vertical.right .nt-timeline-dot.bigger{top:10px;right:10px}.nt-timeline-items{display:flex;position:relative}.nt-timeline-items>div{min-height:100px;padding-top:2px;padding-bottom:20px}.nt-timeline-before{content:"";height:15px}.nt-timeline-after{content:"";height:60px;margin-bottom:20px}.nt-timeline-sub-title{position:absolute;width:50%;top:4px;font-size:18px;color:var(--nt-color-50)}[data-md-color-scheme=slate] .nt-timeline-sub-title{color:var(--nt-color-51)}.nt-timeline-item{position:relative}.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item{padding-left:calc(50% + 40px)}.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title{left:0;padding-right:40px;text-align:right}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd){padding-left:calc(50% + 40px)}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title{left:0;padding-right:40px;text-align:right}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even){text-align:right;padding-right:calc(50% + 40px)}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title{right:0;padding-left:40px;text-align:left}.nt-timeline-dot{position:relative;width:20px;height:20px;border-radius:100%;background-color:#fc5b5b;position:absolute;top:0px;z-index:2;display:flex;justify-content:center;align-items:center;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);border:3px solid #fff}.nt-timeline-dot:not(.bigger) .icon{font-size:10px}.nt-timeline-dot.bigger{width:40px;height:40px;padding:3px}.nt-timeline-dot .icon{color:#fff}@supports not (-moz-appearance: none){details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title,details .nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title{left:-40px}details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title{right:-40px}details .nt-timeline.vertical.center .nt-timeline-dot{left:calc(50% - 12px)}details .nt-timeline-dot.bigger{font-size:1rem !important}}.nt-timeline-item:nth-child(0) .nt-timeline-dot{background-color:var(--nt-color-0)}.nt-timeline-item:nth-child(1) .nt-timeline-dot{background-color:var(--nt-color-1)}.nt-timeline-item:nth-child(2) .nt-timeline-dot{background-color:var(--nt-color-2)}.nt-timeline-item:nth-child(3) .nt-timeline-dot{background-color:var(--nt-color-3)}.nt-timeline-item:nth-child(4) .nt-timeline-dot{background-color:var(--nt-color-4)}.nt-timeline-item:nth-child(5) .nt-timeline-dot{background-color:var(--nt-color-5)}.nt-timeline-item:nth-child(6) .nt-timeline-dot{background-color:var(--nt-color-6)}.nt-timeline-item:nth-child(7) .nt-timeline-dot{background-color:var(--nt-color-7)}.nt-timeline-item:nth-child(8) .nt-timeline-dot{background-color:var(--nt-color-8)}.nt-timeline-item:nth-child(9) .nt-timeline-dot{background-color:var(--nt-color-9)}.nt-timeline-item:nth-child(10) .nt-timeline-dot{background-color:var(--nt-color-10)}.nt-timeline-item:nth-child(11) .nt-timeline-dot{background-color:var(--nt-color-11)}.nt-timeline-item:nth-child(12) .nt-timeline-dot{background-color:var(--nt-color-12)}.nt-timeline-item:nth-child(13) .nt-timeline-dot{background-color:var(--nt-color-13)}.nt-timeline-item:nth-child(14) .nt-timeline-dot{background-color:var(--nt-color-14)}.nt-timeline-item:nth-child(15) .nt-timeline-dot{background-color:var(--nt-color-15)}.nt-timeline-item:nth-child(16) .nt-timeline-dot{background-color:var(--nt-color-16)}.nt-timeline-item:nth-child(17) .nt-timeline-dot{background-color:var(--nt-color-17)}.nt-timeline-item:nth-child(18) .nt-timeline-dot{background-color:var(--nt-color-18)}.nt-timeline-item:nth-child(19) .nt-timeline-dot{background-color:var(--nt-color-19)}.nt-timeline-item:nth-child(20) .nt-timeline-dot{background-color:var(--nt-color-20)}:root{--nt-scrollbar-color: #2751b0;--nt-plan-actions-height: 24px;--nt-units-background: #ff9800;--nt-months-background: #2751b0;--nt-plan-vertical-line-color: #a3a3a3ad}.nt-pastello{--nt-scrollbar-color: #9fb8f4;--nt-units-background: #f5dc82;--nt-months-background: #5b7fd1}[data-md-color-scheme=slate]{--nt-units-background: #003773}[data-md-color-scheme=slate] .nt-pastello{--nt-units-background: #3f4997}.nt-plan-root{min-height:200px;scrollbar-width:20px;scrollbar-color:var(--nt-scrollbar-color);display:flex}.nt-plan-root ::-webkit-scrollbar{width:20px}.nt-plan-root ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:10px}.nt-plan-root ::-webkit-scrollbar-thumb{background:var(--nt-scrollbar-color);border-radius:10px}.nt-plan-root .nt-plan{flex:80%}.nt-plan-root.no-groups .nt-plan-periods{padding-left:0}.nt-plan-root.no-groups .nt-plan-group-summary{display:none}.nt-plan-root .nt-timeline-dot.bigger{top:-10px}.nt-plan-root .nt-timeline-dot.bigger[title]{cursor:help}.nt-plan{white-space:nowrap;overflow-x:auto;display:flex}.nt-plan .ug-timeline-dot{left:368px;top:-8px;cursor:help}.months{display:flex}.month{flex:auto;display:inline-block;box-shadow:rgba(0,0,0,.2) 0px 3px 1px -2px,rgba(0,0,0,.14) 0px 2px 2px 0px,rgba(0,0,0,.12) 0px 1px 5px 0px inset;background-color:var(--nt-months-background);color:#fff;text-transform:uppercase;font-family:Roboto,Helvetica,Arial,sans-serif;padding:2px 5px;font-size:12px;border:1px solid #000;width:150px;border-radius:8px}.nt-plan-group-activities{flex:auto;position:relative}.nt-vline{border-left:1px dashed var(--nt-plan-vertical-line-color);height:100%;left:0;position:absolute;margin-left:-0.5px;top:0;-webkit-transition:all .5s linear !important;-moz-transition:all .5s linear !important;-ms-transition:all .5s linear !important;-o-transition:all .5s linear !important;transition:all .5s linear !important;z-index:-2}.nt-plan-activity{display:flex;margin:2px 0;background-color:rgba(187,187,187,.2509803922)}.actions{height:var(--nt-plan-actions-height)}.actions{position:relative}.period{display:inline-block;height:var(--nt-plan-actions-height);width:120px;position:absolute;left:0px;background:#1da1f2;border-radius:5px;transition:all .5s;cursor:help;-webkit-transition:width 1s ease-in-out;-moz-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.period .nt-tooltip{display:none;top:30px;position:relative;padding:1rem;text-align:center;font-size:12px}.period:hover .nt-tooltip{display:inline-block}.period-0{left:340px;visibility:visible;background-color:#456165}.period-1{left:40px;visibility:visible;background-color:green}.period-2{left:120px;visibility:visible;background-color:pink;width:80px}.period-3{left:190px;visibility:visible;background-color:darkred;width:150px}.weeks>span,.days>span{height:25px}.weeks>span{display:inline-block;margin:0;padding:0;font-weight:bold}.weeks>span .week-text{font-size:10px;position:absolute;display:inline-block;padding:3px 4px}.days{z-index:-2;position:relative}.day-text{font-size:10px;position:absolute;display:inline-block;padding:3px 4px}.period span{font-size:12px;vertical-align:top;margin-left:4px;color:#000;background:rgba(255,255,255,.6588235294);border-radius:6px;padding:0 4px}.weeks,.days{height:20px;display:flex;box-sizing:content-box}.months{display:flex}.week,.day{height:20px;position:relative;border:1;flex:auto;border:2px solid #fff;border-radius:4px;background-color:var(--nt-units-background);cursor:help}.years{display:flex}.year{text-align:center;border-right:1px solid var(--nt-plan-vertical-line-color);font-weight:bold}.year:first-child{border-left:1px solid var(--nt-plan-vertical-line-color)}.year:first-child:last-child{width:100%}.quarters{display:flex}.quarter{width:12.5%;text-align:center;border-right:1px solid var(--nt-plan-vertical-line-color);font-weight:bold}.quarter:first-child{border-left:1px solid var(--nt-plan-vertical-line-color)}.nt-plan-group{margin:20px 0;position:relative}.nt-plan-group{display:flex}.nt-plan-group-summary{background:#2751b0;width:150px;white-space:normal;padding:.1rem .5rem;border-radius:5px;color:#fff;z-index:3}.nt-plan-group-summary p{margin:0;padding:0;font-size:.6rem;color:#fff}.nt-plan-group-summary,.month,.period,.week,.day,.nt-tooltip{border:3px solid #fff;box-shadow:0 2px 3px -1px rgba(0,0,0,.2),0 3px 3px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.nt-plan-periods{padding-left:150px}.months{z-index:2;position:relative}.weeks{position:relative;top:-2px;z-index:0}.month,.quarter,.year,.week,.day,.nt-tooltip{font-family:Roboto,Helvetica,Arial,sans-serif;box-sizing:border-box}.nt-cards.nt-grid{display:grid;grid-auto-columns:1fr;gap:.5rem;max-width:100vw;overflow-x:auto;padding:1px}.nt-cards.nt-grid.cols-1{grid-template-columns:repeat(1, 1fr)}.nt-cards.nt-grid.cols-2{grid-template-columns:repeat(2, 1fr)}.nt-cards.nt-grid.cols-3{grid-template-columns:repeat(3, 1fr)}.nt-cards.nt-grid.cols-4{grid-template-columns:repeat(4, 1fr)}.nt-cards.nt-grid.cols-5{grid-template-columns:repeat(5, 1fr)}.nt-cards.nt-grid.cols-6{grid-template-columns:repeat(6, 1fr)}@media only screen and (max-width: 400px){.nt-cards.nt-grid{grid-template-columns:repeat(1, 1fr) !important}}.nt-card{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.nt-card:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.24),0 3px 1px -2px rgba(0,0,0,.3),0 1px 5px 0 rgba(0,0,0,.22)}[data-md-color-scheme=slate] .nt-card{box-shadow:0 2px 2px 0 rgba(4,40,33,.14),0 3px 1px -2px rgba(40,86,94,.47),0 1px 5px 0 rgba(139,252,255,.64)}[data-md-color-scheme=slate] .nt-card:hover{box-shadow:0 2px 2px 0 rgba(0,255,206,.14),0 3px 1px -2px rgba(33,156,177,.47),0 1px 5px 0 rgba(96,251,255,.64)}.nt-card>a{color:var(--md-default-fg-color)}.nt-card>a>div{cursor:pointer}.nt-card{padding:5px;margin-bottom:.5rem}.nt-card-title{font-size:1rem;font-weight:bold;margin:4px 0 8px 0;line-height:22px}.nt-card-content{padding:.4rem .8rem .8rem .8rem}.nt-card-text{font-size:14px;padding:0;margin:0}.nt-card .nt-card-image{text-align:center;border-radius:2px;background-position:center center;background-size:cover;background-repeat:no-repeat;min-height:120px}.nt-card .nt-card-image.tags img{margin-top:12px}.nt-card .nt-card-image img{height:105px;margin-top:5px}.nt-card a:hover,.nt-card a:focus{color:var(--md-accent-fg-color)}.nt-card h2{margin:0}.span-table-wrapper table{border-collapse:collapse;margin-bottom:2rem;border-radius:.1rem}.span-table td,.span-table th{padding:.2rem;background-color:var(--md-default-bg-color);font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto;border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.span-table tr:first-child td{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.span-table td:first-child{border-left:.05rem solid var(--md-typeset-table-color)}.span-table td:last-child{border-right:.05rem solid var(--md-typeset-table-color)}.span-table tr:last-child{border-bottom:.05rem solid var(--md-typeset-table-color)}.span-table [colspan],.span-table [rowspan]{font-weight:bold;border:.05rem solid var(--md-typeset-table-color)}.span-table tr:not(:first-child):hover td:not([colspan]):not([rowspan]),.span-table td[colspan]:hover,.span-table td[rowspan]:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset;transition:background-color 125ms}.nt-contribs{margin-top:2rem;font-size:small;border-top:1px dotted #d3d3d3;padding-top:.5rem}.nt-contribs .nt-contributors{padding-top:.5rem;display:flex;flex-wrap:wrap}.nt-contribs .nt-contributor{background:#d3d3d3;background-size:cover;width:40px;height:40px;border-radius:100%;margin:0 6px 6px 0;cursor:help;opacity:.7}.nt-contribs .nt-contributor:hover{opacity:1}.nt-contribs .nt-initials{text-transform:uppercase;font-size:24px;text-align:center;width:40px;height:40px;display:inline-block;vertical-align:middle;position:relative;top:2px;color:inherit;font-weight:bold}.nt-contribs .nt-group-0{background-color:var(--nt-color-0)}.nt-contribs .nt-group-1{background-color:var(--nt-color-1)}.nt-contribs .nt-group-2{background-color:var(--nt-color-2)}.nt-contribs .nt-group-3{background-color:var(--nt-color-3)}.nt-contribs .nt-group-4{background-color:var(--nt-color-4)}.nt-contribs .nt-group-5{background-color:var(--nt-color-5)}.nt-contribs .nt-group-6{background-color:var(--nt-color-6)}.nt-contribs .nt-group-7{color:#000;background-color:var(--nt-color-7)}.nt-contribs .nt-group-8{color:#000;background-color:var(--nt-color-8)}.nt-contribs .nt-group-9{background-color:var(--nt-color-9)}.nt-contribs .nt-group-10{background-color:var(--nt-color-10)}.nt-contribs .nt-group-11{background-color:var(--nt-color-11)}.nt-contribs .nt-group-12{background-color:var(--nt-color-12)}.nt-contribs .nt-group-13{background-color:var(--nt-color-13)}.nt-contribs .nt-group-14{background-color:var(--nt-color-14)}.nt-contribs .nt-group-15{color:#000;background-color:var(--nt-color-15)}.nt-contribs .nt-group-16{background-color:var(--nt-color-16)}.nt-contribs .nt-group-17{color:#000;background-color:var(--nt-color-17)}.nt-contribs .nt-group-18{background-color:var(--nt-color-18)}.nt-contribs .nt-group-19{background-color:var(--nt-color-19)}.nt-contribs .nt-group-20{color:#000;background-color:var(--nt-color-20)}.nt-contribs .nt-group-21{color:#000;background-color:var(--nt-color-21)}.nt-contribs .nt-group-22{color:#000;background-color:var(--nt-color-22)}.nt-contribs .nt-group-23{color:#000;background-color:var(--nt-color-23)}.nt-contribs .nt-group-24{color:#000;background-color:var(--nt-color-24)}.nt-contribs .nt-group-25{color:#000;background-color:var(--nt-color-25)}.nt-contribs .nt-group-26{color:#000;background-color:var(--nt-color-26)}.nt-contribs .nt-group-27{background-color:var(--nt-color-27)}.nt-contribs .nt-group-28{color:#000;background-color:var(--nt-color-28)}.nt-contribs .nt-group-29{color:#000;background-color:var(--nt-color-29)}.nt-contribs .nt-group-30{background-color:var(--nt-color-30)}.nt-contribs .nt-group-31{background-color:var(--nt-color-31)}.nt-contribs .nt-group-32{color:#000;background-color:var(--nt-color-32)}.nt-contribs .nt-group-33{background-color:var(--nt-color-33)}.nt-contribs .nt-group-34{background-color:var(--nt-color-34)}.nt-contribs .nt-group-35{background-color:var(--nt-color-35)}.nt-contribs .nt-group-36{background-color:var(--nt-color-36)}.nt-contribs .nt-group-37{background-color:var(--nt-color-37)}.nt-contribs .nt-group-38{background-color:var(--nt-color-38)}.nt-contribs .nt-group-39{color:#000;background-color:var(--nt-color-39)}.nt-contribs .nt-group-40{color:#000;background-color:var(--nt-color-40)}.nt-contribs .nt-group-41{color:#000;background-color:var(--nt-color-41)}.nt-contribs .nt-group-42{color:#000;background-color:var(--nt-color-42)}.nt-contribs .nt-group-43{color:#000;background-color:var(--nt-color-43)}.nt-contribs .nt-group-44{color:#000;background-color:var(--nt-color-44)}.nt-contribs .nt-group-45{background-color:var(--nt-color-45)}.nt-contribs .nt-group-46{color:#000;background-color:var(--nt-color-46)}.nt-contribs .nt-group-47{background-color:var(--nt-color-47)}.nt-contribs .nt-group-48{background-color:var(--nt-color-48)}.nt-contribs .nt-group-49{background-color:var(--nt-color-49)} \ No newline at end of file diff --git a/docs/getting-started/first-steps.md b/docs/getting-started/first-steps.md index 403724362..9793cbf4a 100644 --- a/docs/getting-started/first-steps.md +++ b/docs/getting-started/first-steps.md @@ -1,11 +1,11 @@ --- -title: Getting Started +title: First Steps alias: - name: getting-started - text: Getting Started + name: first-steps + text: First Steps --- -# Getting started +# First Steps !!! Warning Make sure you have read [[installation]] before using the library. diff --git a/docs/index.md b/docs/index.md index fb6408b9e..c77b2c980 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,26 +9,39 @@ It runs most of them in parallel either locally or in a cluster and supports distributed caching of results. If you're a first time user of pyDVL, we recommend you to go through the -[[getting-started]] and [[installation]] guides. +[[installation]] and [[first-steps]] guides in the Getting Started section. -::cards:: cols=2 +
-- title: Installation - content: Steps to install and requirements - url: getting-started/installation.md +- :fontawesome-solid-toolbox:{ .lg .middle } __Installation__ + + --- + Steps to install and requirements + + [[installation|:octicons-arrow-right-24: Installation]] + +- :fontawesome-solid-scale-unbalanced:{ .lg .middle } __Data valuation__ + + --- -- title: Data valuation - content: > Basics of data valuation and description of the main algorithms - url: value/ -- title: Influence Function - content: > + [[data-valuation|:octicons-arrow-right-24: Data Valuation]] + +- :fontawesome-solid-scale-unbalanced-flip:{ .lg .middle } __Influence Function__ + + --- + An introduction to the influence function and its computation with pyDVL - url: influence/ -- title: Browse the API - content: Full documentation of the API - url: api/pydvl/ + [[influence-values|:octicons-arrow-right-24: Influence Values]] + +- :fontawesome-regular-file-code:{ .lg .middle } __API Reference__ + + --- + + Full documentation of the API + + [:octicons-arrow-right-24: API Reference](api/pydvl/) -::/cards:: +
diff --git a/docs/influence/influence_function_model.md b/docs/influence/influence_function_model.md index d12d963c9..a126efdc5 100644 --- a/docs/influence/influence_function_model.md +++ b/docs/influence/influence_function_model.md @@ -87,7 +87,7 @@ the Hessian and \(V\) contains the corresponding eigenvectors. See also ```python from pydvl.influence.torch import ArnoldiInfluence -if_model = ArnoldiInfluence +if_model = ArnoldiInfluence( model, loss, hessian_regularization=0.0, @@ -97,4 +97,32 @@ if_model = ArnoldiInfluence ``` These implementations represent the calculation logic on in memory tensors. To scale up to large collection of data, we map these influence function models over these collections. For a detailed discussion see the -documentation page [Scaling Computation](scaling_computation.md). \ No newline at end of file +documentation page [Scaling Computation](scaling_computation.md). + +### Eigenvalue Corrected K-FAC + +K-FAC, short for Kronecker-Factored Approximate Curvature, is a method that approximates the Fisher information matrix [FIM](https://en.wikipedia.org/wiki/Fisher_information) of a model. It is possible to show that for classification models with appropriate loss functions the FIM is equal to the Hessian of the model’s loss over the dataset. In this restricted but nonetheless important context K-FAC offers an efficient way to approximate the Hessian and hence the influence scores. +For more info and details refer to the original paper [@martens2015optimizing]. + +The K-FAC method is implemented in the class [EkfacInfluence](pydvl/influence/torch/influence_function_model.py). The following code snippet shows how to use the K-FAC method to calculate the influence function of a model. Note that, in contrast to the other methods for influence function calculation, K-FAC does not require the loss function as an input. This is because the current implementation is only applicable to classification models with a cross entropy loss function. + +```python +from pydvl.influence.torch import EkfacInfluence +if_model = EkfacInfluence( + model, + hessian_regularization=0.0, +) +``` +Upon initialization, the K-FAC method will parse the model and extract which layers require grad and which do not. Then it will only calculate the influence scores for the layers that require grad. The current implementation of the K-FAC method is only available for linear layers, and therefore if the model contains non-linear layers that require gradient the K-FAC method will raise a NotImplementedLayerRepresentationException. + +A further improvement of the K-FAC method is the Eigenvalue Corrected K-FAC (EKFAC) method [@george2018fast], which allows to further re-fit the eigenvalues of the Hessian, thus providing a more accurate approximation. On top of the K-FAC method, the EKFAC method is implemented by setting `update_diagonal=True` when initialising [EkfacInfluence](pydvl/influence/torch/influence_function_model.py). The following code snippet shows how to use the EKFAC method to calculate the influence function of a model. + +```python +from pydvl.influence.torch import EkfacInfluence +if_model = EkfacInfluence( + model, + update_diagonal=True, + hessian_regularization=0.0, +) +if_model.fit(train_loader) +``` \ No newline at end of file diff --git a/docs/value/applications.md b/docs/value/applications.md new file mode 100644 index 000000000..cf07e8cc5 --- /dev/null +++ b/docs/value/applications.md @@ -0,0 +1,91 @@ +--- +title: Applications of data valuation +--- + +# Applications of data valuation + +Data valuation methods hold promise for improving various aspects +of data engineering and machine learning workflows. When applied judiciously, +these methods can enhance data quality, model performance, and cost-effectiveness. + +However, the results can be inconsistent. Values have a strong dependency +on the training procedure and the performance metric used. For instance, +accuracy is a poor metric for imbalanced sets and this has a stark effect +on data values. Some models exhibit great variance in some regimes +and this again has a detrimental effect on values. + +While still an evolving field with methods requiring careful use, data valuation can +be applied across a wide range of data engineering tasks. For a comprehensive +overview, along with concrete examples, please refer to the [Transferlab blog +post]({{ transferlab.website }}blog/data-valuation-applications/) on this topic. + +## Data Engineering + +While still an emerging field, judicious use of data valuation techniques +has the potential to enhance data quality, model performance, +and the cost-effectiveness of data workflows in many applications. +Some of the promising applications in data engineering include: + +- Removing low-value data points can reduce noise and increase model performance. + However, care is needed to avoid overfitting when iteratively retraining on pruned datasets. +- Pruning redundant samples enables more efficient training of large models. + Value-based metrics can determine which data to discard for optimal efficiency gains. +- Computing value scores for unlabeled data points supports efficient active learning. + High-value points can be prioritized for labeling to maximize gains in model performance. +- Analyzing high- and low-value data provides insights to guide targeted data collection + and improve upstream data processes. Low-value points may reveal data issues to address. +- Data value metrics can also help identify irrelevant or duplicated data + when evaluating offerings from data providers. + +## Model development + +Data valuation techniques can provide insights for model debugging and interpretation. +Some of the useful applications include: + +- Interpretation and debugging: Analyzing the most or least valuable samples + for a class can reveal cases where the model relies on confounding features + instead of true signal. Investigating influential points for misclassified examples + highlights limitations to address. +- Sensitivity/robustness analysis: Prior work shows removing a small fraction + of highly influential data can completely flip model conclusions. + This reveals potential issues with the modeling approach, data collection process, + or intrinsic difficulty of the problem that require further inspection. + Robust models require many points removed before conclusions meaningfully shift. + High sensitivity means conclusions heavily depend on small subsets of data, + indicating deeper problems to resolve. +- Monitoring changes in data value during training provides insights into + model convergence and overfitting. +- Continual learning: in order to avoid forgetting when training on new data, + a subset of previously seen data is presented again. Data valuation helps + in the selection of highly influential samples. + +## Attacks + +Data valuation techniques have applications in detecting data manipulation and contamination: + +- Watermark removal: Points with low value on a correct validation set may be + part of a watermarking mechanism. Removing them can strip a model of its fingerprints. +- Poisoning attacks: Influential points can be shifted to induce large changes + in model estimators. However, the feasibility of such attacks is limited, + and their value for adversarial training is unclear. + +Overall, while data valuation techniques show promise for identifying anomalous +or manipulated data, more research is needed to develop robust methods suited +for security applications. + +## Data markets + +Additionally, one of the motivating applications for the whole field is that of +data markets: a marketplace where data owners can sell their data to interested +parties. In this setting, data valuation can be key component to determine the +price of data. Market pricing depends on the value addition for buyers +(e.g. improved model performance) and costs/privacy concerns for sellers. + +Game-theoretic valuation methods like Shapley values can help assign fair prices, +but have limitations around handling duplicates or adversarial data. +Model-free methods like LAVA [@just_lava_2023] and CRAIG are +particularly well suited for this, as they use the Wasserstein distance between +a vendor's data and the buyer's to determine the value of the former. + +However, this is a complex problem which can face practical banal problems like +the fact that data owners may not wish to disclose their data for valuation. diff --git a/docs/value/index.md b/docs/value/index.md index 2440428d3..ac87a977f 100644 --- a/docs/value/index.md +++ b/docs/value/index.md @@ -83,33 +83,6 @@ among all samples, failing to identify repeated ones as unnecessary, with e.g. a zero value. -## Applications of data valuation - -Many applications are touted for data valuation, but the results can be -inconsistent. Values have a strong dependency on the training procedure and the -performance metric used. For instance, accuracy is a poor metric for imbalanced -sets and this has a stark effect on data values. Some models exhibit great -variance in some regimes and this again has a detrimental effect on values. - -Nevertheless, some of the most promising applications are: - -* Cleaning of corrupted data. -* Pruning unnecessary or irrelevant data. -* Repairing mislabeled data. -* Guiding data acquisition and annotation (active learning). -* Anomaly detection and model debugging and interpretation. - -Additionally, one of the motivating applications for the whole field is that of -data markets: a marketplace where data owners can sell their data to interested -parties. In this setting, data valuation can be key component to determine the -price of data. Algorithm-agnostic methods like LAVA [@just_lava_2023] are -particularly well suited for this, as they use the Wasserstein distance between -a vendor's data and the buyer's to determine the value of the former. - -However, this is a complex problem which can face practical banal problems like -the fact that data owners may not wish to disclose their data for valuation. - - ## Computing data values Using pyDVL to compute data values is a simple process that can be broken down diff --git a/mkdocs.yml b/mkdocs.yml index 408b26b75..7ae01a1cb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -6,6 +6,40 @@ repo_url: "https://github.com/aai-institute/pyDVL" copyright: "Copyright © AppliedAI Institute gGmbH" remote_branch: gh-pages +nav: + - Home: index.md + - Getting Started: + - Installation: getting-started/installation.md + - First steps: getting-started/first-steps.md + - Data Valuation: + - Introduction: value/index.md + - Applications: value/applications.md + - Notation: value/notation.md + - Shapley values: value/shapley.md + - Semi-values: value/semi-values.md + - The Core: value/the-core.md + - Classwise Shapley: value/classwise-shapley.md + - The Influence Function: + - Introduction: influence/index.md + - Influence Function Model: influence/influence_function_model.md + - Scaling Computation: influence/scaling_computation.md + - Examples: + - Data Valuation: + - Shapley values: examples/shapley_basic_spotify.ipynb + - KNN Shapley: examples/shapley_knn_flowers.ipynb + - Data utility learning: examples/shapley_utility_learning.ipynb + - Least Core: examples/least_core_basic.ipynb + - Data OOB: examples/data_oob.ipynb + - Influence Function: + - For CNNs: examples/influence_imagenet.ipynb + - For mislabeled data: examples/influence_synthetic.ipynb + - For outlier detection: examples/influence_wine.ipynb + - For sentiment analysis: examples/influence_sentiment_analysis.ipynb + - Code: + - API Reference: api/pydvl/ + - Changelog: CHANGELOG.md + - Development Guidelines: CONTRIBUTING.md + watch: - src/pydvl - notebooks @@ -13,6 +47,7 @@ watch: hooks: - build_scripts/copy_notebooks.py - build_scripts/copy_changelog.py + - build_scripts/copy_contributing_guide.py - build_scripts/modify_binder_link.py plugins: @@ -106,18 +141,26 @@ theme: - content.code.annotate - content.code.copy - navigation.footer -# - content.tooltips # insiders only + - content.tooltips # - navigation.indexes - navigation.instant - navigation.path -# - navigation.sections + - navigation.sections # - navigation.tabs - navigation.top - navigation.tracking - search.suggest - search.highlight - toc.follow - palette: # Palette toggle for light mode + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + scheme: default + primary: teal + toggle: + icon: material/brightness-auto + name: Switch to light mode + # Palette toggle for light mode - media: "(prefers-color-scheme: light)" scheme: default primary: teal @@ -130,11 +173,11 @@ theme: primary: teal toggle: icon: material/brightness-4 - name: Switch to light mode + name: Switch to system preference extra_css: - css/extra.css - - css/neoteroi.css + - css/grid-cards.css extra_javascript: - javascripts/mathjax.js @@ -143,8 +186,7 @@ extra_javascript: extra: transferlab: - website: https://transferlab.appliedai.de - data_valuation_review: https://transferlab.appliedai.de/reviews/data-valuation + website: https://transferlab.ai/ copyright_link: https://appliedai-institute.de version: provider: mike @@ -166,7 +208,6 @@ markdown_extensions: - footnotes - markdown_captions - md_in_html - - neoteroi.cards - codehilite - toc: permalink: True @@ -174,8 +215,8 @@ markdown_extensions: - pymdownx.tabbed: alternate_style: true - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.highlight: anchor_linenums: true pygments_lang_class: true @@ -188,33 +229,3 @@ markdown_extensions: - docs_includes/abbreviations.md - pymdownx.superfences - pymdownx.details - -nav: - - Home: index.md - - Getting Started: - - Installation: getting-started/installation.md - - First steps: getting-started/first-steps.md - - Data Valuation: - - Introduction: value/index.md - - Notation: value/notation.md - - Shapley values: value/shapley.md - - Semi-values: value/semi-values.md - - The core: value/the-core.md - - Classwise Shapley: value/classwise-shapley.md - - Examples: - - Shapley values: examples/shapley_basic_spotify.ipynb - - KNN Shapley: examples/shapley_knn_flowers.ipynb - - Data utility learning: examples/shapley_utility_learning.ipynb - - Least Core: examples/least_core_basic.ipynb - - Data OOB: examples/data_oob.ipynb - - The Influence Function: - - Introduction: influence/index.md - - Influence Function Model: influence/influence_function_model.md - - Scaling Computation: influence/scaling_computation.md - - Examples: - - For CNNs: examples/influence_imagenet.ipynb - - For mislabeled data: examples/influence_synthetic.ipynb - - For outlier detection: examples/influence_wine.ipynb - - Code: - - Changelog: CHANGELOG.md - - API: api/pydvl/ diff --git a/notebooks/influence_sentiment_analysis.ipynb b/notebooks/influence_sentiment_analysis.ipynb new file mode 100644 index 000000000..e11ff92b2 --- /dev/null +++ b/notebooks/influence_sentiment_analysis.ipynb @@ -0,0 +1,1284 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Influence functions for Large Language Models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebooks showcases the use of influence functions for large language models. In particular, it focuses on sentiment analysis using the [IMDB dataset](https://ai.stanford.edu/~amaas/data/sentiment/) and a fine-tuned [BERT](https://arxiv.org/abs/1810.04805) model.\n", + "\n", + "Not all the methods for influence function calculation can scale to large models and datasets. In this notebook we will use the [Kronecker-Factored Approximate Curvature](https://arxiv.org/abs/1503.05671) method, which is the only one that can scale to current state-of-the-art language models.\n", + "\n", + "The notebook is structured as follows:\n", + "\n", + "- [Setup](#Setup) imports the required libraries and downloads the dataset and the model.\n", + "- [Sentiment analysis](#Sentiment-analysis) loads the model and the dataset and goes through a few examples of sentiment analysis.\n", + "- [Model and data preparation](#Model-and-data-preparation) prepares the model and the dataset for influence function calculation. In particular, it assigns all the linear layers to require gradients and wraps the model so that only logits are returned (and not the loss or attention masks).\n", + "- [Influence function computation](#Influence-function-computation): shows how to calculate the influence function for a few test and train examples.\n", + "- [Analysis of influence values](#Analysis-of-influence-values): analyses the influence values, trying to extract general information about the model and how it is affected by corruption in the training data.\n", + "- [Influence functions by layer](#Influence-functions-by-layer): since ekfac is based on a block diagonal approximation of the Fisher information matrix, we can compute the influence function separately for each layer of the neural network. This section shows how to do that and how to analyse the results.\n", + "\n", + "Finally, the [Appendix](#Appendix) shows how to select the Hessian regularization parameter to obtain the best influence function approximation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "If you are reading this in the documentation, some boilerplate has been omitted for convenience.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "%load_ext autoreload" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start by importing the required libraries. If not already installed, you can install them with `pip install -r requirements-notebooks.txt`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "hide-output" + ] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/fabio/miniconda3/envs/pydvl_env/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from copy import deepcopy\n", + "from typing import Sequence\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import torch.nn.functional as F\n", + "from datasets import load_dataset\n", + "from IPython.display import HTML, display\n", + "from sklearn.metrics import f1_score\n", + "from transformers import AutoModelForSequenceClassification, AutoTokenizer\n", + "\n", + "from pydvl.influence.torch import EkfacInfluence\n", + "from support.torch import ImdbDataset, ModelLogitsWrapper" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "plt.rcParams[\"figure.figsize\"] = (16, 8)\n", + "plt.rcParams[\"font.size\"] = 12\n", + "plt.rcParams[\"xtick.labelsize\"] = 12\n", + "plt.rcParams[\"ytick.labelsize\"] = 10\n", + "plt.rcParams[\"axes.facecolor\"] = (1, 1, 1, 0)\n", + "plt.rcParams[\"figure.facecolor\"] = (1, 1, 1, 0)\n", + "DEVICE = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "tags": [ + "hide" + ] + }, + "outputs": [], + "source": [ + "seed = 42\n", + "torch.manual_seed(seed)\n", + "torch.cuda.manual_seed(seed)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sentiment Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sentiment analysis is the task of classifying a sentence as having a positive or negative sentiment. For example, the sentence \"I love this movie\" has a positive sentiment, while \"I hate this movie\" has a negative sentiment. In this notebook we will use the IMDB dataset, which contains 50,000 movie reviews with corresponding labels. The dataset is split into 25,000 reviews for training and 25,000 reviews for testing. The dataset is balanced, meaning that there are the same number of positive and negative reviews in the training and test set." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [ + "hide-output" + ] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using the latest cached version of the module from /Users/fabio/.cache/huggingface/modules/datasets_modules/datasets/imdb/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0 (last modified on Thu Dec 14 21:47:25 2023) since it couldn't be found locally at imdb., or remotely on the Hugging Face Hub.\n", + "Found cached dataset imdb (/Users/fabio/.cache/huggingface/datasets/imdb/plain_text/1.0.0/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0)\n", + "100%|██████████| 3/3 [00:00<00:00, 111.43it/s]\n" + ] + } + ], + "source": [ + "imdb = load_dataset(\"imdb\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's print an example of review and its label" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here is a sample review with label 0: \n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "Without wishing to be a killjoy, Brad Sykes is responsible for at least two of the most dull and clichéd films i've ever seen - this being one of them, and Camp Blood being another. " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "I bought this for £1, but remember, you can't put a price on 71 minutes of your life. You'd do well to avoid this turkey, even at a bargain basement price." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sample_review = imdb[\"train\"].select([24])\n", + "\n", + "print(f\"Here is a sample review with label {sample_review['label'][0]}: \\n\")\n", + "\n", + "display(HTML(sample_review[\"text\"][0].split(\"
\")[0]))\n", + "display(HTML(sample_review[\"text\"][0].split(\"
\")[-1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The review is negative, and so label 0 is associated to negative sentiment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model is a BERT model fine-tuned on the IMDB dataset. BERT is a large language model that has been pre-trained on a large corpus of text. The model was fine-tuned on the IMDB dataset by AssemblyAI and is available on the HuggingFace model hub. We also load its tokenizer, which is used to convert sentences into numeric tokens." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(\"assemblyai/distilbert-base-uncased-sst2\")\n", + "model = AutoModelForSequenceClassification.from_pretrained(\n", + " \"assemblyai/distilbert-base-uncased-sst2\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even if the model is trained on movie reviews, it can be used to classify any sentence as positive or negative. Let's try it on a simple sentence created by us." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "example_phrase = (\n", + " \"Pydvl is the best data valuation library, and it is fully open-source!\"\n", + ")\n", + "\n", + "tokenized_example = tokenizer(\n", + " [example_phrase],\n", + " return_tensors=\"pt\",\n", + " truncation=True,\n", + ")\n", + "\n", + "model_output = model(\n", + " input_ids=tokenized_example.input_ids,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model output is a `SequenceClassificationOutput` object, which contains the logits and other information." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Output:\n", + " SequenceClassifierOutput(loss=None, logits=tensor([[-2.6237, 2.8350]], grad_fn=), hidden_states=None, attentions=None)\n" + ] + } + ], + "source": [ + "print(\"Model Output:\\n\", model_output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For calculating probabilities and for the influence functions we only need the logits. Then the softmax function converts the logits into probabilities." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "model_predictions = F.softmax(model_output.logits, dim=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model is quite confident that the sentence has a positive sentiment, which is correct." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Positive probability: 99.6%\n", + "Negative probability: 0.4%\n" + ] + } + ], + "source": [ + "print(\n", + " \"Positive probability: \" + str(round(model_predictions[0][1].item(), 3) * 100) + \"%\"\n", + ")\n", + "print(\n", + " \"Negative probability: \" + str(round(model_predictions[0][0].item(), 3) * 100) + \"%\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's examine the model's f1 score on a small subset of the test set." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "tags": [ + "hide-output" + ] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading cached shuffled indices for dataset at /Users/fabio/.cache/huggingface/datasets/imdb/plain_text/1.0.0/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0/cache-c1eaa46e94dfbfd3.arrow\n", + "Loading cached processed dataset at /Users/fabio/.cache/huggingface/datasets/imdb/plain_text/1.0.0/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0/cache-5dd4cdcbaa0bcc93.arrow\n" + ] + } + ], + "source": [ + "sample_test_set = imdb[\"test\"].shuffle(seed=seed).select(range(50))\n", + "sample_test_set = sample_test_set.map(\n", + " lambda example: tokenizer(example[\"text\"], truncation=True, padding=\"max_length\"),\n", + " batched=True,\n", + ")\n", + "sample_test_set.set_format(\"torch\", columns=[\"input_ids\", \"attention_mask\", \"label\"])\n", + "model.eval()\n", + "with torch.no_grad():\n", + " logits = model(\n", + " input_ids=sample_test_set[\"input_ids\"],\n", + " attention_mask=sample_test_set[\"attention_mask\"],\n", + " ).logits\n", + " predictions = torch.argmax(logits, dim=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F1 Score: 0.955\n" + ] + } + ], + "source": [ + "f1_score_value = f1_score(sample_test_set[\"label\"], predictions)\n", + "print(f\"F1 Score: {round(f1_score_value, 3)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model and Data Preparation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will define two helper function and classes that will be used in the rest of the notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def print_sentiment_preds(\n", + " model: ModelLogitsWrapper, model_input: torch.Tensor, true_label: int\n", + "):\n", + " \"\"\"\n", + " Prints the sentiment predictions in a human-readable format given a model and an\n", + " input. It also prints the true label.\n", + " \"\"\"\n", + " model_predictions = F.softmax(model(model_input.unsqueeze(0)), dim=1)\n", + " print(\n", + " \"Positive probability: \"\n", + " + str(round(model_predictions[0][1].item(), 3) * 100)\n", + " + \"%\"\n", + " )\n", + " print(\n", + " \"Negative probability: \"\n", + " + str(round(model_predictions[0][0].item(), 3) * 100)\n", + " + \"%\"\n", + " )\n", + "\n", + " true_label = \"Positive\" if true_label == 1 else \"Negative\"\n", + " print(f\"True label: {true_label} \\n\")\n", + "\n", + "\n", + "def strip_layer_names(param_names: Sequence[str]):\n", + " \"\"\"\n", + " Helper function that strips the parameter names of the model and the transformer,\n", + " so that they can be printed and compared more easily.\n", + " \"\"\"\n", + " stripped_param_names = []\n", + " for name in param_names:\n", + " name = name.replace(\"model.\", \"\")\n", + " if name.startswith(\"distilbert.transformer.\"):\n", + " name = name.replace(\"distilbert.transformer.\", \"\")\n", + " stripped_param_names.append(name)\n", + " return stripped_param_names" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Importantly, we will need to assign all the linear layers to require gradients, so that we can compute the influence function with respect to them. Keep in mind that the current implementation of Ekfac only supports linear layers, so if any other type of layer in the model requires gradients the initialisation of the influence function class will fail." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "for param in model.named_parameters():\n", + " param[1].requires_grad = False\n", + "\n", + "for m_name, module in model.named_modules():\n", + " if len(list(module.children())) == 0 and len(list(module.parameters())) > 0:\n", + " if isinstance(module, torch.nn.Linear):\n", + " for p_name, param in module.named_parameters():\n", + " if (\n", + " \"ffn\" in m_name\n", + " or \"pre_classifier\" in m_name\n", + " or \"classifier\" in m_name\n", + " ):\n", + " param.requires_grad = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Albeit restrictive, linear layers constitute a large fraction of the parameters of most large language models, and so our analysis still holds a lot of information about the full neural network." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total parameters: 66.96 millions\n", + "Parameters requiring gradients: 28.93 millions\n", + "Ratio of Linear over other layer types: 43.20%\n" + ] + } + ], + "source": [ + "total_params = sum(p.numel() for p in model.parameters()) / 1e6\n", + "params_requiring_grad = (\n", + " sum(p.numel() for p in model.parameters() if p.requires_grad) / 1e6\n", + ")\n", + "\n", + "print(\"Total parameters: {:.2f} millions\".format(total_params))\n", + "print(\"Parameters requiring gradients: {:.2f} millions\".format(params_requiring_grad))\n", + "print(\n", + " \"Ratio of Linear over other layer types: {:.2f}%\".format(\n", + " (params_requiring_grad / total_params) * 100\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Influence function computation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to compute the influence function for a few testing and training examples. Let's start by selecting a subset of the full training and testing dataset and wrapping them in a `DataLoader` object, so that we can easily do batching." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "tags": [ + "hide-output" + ] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading cached shuffled indices for dataset at /Users/fabio/.cache/huggingface/datasets/imdb/plain_text/1.0.0/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0/cache-9c48ce5d173413c7.arrow\n", + "Loading cached shuffled indices for dataset at /Users/fabio/.cache/huggingface/datasets/imdb/plain_text/1.0.0/d613c88cf8fa3bab83b4ded3713f1f74830d1100e171db75bbddb80b3345c9c0/cache-c1eaa46e94dfbfd3.arrow\n", + " 0%| | 0/1 [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(ekfac_train_influences.numpy().astype(int), vmin=-1000, vmax=1000)\n", + "plt.colorbar(label=\"Influence value \")\n", + "plt.title(\"Influence of training examples on test examples\")\n", + "plt.xlabel(\"Training examples idx\")\n", + "plt.ylabel(\"Test examples idx\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most of the test and training examples have similar influence, close to zero. However, there is one test and one training samples that stand out. In particular, their cross influence is very large and negative. Let's examine them more closely." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training example with idx 3: \n", + "\n", + "Positive probability: 18.099999999999998%\n", + "Negative probability: 81.89999999999999%\n", + "True label: Positive \n", + "\n", + "Sentence:\n" + ] + }, + { + "data": { + "text/html": [ + "In the process of trying to establish the audiences' empathy with Jake Roedel (Tobey Maguire) the filmmakers slander the North and the Jayhawkers. Missouri never withdrew from the Union and the Union Army was not an invading force. The Southerners fought for State's Rights: the right to own slaves, elect crooked legislatures and judges, and employ a political spoils system. There's nothing noble in that. The Missourians could have easily traveled east and joined the Confederate Army.

It seems to me that the story has nothing to do with ambiguity. When Jake leaves the Bushwhackers, it's not because he saw error in his way, he certainly doesn't give himself over to the virtue of the cause of abolition." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_sentence_idx = 3\n", + "\n", + "print(f\"Training example with idx {train_sentence_idx}: \\n\")\n", + "\n", + "print_sentiment_preds(\n", + " wrapped_model,\n", + " train_input[train_sentence_idx],\n", + " train_labels[train_sentence_idx].item(),\n", + ")\n", + "\n", + "print(\"Sentence:\")\n", + "display(HTML(train_text[train_sentence_idx]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that, despite being positive, this review is quite hard to classify. Its language is overall negative, mostly associated to the facts narrated rather than the movie itself. Notice how several terms are related to war and invasion." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test example with idx 4: \n", + "\n", + "Positive probability: 39.6%\n", + "Negative probability: 60.4%\n", + "True label: Negative \n", + "\n", + "Sentence:\n" + ] + }, + { + "data": { + "text/html": [ + "\"An astronaut (Michael Emmet) dies while returning from a mission and his body is recovered by the military. The base where the dead astronaut is taken to becomes the scene of a bizarre invasion plan from outer space. Alien embryos inside the dead astronaut resurrect the corpse and begin a terrifying assault on the military staff in the hopes of conquering the world,\" according to the DVD sleeve's synopsis.

A Roger Corman \"American International\" production. The man who fell to Earth impregnated, Mr. Emmet (as John Corcoran), does all right. Angela Greene is his pretty conflicted fiancée. And, Ed Nelson (as Dave Randall) is featured as prominently. With a bigger budget, better opening, and a re-write for crisper characterizations, this could have been something approaching classic 1950s science fiction.

*** Night of the Blood Beast (1958) Bernard L. Kowalski, Roger Corman ~ Michael Emmet, Angela Greene, Ed Nelson" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_sentence_idx = 4\n", + "\n", + "print(f\"Test example with idx {test_sentence_idx}: \\n\")\n", + "\n", + "print_sentiment_preds(\n", + " wrapped_model, test_input[test_sentence_idx], test_labels[test_sentence_idx].item()\n", + ")\n", + "\n", + "print(\"Sentence:\")\n", + "display(HTML(test_text[test_sentence_idx]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This review is also quite hard to classify. This time it has a negative sentiment towards the movie, but it also contains several words with positive connotation. The parallel with the previous review is quite interesting since both talk about an invasion. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As it is often the case when analysing influence functions, it is hard to understand why these examples have such a large influence. We have seen some interesting patterns, mostly related to similarities in the language and words used, but it is hard to say with certainty if these are the reasons for such a large influence.\n", + "\n", + "A [recent paper](https://arxiv.org/abs/2308.03296) has explored this topic in high detail, even for much larger language models than BERT (up to ~50 billion parameters!). Among the most interesting findings is that smaller models tend to rely a lot on word-to-word correspondencies, while larger models are more capable of extracting higher level concepts, drawing connections between words across multiple phrases.\n", + "\n", + "For more info, you can visit our [blog on influence functions for large language models](https://transferlab.ai/pills/2023/llm-influences-with-ekfac/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Influence of corrupted training examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this sections we want to get an idea of how influence functions change when training examples are corrupted. In the next cell we will flip the label of all the training examples and compute the influences on the same test batch as before." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "modified_train_labels = deepcopy(train_labels)\n", + "modified_train_labels = 1 - train_labels\n", + "\n", + "corrupted_ekfac_train_influences = ekfac_influence_model.influences(\n", + " test_input,\n", + " test_labels,\n", + " train_input,\n", + " modified_train_labels,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(corrupted_ekfac_train_influences.numpy().astype(int), vmin=-1000, vmax=1000)\n", + "plt.colorbar(label=\"Influence value \")\n", + "plt.title(\"Influence of corrupted training examples\")\n", + "plt.xlabel(\"Training examples idx\")\n", + "plt.ylabel(\"Test examples idx\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Overall, when corrupted the influences tend to become negative, as expected. Nevertheless, there are cases where values go from slightly negative to positive, mostly isolated to the second and last test samples. Single values can be quite noisy, so it is difficult to generalise this result, but it would be interesting to see how common these cases are in the full test dataset." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Influence functions by layer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since ekfac is based on a block diagonal approximation of the Fisher information matrix, we can compute the influence functions separately for each layer of the neural network. In this section we show how to do that and we briefly analyse the results." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "influences_by_layer = ekfac_influence_model.influences_by_layer(\n", + " test_input,\n", + " test_labels,\n", + " train_input,\n", + " train_labels,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The method `influences_by_layer` returns a dictionary containing the influence function values for each layer of the neural network as a tensor. To recover the full influence values as returned by the `influences` (as done in the previous section), we need to sum each layer's values." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "influences = torch.zeros_like(ekfac_train_influences)\n", + "for layer_id, value in influences_by_layer.items():\n", + " influences += value.detach()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And if we plot the result as a heatmap we can see that the results are the same as in [Negative influence training examples](#Negative-influence-training-examples)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(influences.numpy().astype(int), vmin=-1000, vmax=1000)\n", + "plt.colorbar(label=\"Influence value \")\n", + "plt.title(\"Influence from layers\")\n", + "plt.xlabel(\"Training examples idx\")\n", + "plt.ylabel(\"Test examples idx\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's analyse how the influence values change across different layers for given test and train examples. " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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mF6Hz1uV7wcq+f4Lm68fyOHfbsjfw/OVOu6u5DyL0MD/DyD/Yeh/IK/mfkV5Tc2Qv0/3r+tnmjfeeOONN94quwlJkkBERERE1FyEEB8CeBRAuFT7XoBELZIyPHkPgMWSJC1StRgiIqJGxjkWiYiIiIiIiIiIqM4YLBIREREREREREVGdMVgkIiIiIiIiIiKiOuMci0RERERERERERFRn7LFIREREREREREREdcZgkYiIiIiIiIiIiOrMWe0CGpMQQgAIApCvdi1EREREREREREQtlBeAC1INcyi2qmARcqj4m9pFEBERERERERERtXAhAM5X94DWFixaeyqGgL0WiYiIiIiIiIiI6soLcse9GrO11hYsWuVLkpSndhFEREREREREREQtiTzTYO1w8RYiIiIiIiIiIiKqMwaLREREREREREREVGcMFomIiIiIiIiIiKjOGCwSERERERERERFRnbXWxVuIiIiIiIiIiKp15MgRJwB+ADqAna+odbMAuAogJz4+3tJYJxWSJDXWuVQnhPAGcB2AD1eFJiIiIiIiIqLKKIHiGCcnpzlCiEAhBDteUasnSVK5JEmXLBbLcgD/V1XAWJd8jV84RERERERERNTWvOji4jLD19dX+Pj45Ds7OxcLIdSuiajJSJKE8vJy5+vXr4fn5ub+raysrCeAVxp6XvZYJCIiIiIiIqI248iRI94ajWZ/586dPTp16nRV7XqImtvly5c7XLx4sbCioqJ/fHz8HflZXfI1zh9ARERERERERG1JoBDC09PTs1DtQojU4OnpWSiE8AQQ2NBzMVgkIiIiIiIiorbECQA49JnaKpvPfoNzQQaLREREREREREREVGcMFomIiIiIiIiIiKjOGCwSEREREREREVGtjR8/XhccHByrdh0tyXPPPRckhIhXu47GxmCRiIiIiIiIiKgVEELE1+b2+eefe6ldKzXcjRs3xFNPPRUcEBDQy83NLa5Xr17RW7du9W7OGpyb82JERERERERERNQ0Vq1adda2vW7dug779+/3tt/eu3fvGw25zvr16zMsFktDTkGN4I9//KNu+/btfo899lhWZGRk8bp16/wfeeSRCJPJlD58+PCC5qiBwSIRERERERERUSswc+bMa7btgwcPeu7fv/+O7fby8/OdvLy8ap0Uurq6SvWtkRrHnj172n3++eftX3rppd+W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dHR08dSpUyO2bNniPXny5OtVHffyyy93yszMdD106NCJ2NjYEmuZs2bNKktJSQl88cUXL0VERJRFR0eXLl68ODM5ObnLO++80z4qKqokJSUlMDExMWvEiBEF1vM98sgjuYmJiTm21xg7dmzukCFDolNTU31nzZp129Bwf3//sr17955ycnICgCt9+/Z1S0lJCZw8efKVdevWnQOAOXPmXAkJCemVmprqbx8sZmZmup44ceJ4eHh4GQDo9frrCQkJdy1evDhwzZo1lQay6enp2jfeeCN47ty5541G4yXr9okTJ+bcf//9PZYvX97Rdntt/P3vf2+flZXl8sILL5yvy3EN4TBJPBERERHhfgDtAGShaeZA/A5AOYBQncEU1gTnJyIiohZAq9VKzzzzzFX77bahYk5OjtPFixedH3jggYLi4mKno0eP1ji8dtSoUTnWUBEAhg0bVgAAZ86cqXal4k8//dSvX79+Bf7+/hUXL150tt6GDRuWV1FRgS+++OLmKtbPP/989sCBA/MMBkNYUlJSeEhISMmKFStuC+9sn0dJSYm4dOmSpkePHiVeXl4VP/zwg4f99RMTE7OVUBEAEBcXVyhJEp588smbwauzszNiY2MLMzMztfbHDxkyJNcaKgLA4MGDi3r16lX45Zdf+lT1nDds2OBrsVgwderUHNvnHBISUt6lS5eSr7/+uk4rd//4449u8+bNC+vTp0+hffDZlNhjkYiIiMhxWIdB7zYb9Y3eQ8Fs1BfqDKYfANwDudfi+sa+BhERUUvVzqWd5cDkAz+qXYdVO5d2TbbsckBAQKn9/HwAcPjwYbcXXngh+ODBg14FBQUa2325ubka+8fbCwsLK7VtW0PGnJycao89d+6ca3p6untQUFDvyvZnZWXdll+lpqaao6OjYzMyMly/+OKLk7ZBIgAUFBSIBQsWdN64caN/VlaWiyTd2p2Xl3dHLTqd7ra6fXx8KgAgPDz8tu3e3t4VeXl5d2RpERERJfbbunbtWrxt27b2lT5hAKdOnXKTJAmxsbExle13dnau9QI5586dcx49enSEp6dnxdatW884Ozdf3MdgkYiIiMhxNOX8ilb7wGCRiIjoDk7CCU019NjRVBYqZmdna4YOHRrl4eFhmTt37oWIiIgSd3d3y+HDh9u98sorIRUVFaKm82o0mkrDMEmSqj3WYrGI/v37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6N+/f15ycnKlPfR69ux5W3C3Y8cOr9LSUgEAR48edR8yZEih7f7HHnssbPPmzf5JSUmX+/fvX+jr61shhJASExO72i6+YlVViOfsfGdsZhtSNoTFYoEQAh999NGpyl636lbp/vnnn103btzYccmSJZkZGRk3F3opKSkRZWVlIi0tTevr61vRqVOnaudobAwMFomIiIiaic5gCgDQR2nuVrGUytxcGVpnMAlH6U1JRETUXISTE5pq6HFLsH37dq/c3Fzn9evXp9nOV1jTMObGEBoaWlJUVKQZO3Zsfk2PzcjIcDEYDGEDBgzI02q10qJFi0JHjx6d171795u9C7dt2+b38MMPX129evXNYchFRUUiPz+/SXKw06dP3/Ea/frrr25BQUF39GS06tatW4kkSYiMjCzp1atXlY+rTEZGhtZisWDBggWhCxYsCLXfHx0dHZuYmJj1/vvvN/lK0Q4zKSkRERFRGzBEuT9mNuovq1rJnX4AUAygI4BIlWshIiKiZmbtNWfbo6+4uFisWbMmoKmvPWbMmGtHjx71+Pjjj73t92VnZ2vKym6tKzd9+vQuFosFa9euNX/wwQcZGo1Gmj59us62bo1Gc0fPwqVLlwZUVDRNB77du3f7nj179mbPwT179rT76aefPBISEvKqOmbSpEm5Go0GCxYsCLLvRWmxWHDp0qUqh4/Hx8ffSE1NPWN/i4iIKO7cuXNpamrqmRkzZmRXdXxjYo9FIiIioubjqMOgYTbqS3QG03cAHoS8anW6yiURERFRM0pISCjw9vaueOKJJ8Iff/zxLCGEtGnTpg6NNfS3OosWLbq8Y8cO34kTJ0ZMmDDhalxcXFFhYaHT8ePH3bdv3+535syZnzt37ly+YsWKDnv37vVZuXKluVu3bmUAYDQaz82cOTN82bJlHQ0GwxXlueR+8sknHZKSkip69Ohx4+DBg5779u3z9vX1bZJFTkJDQ0sGDhwYnZiYmFVSUuK0evXqTr6+vuULFy6scvGVnj17lsydO/f80qVLg/v16+eq1+tzvLy8LGfPntVu377db9q0aVeWLFlS6R+iO3fuXP7nP/8513773/72t04AnCvb11QYLBIRERE1A53BJODAwaJiH+RgcSCA91SuhYiIiJpRYGBgxebNm08lJyeHvvbaa0FeXl4V48ePvzp06ND88ePHN+loBi8vL8v+/fvT5s+f3/mzzz7z27JlSwcPD4+K8PDwkuTk5Avt27evOHPmjMuCBQtCBw8efN12Reunnnrq2tatW/2WLFkSMnbs2OvR0dGl7777bqZGo8HWrVvbb9q0ySkuLq5g586daSNHjuzeFPVPmjTpqpOTE1JSUgKuXbvmEhsbW7hq1apzXbp0KavuuFdfffVSVFRU8cqVKzu98cYbQQAQGBhY+uCDD+ZNmDAhtylqbWyiOZLn5iKE8AZwHYCPJElVdjclIiIiam46g+kuACcAlADwMxv1N1Qu6Q46g2kEgG0ATpuNeg6HJiKiVunIkSPRzs7OOyIjIwvatWtXrHY91HKlpaVpo6OjY1966aXfqupd6IiKiorcTp065VleXv77+Pj4k/b765KvcY5FIiIiouZh7a24zxFDRcV+ABKACJ3BFKh2MURERETk2BgsEhERETUPRx8GDbNRfx3AT0pzgJq1EBEREZHjY7BIRERE1MR0BpMWwCCl6bDBomKfcj9Q1SqIiIiIyOFx8RYiIiKipncfAE8A2QCOqltKjfYBmAUGi0RERETVioqKKpUk6YjadaiJPRaJiIiImp51GPRus1FvUbWSmll7LPbVGUyeqlZCRERERA6NwSIRERFR03P4+RWtzEb9bwAyAGgA3KtyOURERETkwBgsEhERETUhncHkB+BupenwwaKC8ywSERERUY0YLBIRERE1rcGQf+ZKMxv1mWoXU0sMFomIiIioRgwWiYiIiJpWixkGbcMaLN6vM5i42B8RERERVYrBIhEREVHTaonB4gkAuQA8APRWtxQiIiIiclQMFomIiIiaiM5g6gqgG4AKAHvVrab2lJWrv1WaHA5NRERERJVisEhERETUdKy9FQ+Yjfo8VSupO86zSERERETVcrhgUQgRLIT4pxDiqhDihhDiZyFEP7XrIiIiIqqHljgM2upmsKgzmISqlRAREZFDGT9+vC44ODhW7Tpakueeey5ICBGvdh2NzaEm4xZC+EEedrMHwAgAVwBEAshRsy4iIiKiutIZTBoACUqzJQaLhwGUAggE0BXAGXXLISIioprUNrj67LPP0keNGpXf1PVQ0/n888+9/vCHP3SvbN/u3btP/u53vytsjjocKlgEMA9ApiRJiTbbzqpVDBEREVEDxAPwA3AdwPcq11JnZqO+WGcwfQ9gAOTh0AwWiYiIHNyq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18sxPz/facCAAVFZWVkuU6dOzQ4LCys5cOCA59KlS4MvXrzo8v7772c6OTlh7dq15vj4+J6JiYlddu3adQYA5syZE3T69Gl3k8mU5u3tbQGAb7/91uPw4cOe48aNuxYSElJqNptdU1NTOyYkJESdPHnyF/vembNnzw7r2LFj2bx58y4cOnTIY8OGDf4+Pj7l3333nWdwcHDp/Pnzz+/cudMnJSWlU0xMzI2nn376qu3xGzdu7FBYWKhJSkrKKi4udlqzZk2n4cOHRx07duyX0NDQ21NZG/PmzQt8/fXXg0eOHJkzbdq07CtXrji/9957AQ899FD0sWPHTvj7+1eZFP773//28vT0rDh37pzLww8/HJGRkeHq7u5uGTdu3NXVq1dntmvXrll6lTJYJCIiIqqfwQA0AE6ZjfoMtYtpTmajvlxnMB0AMATycGgGi0RE1OKV3rjh9FbiH/uqXYfV0x/860fXdu2aZCLD7Oxsl2XLlmUkJydn227funXrr56enjcDqblz516ZMmVKWGpqasc333zzvLu7e7Vh1cWLF7Xp6enHO3bsWAEA0dHRxVOnTo3YsmWL9+TJk69XddzLL7/cKTMz0/XQoUMnYmNjS6xlzpo1qywlJSXwxRdfvBQREVEWHR1dunjx4szk5OQu77zzTvuoqKiSlJSUwMTExKwRI0YUWM/3yCOP5CYmJubYXmPs2LG5Q4YMiU5NTfWdNWvWbUPD/f39y/bu3XvKyckJAK707dvXLSUlJXDy5MlX1q1bdw4A5syZcyUkJKRXamqqv32wmJmZ6XrixInj4eHhZQCg1+uvJyQk3LV48eLANWvWVBrIpqena994443guXPnnjcajZes2ydOnJhz//3391i+fHlH2+32zp4961ZeXi4mT54cMXHixOzBgwfn79mzx2vt2rUBeXl5ms8+++xsVcc2JodJ4omIiIhamLY6DNrKOhya8ywSERG1MFqtVnrmmWeu2m+3DRVzcnKcLl686PzAAw8UFBcXOx09erTGob2jRo3KsYaKADBs2LACADhz5oxrdcd9+umnfv369Svw9/evuHjxorP1NmzYsLyKigp88cUXN1exfv7557MHDhyYZzAYwpKSksJDQkJKVqxYcVt4Z/s8SkpKxKVLlzQ9evQo8fLyqvjhhx887K+fmJiYrYSKAIC4uLhCSZLw5JNP3gxenZ2dERsbW5iZmXnHwihDhgzJtYaKADB48OCiXr16FX755Zc+VT3nDRs2+FosFkydOjXH9jmHhISUd+nSpeTrr7+uduXuoqIip+LiYqeHH3746ocffpj56KOP5n744YeZkydPvvL555+3//nnn6t9zRsLeywSERER1Q+DRRmDRSIiahW07u6Wpz/4149q12GldXdvsmWXAwICSt3c3O7ofXj48GG3F154IfjgwYNeBQUFt60GkpubW+PqIGFhYaW2bWvImJOTU+2x586dc01PT3cPCgrqXdn+rKys2/Kr1NRUc3R0dGxGRobrF198cdI2SASAgoICsWDBgs4bN270z8rKcpGkW7vz8vLuqEWn091Wt4+PTwUAhIeH37bd29u7Ii8v744sLSIiosR+W9euXYu3bdvWvtInDODUqVNukiQhNjY2prL9zs7O1fYOtb5/U6dOva335Z///OdrGzZs6PjVV1952vT+bDIMFomIiIjqSGcwdQEQCaACwB6Vy1HLIcjPv4vOYAo1G/WZahdERETUEEIINNXQY0dTWaiYnZ2tGTp0aJSHh4dl7ty5FyIiIkrc3d0thw8fbvfKK6+EVFRU1Djho0ajqTQMkySp2mMtFovo379/XnJycqVDf3v27HlbQLZjxw6v0tJSAQBHjx51HzJkSKHt/sceeyxs8+bN/klJSZf79+9f6OvrWyGEkBITE7vaLr5iVVWI5+x8Z2xmG1I2hMVigRACH3300anKXreaVukOCAgoPX36tFtQUFCZ7XbrfJk1hbmNhcEiERERUd1Zeyt+Zzbqq5wvqDUzG/UFOoPpRwD9AAwAsFHlkoiIiKgBtm/f7pWbm+u8fv36NNv5CmsaxtwYQkNDS4qKijRjx47Nr+mxGRkZLgaDIWzAgAF5Wq1WWrRoUejo0aPzunfvfrN34bZt2/wefvjhq6tXr745RLqoqEjk5+c3SQ52+vTpO16jX3/91S0oKKjKHoPdunUrkSQJkZGRJb169apzz8I+ffoU7d+/3zsjI0Pbu3fvm8dnZma6AEDHjh2rXDSmMXGORSIiIqK6G6bc71K1CvVxODQREVErYe01Z9ujr7i4WKxZsyagqa89ZsyYa0ePHvX4+OOPve33ZWdna8rKbnXKmz59eheLxYK1a9eaP/jggwyNRiNNnz5dZ1u3RqO5o2fh0qVLAyoqqlxkuUF2797te/bsWRdre8+ePe1++uknj4SEhLyqjpk0aVKuRqPBggULgux7UVosFly6dKnaHodTpky5BgBr1qzxt92+evVqf41GI/3+97+vMaRtDOyxSERERFQHOoNJA+B3SrOtzq9otQ/AbDBYJCIiavESEhIKvL29K5544onwxx9/PEsIIW3atKlDYw39rc6iRYsu79ixw3fixIkREyZMuBoXF1dUWFjodPz4cfft27f7nTlz5ufOnTuXr1ixosPevXt9Vq5cae7WrVsZABiNxnMzZ84MX7ZsWUeDwXBFeS65n3zySYekpKSKHj163Dh48KDnvn37vH19fZukF19oaGjJwIEDoxMTE7NKSkqcVq9e3cnX17d84cKFVa7q3LNnz5K5c+eeX7p0aXC/fv1c9Xp9jpeXl+Xs2bPa7du3+02bNu3KkiVLLld1/IABA2488sgj2R999JG/Xq8XDzzwQP7XX3/ttX37dr9Zs2Zd0ul0ZVUd25gYLBIRERHVTV8A7QHkA/hO5VrU9q1y30tnMPm01WHhRERErUFgYGDF5s2bTyUnJ4e+9tprQV5eXhXjx4+/OnTo0Pzx48dHNuW1vby8LPv370+bP39+588++8xvy5YtHTw8PCrCw8NLkpOTL7Rv377izJkzLgsWLAgdPHjwddsVrZ966qlrW7du9VuyZEnI2LFjr0dHR5e+++67mRqNBlu3bm2/adMmp7i4uIKdO3emjRw5sntT1D9p0qSrTk5OSElJCbh27ZpLbGxs4apVq8516dKl2nDv1VdfvRQVFVW8cuXKTm+88UYQAAQGBpY++OCDeRMmTMit6br/+Mc/zoWGhpZu3LjRf9euXb5BQUGlixcvzly4cGFWIz21GonmSJ6bixDCG8B1AD6SJFXZ3ZSIiIiovnQG0wsAXgXwf2ajfoza9ahNZzCdAhABYITZqN+hdj1EREQ1OXLkSLSzs/OOyMjIgnbt2hWrXQ+1XGlpadro6OjYl1566bfqehc6mqKiIrdTp055lpeX/z4+Pv6k/f665GucY5GIiIiobqwLt7T1YdBWnGeRiIiIqI1isEhERERUSzqDqR3kFZABBotWDBaJiIiI2igGi0RERES19yAALYBMAOkq1+IorMHivTqDSatqJURERETUrLh4CxEREVHtDVPud5mN+tYzUXXDpAPIBuAPIA7AQXXLISIiImoeUVFRpZIkHVG7DjWxxyIRERFR7XF+RTtKwMrh0ERERERtEINFIiIiolrQGUydAcQAkAB8qXI5jobBIhEREVEbxGCRiIiIqHaGKPc/mo36bFUrcTw3g0WdwSRUrYSIiKhmFgCQJM5qQm2TzWff0tBzMVgkIiIiqh0Og67ajwBuAOgAIErlWoiIiGpySZKkgoKCAg+1CyFSQ0FBgYckSQUALjX0XFy8hYiIiKgGSi88a49FBot2zEZ9qc5gOgRgEOTh0CfVrYiIiKhq8fHxeUeOHNl4+fLlJ0tKSjr7+PjkOzs7lwvBTvfUekmShPLycufr16975ebmWioqKjbEx8fnNfS8DBaJiIhs6AymeACPAlhsNuqvql0POYyeADoDKAbwrcq1OKp9uBUsrlG3FCIiohq9WlZWdvzq1avPX7t2LVAI4aZ2QURNTZKkckmSzlosltcBfNYY52SwSEREpFB6pX0AIBaAFsAMdSsiB2IdBv212agvVrUSx8UFXIiIqMWIj4+3APjkyJEj/wfAF4A/OF0ctW4WANkAcpXPf6NgsEhERHTLA5BDRQBI0hlMr5iN+kw1CyKHMUy536VqFY7tAOQfWLvpDKbOZqP+otoFERER1UQJWK4pNyKqI6bxREREtzxt828XAPPUKoQch85gcgXwkNLk/IpVMBv1eQB+UpoD1KyFiIiIiJoHg0UiIiIAOoMpGMDDSnO2cv+4sp3atv4A3AFcBvCzyrU4Og6HJiIiImpDGCwSERHJngSgAfA1gJWQAxItgGQ1iyKHYJ1fcbfZqJdUrcTxMVgkIiIiakMYLBIRUZunDHV9Umm+pYRHS5T2kzqDKVCdyshBWINFDoOumXXF7L46g8lL1UqIiIiIqMkxWCQiIgImAAgAcB7AJ8q23QAOAnAD8Lw6ZZHadAZTBwDxSnO3mrW0BGaj/jcAZsg/Y96rbjVERERE1NQYLBIREd1atOXvZqO+DADsei0+pTOYOqpSGaktAYAAcMJs1J9Xu5gWwjoc+gFVqyAiIiKiJsdgkYiI2jSdwdQPwH0AygCsttu9A8BhAO0APNfMpZFjGKbc71K1ipaF8ywSERERtREMFomIqK2z9lb8l9mov2y7w67X4tPKsFhqI3QGkwDnV6wPa7B4n85gclG1EiIiIiJqUgwWiYiozVKGN09Smn+r4mGfAzgKwBPA7KavihxIBIAukHuzfqVyLS3JfwDkQO7p20fdUoiIiIioKTFYJCKituwxAK6Qhzt/V9kD7Hot/pfOYPJrptpIfdbeivvNRn2hqpW0IGaj3oJbq0NzODQRERFRK8ZgkYiI2iSdweQM4Cml+ZYSIFblUwA/A/AG8F9NXRs5DA6Drj/Os0hERETUBjBYJCKituoPAMIAZAPYVN0DlR5YLyvN2TqDyaeJayOVKcFzgtJksFh3N4NFZa5KIiIiImqFGCwSEVFbZV20ZbXZqC+uxeM/BnACgK/NsdR63Q25h2oOgCMq19ISHQZQAiAA8lyVRERERNQKMVgkIqI2R2cw9YDcG80C4O+1OUbptfhXpfmczmDyaqLyyDFYh0H/22zUV6haSQtkNupLAHyvNDkcmoiIiKiVYrBIRERt0Szl/lOzUX+uDsf9C0A6gPYAZjZ6VeRIhin3u1StomXjPItERERErRyDRSIialOU+REfVZpv1eVYpeeatdfi8zqDyaMxayPHoDOYvAHcpzQ5v2L9faPcM1gkIiIiaqUYLBIRUVvzKAAPyPMl7qnH8RsAnAHgD2BGI9ZFjmMQAA2AM2aj/qzKtbRkBwBIALrrDKYAtYshIiIiosbHYJGIiNoMncHkhFvDoN8yG/VSXc9hNurLAbyiNJN1BlO7xqqPHIZ1fkX2VmwAs1GfA+C40hygZi1ERERE1DQcKlgUQiwSQkh2t5Nq10VERK3GEADdAeQB+EcDzvNPAGYAnQA83vCyyMEwWGw8nGeRiIiIqBVzqGBR8QuAzjY3/iBKRESN5Wnl/kOzUV9Q35OYjfoyAEuV5jydweTW4MrIIegMplAAUZBXDP+3yuW0BgwWiYiIiFoxRwwWyyVJumRzy1a7ICIiavl0BlNXAKOU5qpGOOVaAJmQ/wj2WCOcjxyDtbfi92ajPlfNQloJa7AYx8WOiIiIiFofRwwWI4UQF4QQvwoh1gkhwqp6oBDCVQjhbb0B8GrGOomIqGV5CoAAsNNs1Kc39GRmo74EgFFpGnQGk2tDz0kOwRos7lK1ilbCbNSfgxzAOwO4R+VyiIiIiKiROVqweAjAdAC/h/wLYDiAb4QQVQWGLwC4bnP7rRlqJCKiFkZZYMXaq/CtRjz1+wAuAAiB/P8XtWDK4j5DlCbnV2w8HA5NRERE1Eo5VLAoSdJ2SZI+kiTpJ0mSdgIYCcAXwB+rOGQpAB+bW0izFEpERC3NZAB+AM4C2N5YJzUb9cUAXlOaL+oMJm1jnZtU0QeAP4ACAAfVLaVVYbBIRERE1Eo5VLBoT5KkXADpACKq2F8iSVKe9QYgvznrIyIix6czmASAZ5Tm22ajvqKRL7EawGUAYQD+3MjnpuZlHQa9V1mghxqHNVjsrzOYnFWthIiIiIgalUMHi0IITwDdAFxUuxYiImqxBgDoDeAG5KHLjcps1N8AsExpztcZTC6NfQ1qNtZgkcOgG9cvkKes8QQQq3ItRERERNSIHCpYFEIsF0I8JITQCSH6A9gKoALABpVLIyKilutp5X6d2ai/1kTXSAFwBfLcwFOa6BrUhHQGkztuDdVlsNiIlF7C+5Umh0MTERERtSIOFSxCniNxA4A0AP8CcBXAfZIkXVG1KiIiapF0BlMQgPFKc1VTXcds1BcCWK4053O4Z4v0AABXAOcBnFS5ltaI8ywSERERtUIOFSxKkjRJkqQgSZJcJUkKUdpn1K6LiIharCcBOAPYZzbqjzbxtd6G/AexSAATm/ha1PhuDoM2G/WSqpW0TjeDRWXeUyIiIiJqBRwqWCQiImosygrNTyrNt5r6emajvgDA/yjN+TqDSdPU16RGNUy536VqFa3X9wDKAAQB0KlbChERERE1FgaLRETUWo0H0AnyAmBbmumabwHIBXAXbg3BJgenM5g6AeilNL9Us5bWSlnk6LDS5HBoIiIiolaCwSIREbVW1kVb/m426sua44Jmoz4PwP8qzZd0BhP/n20Zhij3R81GfZaqlbRunGeRiIiIqJXhLzxERNTq6AymOAD9IQ+9fLeZL78SQB6AGABjm/naVD8351dUtYrWj8EiERERUSvDYJGIiFoja2/FzWaj/lJzXths1OcCWKE0F3KhCsemvD8MFpvHfuW+h85g6qBqJURERETUKBgsEhFRq6IEFlOU5t9UKuNNAAUAegP4g0o1UO3cBXlBkRLc6lFHTcBs1GcD+I/S7K9mLURERETUOBgsEhFRa/MYAFcAPwA4qEYBZqP+Gm6Fmuy16NisvRW/URYYoabF4dBERERErQiDRSIiajV0BpMGwEyl+ZbZqJdULOd/ABQCiAcwQsU6qHrWYHGXqlW0HQwWiYiIiFoRBotERNSajALQBcA1ABvVLEQZ9vm20mSvRQekM5i0AAYpTc6v2DysweLdOoPJXdVKiIiIiKjBGCwSEVFrYl20ZY2DDGt9A8ANAPfiVs84chz3A/AAcAXATyrX0lacBXARgAuAfirXQkREREQNxGCRiIhaBZ3BdBeAIQAsAN5RuRwAgNmovwzg70rzv9lr0eFYw97dZqPeomolbYQyPQGHQxMRERG1EgwWiYiotbDOrfiZ2ag3q1mIndchrzjcH8BglWuh21mDRQ6Dbl4MFomIiIhaCQaLRETU4ukMJm8A05XmWyqWcgezUX8RwLtKc6GatdAtOoPJD7eG4jJYbF7WYHGAzmDiz6JERERELRh/mCOiJqMzmDQ6g+ldncH0GoeAUhObBsATwEkAX6pcS2WWASgF8JDOYHpI7WIIAJAA+eegk2aj/je1i2ljfgJQAMAHQIzKtRARERFRAzBYJKKmNBrA4wDmAhimci3USimhtXXRlreUOdwcihJcva80X1KzFrqJw6BVYjbqywEcUJocDk1ERETUgjFYJKKmNNvm369xyBs1kd8BiAKQDyBV5VqqYwRQDuB3OoNpgNrF0M0/duxStYq2i/MsEhEREbUC/CWfiJqEzmCKA/Ag5CAlD0BvAFNULYpaK2tvxbVmoz5f1UqqYTbqMwB8qDTZa1FFOoOpG4BwyN+fvlK5nLaKwSIRERFRK8BgkYiayrPK/b8ALFX+/VedweSqUj3UCukMJh2APyjNVSqWUltLAVQAGK4zmO5Vu5g2zDoM+oAjh9Gt3CHIXwuhOoMpTO1iiIiIiKh+GCwSUaPTGUyBACYrzRUAVgI4D6ALgJlq1UWt0lOQ/y/bbTbqT6pdTE3MRv2vAP6hNNlrUT2cX1FlZqO+EMAPSpO9FomIiIhaKAaLRNQUZgBwgdwb6DuzUV8E4L+VfQt0BpOPeqVRa6EzmNwB/D+l+Tc1a6mjVwFYAOh1BlO82sW0NTqDSQN5RWiAwaLaOByaiIiIqIVjsEhEjUpnMLlB7kUGAG/a7FoL4D8A2gOY18xlUes0CfLnKQOASeVaas1s1J8CsF5pstdi8+sHwBfAdQCH1S2lzWOwSERERNTCMVgkosY2CUAAgEwAW6wbzUZ9OQCD0pytM5iCVaiNWgmdwSQAPKM03zYb9RVq1lMPrwCQAIzRGUx9VK6lrbEOg/638n2J1POtch+jM5j8VK2EiIiIiOqFwSIRNRol7JmtNN+q5Jf2zyD/IukOYFHzVUat0P0A+gIoBvCeyrXUmTIf5CaluUDNWtoga7C4S9UqCGaj/jKAUwAE5K9pIiIiImphGCwSUWN6CEBvAEUA1tjvNBv1EoC5SjNJZzD1aMbaqHV5Wrlfbzbqr6paSf39VbkfrzOYYlStpI3QGUxeAPorTc6v6Bg4HJqIiIioBWOwSESN6VnlPtVs1F+r7AFmo34/gE8gf/95tZnqolZEZzB1BvCI0lylZi0NYTbqfwGwWWnOV7OWNuQhAM4AzpqN+jNqF0MAGCwSERERtWgMFomoUegMpq4AxijNlTU8/AXIq+KO0RlMA5q0MGqNnoAcDu03G/U/qF1MA1l7LU7UGUzRqlbSNliHQbO3ouOwBov36AwmV1UrISIiIqI6Y7BIRI3lGcjzZO0wG/X/qe6Byvxy1nnxlilzMxLVSGcwaQHMUJpvqVlLYzAb9ccg9+AVYK/F5sBg0fGcApAFwBVAvMq1EBEREVEdMVgkogbTGUzeAB5Tmm/W8rBFAG5Anu9sTPUPJbppHIBAAJcAfKxyLY3lZeV+is5gilS1klZMZzCFALgL8mrc/1a5HFIoc+9yODQRERFRC8VgkYgaQyIALwD/QS1XWjUb9RcA/K/SXKozmJybqDZqXayLtqSYjfpSVStpJMpw7s8h/5/8osrltGZDlPvDVc0BS6phsEhERETUQjFYJKIG0RlMGsjDoAFgpdL7pLaWAbgKIBpyOElUJZ3B1Ady8FAO4F11q2l01l6Lf1bmK6XGx2HQjssaLA7QGUz82ZSIiIioBeEPb0TUUHoA3QDkAPhHXQ40G/XXcWvxisU6g6ldI9dGrYu1t+LHSo/XVsNs1H8HYAcADeTFjagRKWGVNVisVa9qalZHARQBaA/5D01ERERE1EIwWCSihpqt3L9rNuoL63H8OwDMADrbnIvoNjqDqT2APynNFr9oSxWWKPfTdQZTF1UraX16AegIoBDAAZVrITtmo74MwEGlyeHQRERERC0Ig0UiqjedwdQbwGAAFQBW1eccZqO+BLdWw52nM5j8G6k8al2SALhB7tn0rbqlNA2zUX8AwG4AzgAMKpfT2lh7K37VWubmbIU4zyIRERFRC8RgkYga4lnlfrPZqM9swHk2AvgRgDduhYxEAG7O4zlTab5Vx3k8Wxprr8XHdAZTqKqVtC6cX9HxMVgkIiIiaoEYLBJRvegMpgDcGpq6oiHnMhv1FgDzlOYsncEU3pDzUaszEkA45Hk8N6hcS5MyG/XfANgLwAXAXHWraR10BpMbgAeUJoNFx3UQgAVAuM5gCla7GCIiIiKqHQaLRFRfTwLQAvgOt+bGqjezUf8F5GGgLri1Qi4RcGvRlvfMRn2RqpU0D2uvxcd1BlOQqpW0DgMhD6O/AOCEyrVQFcxGfT7kqQ4AYICKpRARERFRHTBYJKI60xlMrrg1NPXNRhyaau21+CedwdS3kc5JLZjOYIoCMAyABOBtlctpLnshDwt1BZCsbimtgnUY9O5WPoy+NeBwaCIiIqIWhsEiEdXHHwEEQu4BtLmxTmo26n/AraGuxsY6L7Vo1gD7c7NRf1bVSpqJEn5Zey3O0BlMgWrW0wpYg8VdqlZBtcFgkYiIiKiFYbBIRHWiM5gEgL8ozbfMRn1ZI19iAYAyAMN0BtOQRj43tSA6g8kLQKLSfEvNWlSwG/IUA24A5qhcS4ulzAVr7f28W81aqFasK7731hlM3qpWQkRERES1wmCRiOpqIORf1IsBvNvYJzcb9b8CeEdpvqYzmPh9qu36MwAvAOloY6GQ0mvROtfoTJ3B1FHNelqw3yn3P5mN+suqVkI1Mhv1FwD8Cvnn0/tULoeIiIiIaoG/sBNRXT2r3P/DbNRfbaJr/BVAPoA4yMOuqY1ResZaF21Zpawc3tZsB3AEQDsAz6lcS0tlHQbN1aBbDg6HJiIiImpBGCwSUa3pDCYdgHFKc0VTXcds1F8BsExpvqIzmLRNdS1yWIMB3AWgAMCH6paiDru5Fp/WGUwd1KynpVHCaQaLLQ+DRSIiIqIWhMEiEdXF05C/b3xhNup/aeJr/S+ASwC6Aniyia9FjsfaWzHVbNTnqVqJuj4DcAyAJ4DZ6pbS4kQBCAFQCuAblWuh2rMGi/fpDCYXVSshIiIioho1OFgUQnQWQvQWQng0RkFE5JiUhTT+n9J8s6mvZzbqCwEsUpoLOZF/26EzmLoAGKM0V6lZi9rsei3+l85g8lOznhbG2ltxn9moL1K1EqqLkwCuAnDHrYV3iIiIiMhB1TtYFEKMEUKcBPAbgB8A3Kts9xdC/CiEGNs4JRKRg3gUgA/khTR2NNM131Ou5w/g+Wa6JqlvBuT/n/5tNupPqF2MA/gEwHEA3gD+S91SWhQOg26BlDDdujo0h0MTERERObh6BYtCiD8A2AIgG8BiAMK6T5KkbADnASQ2RoFEpD5lZWZroLGyuRbSMBv15QBeUJpzdAZT5+a4LqlHZzC5AXhcaf5NzVochfL1Zl0hejZ779ZMGUI7WGnuUrMWqhfOs0hERETUQtS3x+JCAF9LkjQQlQ9TOwAOXyFqTUYAiARwHcDaZr72VgAHIa+Mu7CZr03NbyKADgDOAfhc5VocyccA/gPAF7fmn6Sq3Qd5XspsAEfVLYXq4WawqCzCQ0REREQOqr7BYgyAf1Wz/zKAgHqem4gcz2zlfrXZqC9ozgsrw+LmKs3HdQZTVHNen5qPEiA8ozTfUXqsEgCzUV8B4K9Kc44y5ylVzToM+svm6mFNjeoHAMUAOkL+oxYREREROaj6BotFAKpbrKUr5Im3iaiF0xlMMQCGALAAeEuNGsxG/TeQV8fVAHhVjRqoWdwLIB5ACYA1KtfiiDZBnnO0PYCnVK7F0XF+xRbMbNSXAPhOaXI4NBEREZEDq2+wuAfAo0IIZ/sdQohAyPNjcU4jotbhWeV+i9moz1Cxjhcgh5sP6wym+1Ssg5qOdYjvBrNRn61qJQ5I6bX4itJ8XmcwVfcHvjZLZzD5ArhHaTJYbLk4zyIRERFRC1DfYHE+gBAA3wN4EoAEYLgQ4q8Afoa8mMviRqmQiFSjM5j8AUxVmivUrMVs1P8C4EOluYzzbrUuOoOpE4A/Kk1Vesa2EOsB/Ap5iOiTKtfiqAZD/vkm3WzUn1O7GKo3a7D4gKpVEBEREVG16hUsSpKUBvkvyFchr1QpACQDeBFysPiAJEnmRqqRiNTzBAA3AEcAfKtyLQDw35Dn3XoAgF7lWqhxPQHABcBBs1F/RO1iHJUy76S11+JcncHkrmY9DorDoFuHA5D/cB2hM5gC1S6GiIiIiCpX3x6LkCTpF0mShgDwhzwv1v0AOkmSlCBJ0n8aq0AiUofOYNICmKU031QWUVGV2aj/Dbd6Thp1BpNGzXqocegMJhcAM5QmeyvW7B8AMgB0gjz1CN3OGixySpYWzGzU50L+YzUADFCxFCIiIiKqRr2DRStJknIkSfpekqRDkiRdaYyiiMghTAAQBOASql8Fvrm9BiAHQE8A01SuhRrHWMiftSwAm9UtxfGZjfoy3FrEaJ7OYHJTsx5HojOYwgFEAKgAsFfdaqgRcJ5FIiIiIgdXr2BRCDGtNrfGLpaImocyf+FflOYqs1FfqmY9tsxGfQ5uDQVdwqGgrYJ10ZYUZTVYqtlaAJmQA9kklWtxJNbeigfNRn2eqpVQY2CwSEREROTg6ttj8cNqbh/Y3IioZbofQD8AJQBSVK6lMqsAnIO8iNQzKtdCDaAzmHoBeBByDzNH/Kw5JCWANSrNF3QGk6ua9TgQzq/YuliDxb46g8lT1UqIiIiIqFL1DRbDK7lFABgCYCvkhR5iGqNAIlLFs8r9OrNR73BTHJiN+mIALynNF3QGU3s166EGsfZW3GI26s+rWknL8z6AC5AD9kdVrkV1ypyrv1OaDBZbAbNRnwn5j0gayPN5ExEREZGDqe+q0BmV3H6VJOnfkiRNAHAFt35ZJKIWRGcwhQEYrzRXVPdYla2DPLG/L4AX1C2F6kNnMPkBmKo0uWhLHSkB+2tK80VlEZy2LA6AH4A8AN+pXAs1Hg6HJiIiInJgDV68pQqfA5jYROcmoqY1C3LvkH+bjfqf1C6mKmajvgLAPKX5jBKIUsuSCMAdwE8AvlG5lpZqNYDLALoA+LPKtajNOgx6j9moL1e1EmpMDBaJiIiIHFhTBYvdAHC+J6IWRmcweQB4Qmm+qWIptbUD8sqvrgCWqFsK1YXOYHKCHGIDwFtmo15Ss56WymzU3wCwTGnO1xlMzmrWozLOr9g6WYPF+9v455uIiIjIIdV3VegHq7iNFkIsB/BfALY3pDAhhEEIIQkh3mzIeYioTqZBHlp8BoBJ3VJqpoRRc5XmNGUhEGoZRgDoCiAXwHp1S2nxUiBPQdIVwBSVa1GF8keRAUpzl5q1UKP7BcB1AB4AeqtcCxERERHZqW+Pxb0A9lRy+wTyog+bATxV36KEEHcDeBLy8DgiagZKD7L/UporzUa9Rc16asts1H8P4CMAAsBSlcuh2rPOw/u+2agvVLWSFk55/ZYrzQXKIiZtzUMAXABkADitci3UiJT/i75VmhwOTURERORg6hssDgaQYHcbDPkvyR0kSZoiSdLV+pxYCOEJeVGGxwHk1LM+Iqq7YQCiIS988IHKtdTViwDKAYzUGUyDVK6FaqAzmCIB/B6ABOBtlctpLd4GcBVAJNrmHMc3h0FzWH2rxHkWiYiIiBxUfVeF/qqS29eSJP0sSVJeA2taBcAkSdLumh4ohHAVQnhbbwC8GnhtorZstnL/ntmoz1ezkLoyG/Wn8f/ZO+8wSaqqD7+1y7LkQrKSGgGdBgoQ+ZQgCihBewSJQ25yFHZhCE2+5CYMLLDk2ESHpOA0STKKIApiqT2oQIPkXMTdZXfr++PctpZlZ6a7p3qqe/q8z9NP7Z2pcHamp7ruuef8ftIOCnBWKld0koxHGZID7fbucj7zQqKRjBLK+cwnwHl22I5Vi6qvOLr5X2JR7++KoiiKoijNRaPMW+rCcZwdgLWAo6s85GhEd6fyerVBoSnKqCaVK64CbAbMBC5MOJx6OQX4BPg/YNuEY1EGIJUrLgDsaYeTk4xlFDIZ0axMA9skG8rIkcoVvwGsilTAPphwOEpjeBqYBiyFaIkqiqIoiqIoTUJViUXHcV5yHOfFGl81VaE4jrMscD6wcxiGU6o87AzAneW1TC3XVBTlf1S0Fe8s5zMvJRpJnZTzmbeIdOZOT+WK45KMRxmQXYCFEB08NdmIkXI+ExC5uR9vdVPbgZ/Y7TPlfKYuGRaluSnnM1OAP9uhtkMriqIoiqI0EXNVud+jSCVAI/kusATwjOP8r8tlLPBDx3F+CYwPw3DGrAeEYTgVmFoZz3KcoihVksoVF0HcoEGS+63MuUib7UqITqvq9zURtoWxYtpyUasYBLUYFwCHAasBvwDuSDSakUHboNuDx4H1kMRiIeFYFEVRFEVRFEtV1QxhGO4ehuEetb5qjOVBwAPWnOX1Z8TIZc3Zk4qKosTGPsC8wF+Bx5INZXhYbciT7PBE23arNA8/QlpWPwWuTTaU0Uk5n/kASS4CnDDa9ejs/08Ti+2BGrgoiqIoiqI0IU3TJhWG4cdhGP591hcy+XzP/ltRlJix7cKVCrJJo8RN9QqkzXYJoDvhWJQvc7DdXl/OZz5MMpBRziREb3QN4OfJhtJwPGBJ4HPgDwnHojSWJ+y2I5UrLp5oJIqiKIqiKMr/GFZi0XGccY7jeI7j/MBxnB/O/oorSEVRGsbWiDbp28CvEo4lFsr5zBfAMXZ4eCpXXDLJeBQhlSsuh7TmAlyUYCijHqszWDHGGe1Vi5VqxUfL+czUQfdUWppyPvM+8A87XC/JWBRFURRFUZSIajUWv4TjOGMQ45QDgfkG2XVsPeevEIbhhsM5XlGUIZlotxePskn5bYiL6P8BxxNVZSrJsR+ymPVIOZ/RKvTGcy5iyvRdYHPgnmTDaRjaBt1e/B6RU/gBcGfCsSiKoiiKoijUX7F4DHAEcANi+uAAOWB/4G/Ac8BmcQSoKEpjSOWK3wfWAaYBlyYcTqzYlu4j7XC/VK64UpLxtDupXHEeYF87vDDJWNqFcj7zDpF50YmjsWrRvq8q3RGaWGwPVGdRURRFURSlyag3sbg7cEsYhgcA99qv/SUMwyuA7yMO0hsPPzxFURrIBLu9uZzPvJVoJA2gnM88glRpzQWclmw0bc92wGLAq8BdCcfSTpwDTEE+l3+ScCyNYD3EeOpNQKtg24NKYvG7qVxxsI4ZRVEURVEUZYSoN7G4DPCQ/XelfXIegDAMpyGVjLsOLzRFURpFKldcBkn2AJyfZCwNJocsdGyfyhX/L+lg2piKacsl5XxmeqKRtBF2waBSjTwaqxYrbdAPjBLjKWVoXgZeA8YhUheKoiiKoihKwtSbWHwPWAAgDMNPgI+Ab862z9eGEZeiKI3lQKSS79FyPvNs0sE0inI+8zfgejs8cxQmVpqeVK74PSQBMA24MuFw2pGzkQXA9YENkw0ldlRfsc2wCWRth1YURVEURWki6k0sPsuXV4ofBiY6jrO+4zgbIILxzw03OEVR4se2j+1nh5MSDGWkOB5JrGyEar8mQcU4p7ecz7ydaCRtSDmfeR24wg5PSDKWOEnliosBa9mhJhbbC00sKoqiKIqiNBH1JhYvB8Y7jjPejo8FFgYeAx4FFgK6hx2doiiNYBdgEeAl4LcJx9JwyvnMK8BkOzwzlSsOy61eqZ5UrrgE0GWHatqSHGciFaMbpnLFHw61c4vwY8Q47u/lfOaNpINRRpRKYnE9vZ8riqIoiqIkT12JxTAM7wrDcOswDKfa8T+BFYGtgS2AlcMwfDK+MBVFiQPbClwxbbmwnM/MSDKeEeR0IABWB3ZOOJZ2Yh9gbuBP5Xzm6aSDaVfK+cyrwNV2eHySscSItkG3Lz7wMbKIvVrCsSiKoiiKorQ9dSUWHcf5ik5ZGIZBGIZ3hmHYF4bh+8MPTVGUBvATYBXgE6JEw6innM+8D5xhh6ekcsV5koynHUjlinMBB9jh5MH2VUaEPDAd+EkqV1wv6WCGg10g0cRim2IXxJ6wQ22HVhRFURRFSZh6W6FfcxznfMdxWnpyoihtyES7vbqczwRJBpIAFyBuossBByUcSzuwJbA08A5wS8KxtD3lfOZl4Fo7bPWqxZWRv+NpiASL0n6ozqKiKIqiKEqTUG9i8VFgT+Bxx3FecRznHMdxvhdjXIqixEwqV/w28DMgpA317sr5zOdE5hXHpnLFhRMMpx2omLZcXs5npiYaiVLhDGAGsLl1625VKtWKT5TzmU8TjURJikpicQNbwaooiqIoiqIkRL0aizsCSwA7AH9C2t3+6DjOC47jnO44zprxhagoSkwcYrd95XzmP4lGkhwF4B/A14BcwrGMWlK5ogdsiCSxLks2GqVCOZ95EbjeDlu5alHboJU/Ia39SyPVq4qiKIqiKEpC1FuxSBiGn4dheGsYhtsiScZdEEHtQ4G/OI7TH1OMiqIMk1Su+DVgdzuclFwkyWK1uY62wwmpXHGZJOMZxVRazX9Tzmf+m2gkyuycDswEOlO54lpJB1MrqVxxHLCRHWpisU0p5zOfAX+xQ22HVhRFURRFSZC6E4uzEobhp2EY3owkF49AjCFWjuPciqLEwl7AfEjy/+GEY0maPuBxYB7gpIRjGXXYFvNd7VBNW5qMcj7zb+AmO2zFqsXvIW7A7wPPJByLkiyqs6goiqIoitIEDDux6DjOfI7j7OA4zh3A28D5wFtIVYSiKAlj3XkPtsNJ5XwmTDKepLH//6PscPdUrrhqkvGMQnZHkth/R/R4lebjNERr9RepXHGNpIOpkUob9IO2AllpXzSxqCiKoiiK0gTUlVh0HGcex3G2cRznFiSZeBOwJuK6unYYht8Kw7AVKyEUZTTyC0SD6l2iSqW2ppzP/BG4A7kHnpFwOKOGVK44hqgNenK7J7GblXI+0w/02uFxScZSB6qvqFT4g92uZuU+FEVRFEVRlASot2LxHeAWYF3gcmDdMAy/GYZhLgzDZ2OLTlGUOJhot5eU85kpSQbSZByDmIv8PJUrbpB0MKOEzYCVgAC4MeFYlME51W63TeWKqyUaSZWkckUX+L4damKxzSnnM+8Az9vh+knGoiiKoiiK0s7Um1i8FvhRGIbLhmF4WBiGT8UYk6IoMZHKFddGJlxfAJckHE5TUc5nngeutMOzUrmik2Q8o4Rf2u015Xzmk0QjUQalnM/8A7jNDo9NMpYa2BAYC/ynnM+Ukw1FaRK0HVpRFEVRFCVh6koshmF4cBiGvx96T0VREmaC3faW85k3Eo2kOTkJ+AxYB2kZV+oklSuuBPzUDi9OMhalaipVi12pXLEj0UiqQ9ugldnRxKKiKIqiKErCxOIKrShK85HKFb8BdNnhpARDaVpssvVcOzzDGt0o9XEA4AD3WOdhpckp5zPPAXciv7dWqFrUxKIyO5XE4v+lcsV5Eo1EURRFURSlTdHEoqKMXg4AxgG/L+czf0k6mCbmbMTY5tvAngnH0pKkcsX5iX52k5OMRamZU+x2p1SuuHKikQxCKldcHvgWoov6cMLhKM3DC8BbwNzA2gnHoiiKoiiK0pZoYlFRRiGpXHFeYH87nJRgKE1POZ/5iCi5cpJNkim1sTOwMPAicG+yoSi1YBcdisjzwDEJhzMYlWrFP5XzmQ+TDERpHqzzvLZDK4qiKIqiJIgmFhVldLITsBjwCtLqqAzOZcBLwFJELtpKFVjTm4ppy0XlfGZmkvEodVFJrO+ayhW/mWgkA6Nt0MpAaGJRURRFURQlQTSxqCijDJvoqZi2XFjOZ6YnGU8rUM5nphJpzB2VyhUXTzKeFmMDwENMcK5JOBalDsr5zFPAfYjjci7hcL5CKlccA/zYDjWxqMxOJbG4vn2vKIqiKIqiKCPIsB7AHMdZx3Gcox3HOc9xnJXt1+ZzHGctx3EWiCdERVFqZCMk0fMpcFXCsbQSvcAzwIK0hpFFs3Cw3d5Qzmc+SDQSZTicbLe7Wz3DZuI7wKLAx8BTCceiNB9/RT7vFgZWSTQSRVEURVGUNqSuxKLjOHM7jnMH8AfgNOAQYFn77ZnA/UQVU4qijCwT7fZaTfRUj23hPcoOD2ziltCmIZUrLgNsZYcXJRmLMjzK+cwTwIOI4dNRQ+w+0lTaoB8p5zNfJBqJ0nTYqvwn7VDboRVFURRFUUaYeisWTwE6EdfZbwNO5RthGE4BbgW2HHZ0iqLUhHV17bTDC5KMpRUp5zMPIAsj44h055SB2Q9pn32snM/8LelglGFTqVrcyyaNmwXVV1SGQnUWFUVRFEVREqLexOKOwCVhGF4OvD+H75cArfZRlJHnYCTRf3c5n/lX0sG0KBWNuZ1SueJaiUbSxKRyxfHAvnY4OclYlHgo5zOPAY8CcwNHJhwOAKlccT6iZJEmFpWB0MSioiiKoihKQtSbWFwC8Af5/gxgvjrPrShKHaRyRRfYww4nJRhKS1POZ54FbrTDfJKxNDnbIZ8FrwG/STYUJUYqVYv7pnLFrycaifBDJNH5X+D5hGNRmpenkGfP5VO54rJD7awoiqIoiqLER72Jxf8CHYN8f33gP3WeW1GU+tgTWAD4J/BAwrG0OscD04BNUrniJkPt3Kb80m4vVd27UcXDiH7yeOCIhGOBWdqgy/lMmGgkStNSzmc+RkxcQJ5BFUVRFEVRlBGi3sTiTcB+juOsO8vXQgDHcfYBtgeuG2ZsiqJUSSpXHIuYKAFM0gn48CjnMy8BF9vhmalcsd575agklSv+H/B94AvgioTDUWLE3jsqVYv7p3LFJZOMB9VXVKpH26EVRVEURVESoN7J8mnAE8BjSHVDCJznOM4rwGXAvcB5sUSoKEo1bAGkgPeAG5INZdRwGvAR8B1gh4RjaTYOsttbyvnMW4lGojSC3yGtpfMC3UkFkcoVlwI8O3wwqTiUlkETi4qiKIqiKAlQV2IxDMNpwOaIntuLQD/SNvU3YHfg52EYzogpRkVRhmai3V5ezmc+TzKQ0UI5n3kXONMOT7NmJW1PKldcnCjRemGSsSiNYbaqxYPs7zwJfmK3z5bzmXcSikFpHf5gt6tbzWFFURRFURRlBKi7vS8UbgjD8BdhGK4ahmE6DMPOMAyvC8NQ2zAVZYRI5YrfQQwOphO17yrxcD7wBlINun+yoTQNeyMLSX8G/pRwLErjuAf4C2LEdmhCMWgbtFI15XzmDeAFwAHWHWJ3RVEURVEUJSbqSiw6jrOI4zirD/J9z3Gcr9UflqIoNTDBbm8t5zOvJhrJKKOcz3wKnGiHx7d7FUwqV5wLOMAOJ6uW5+hltqrFg1O54iIjef1UruigiUWldrQdWlEURVEUZYSpt2LxPODyQb5/GXBOnedWFKVKrAbZjnY4KcFQRjPXIHIPi9IcLrlJ8nNgWUTLszfhWJTG81vgOcRtfuIIX3sV4OvAFKJkkTIIXsHb3Ct4KyYdR8I8breaWFQURVEURRkh6k0sbgzcNcj3f0ukjaQoSuPYH5gb+GM5n9G21AZQzmemA0fb4WGpXPEbScaTML+02yvK+cyURCNRGs5sVYsTUrniwiN4+U3t9jF9rw2NV/B+irSvP+QVvHbWg60kob+fyhXnTjQSRVEURVGUNqHexOLiwLuDfP89YIk6z60oShVYM5FKW+qkBENpB+4EnkBcck8cYt9RSSpXXBVZVJoJXJJwOMrI8Rvg78BCwCEjeF1tg66Nw+x2OWCvJANJmH8hz6fzAGslHIuiKIqiKEpbUG9i8Q3gO4N8/7uAOjgqSmPZAUngvwr8OuFYRjW2cusoO9wrlSt2JBlPQhxkt3eW85lXEo1EGTHK+cxM4BQ7PDSVKy7U6GvaRZMf2aEmFofAK3ir8uUukWO8gjdPUvEkib1Xq86ioiiKoijKCFJvYvE3wF6O42wx+zccx9kS2ANNdChKw7DGBhPtcHI5n/kiwXDagnI+83tEAmIscHrC4Ywo1rRmNzucnGQsSiLcDpSAhYna4RvJuogb9duAPwLXa3UqBl5FZKFpacS9vV3RxKKiKIqiKMoIUm9i0QDPA792HOcZx3Gus69ngDuQVpS2bBdUlBHih8CawOfAFcmG0lYcjbQCb5XKFddLOpgRJAvMD/wTeDjhWJQRppzPzABOtcPuVK64YIMvWWmDfsBWTCoD4BW8RYFd7fBMokWPo9u1apFZEot2EU5RFEVRFEVpIHUlFsMwDIB1kInGOGBb+xqHtEx9PwzDD2OKUVGUrzLRbgvlfOb9JANpJ8r5zD8Rl2iAM9th0prKFccQValNtq2GSvvRiywaLkKk7dooVF+xevZF9ASfRRJqVwP/Bb5hv9eOPIssui0KfDvhWBRFURRFUUY99VYsEobhp2EYnhiGoReG4Xz25YVhaMIw/DTOIBVFiUjlit8EtrTDC5KMpU05EZiCtNn9POFYRoJNgJWBj4DrE45FSQhbtViphjs8lSvO34jrpHLFRYC17VATi4PgFbxxRNqn5/tZP/Sz/lSi6tKjvYI3bzLRJUc5n5kGPGWH2g6tKIqiKIrSYOpOLCqKkhgHAw5wXzmfKSUdTLtRzmdeI3LhPiOVK86VYDgjQaVa8dpyPvNJopEoSXMT8CKwOLBfg66xMXJ/+6f9W1MGZmtET/Ft4FezfP1a4GVgKWD/kQ+rKVCdRUVRFEUBMO4yGHflpMNQRjd1JxYdx0k7jnOW4zi3OY7zoOM4D832ejDOQBVFAevIupcdTkowlHbnTOB9YBVEf3BUYqtjM3Z4UZKxKMljTaIqVYtHpnLFRlTDbWq3Wq04NBPt9hJbqQiAn/WnEVUtHuUVvPlGOrAmQBOLiqIoimLc+YGngecw7gpJh6OMXupKLDqOsyvi1HgwsJI9jzPbS6shG0AqV2xXMXZF2B1YEOgH7k82lPalnM98CJxmhyelcsXROnE/gKg69l9JB6M0Bdcj1XBLAvvEeWKrWar6ilXgFbzvIVrX04BL57BLAXgJ+T01WhOzGfkjYrS1YipX/HrSwSiKoihKQuyKdDDMS9SFpCixMxxX6GeBZcMwXDMMw43m9IovTAUglSv+AHgxlStukHQsysiTyhXHAofY4fnqlpo4FyEJlqWJfi+jBpssrVTHTk4yFqV5sPp1Z9jhUTEvdq0IpIAvgEdjPO9oZILd/srP+m9i3Pkx7pUYd08AP+t/wZerFhuiidmslPOZj4C/2eH6ScaiKIqiKIlg3DFEzwsAe2HcBZMKRxnd1JtY/AZwdRiG78YZjDIkvwS+DtyVyhW9pINRRpwMMvH+ADXRSJxyPjMVON4Oc6lccdEk42kAOwFfQ6qe7kk4FqW5uBZ4FXkW2CPG81aqFf+oep4D4xW8pYHt7fB8u+1GFgKuxLiVdvLrgRcQTcwDRzTI5kDboRVFUZR2ZlOgA/gYeR5wGcUSTkqy1JtY/BsyoVBGlj2QB+WFgXtTueLyyYajjDAT7faKcj6jzuvNwY3Ac8gH9TEJxxIbtiW10i5xsXUEVhTgf0n1vB0encoV547p1NoGXR0HAHMBj/tZ/xmMuzhwuP2eA9yEcZe1VYun2K8f6RW8BRKINUk0sagoiqK0MxPt9irgPPvvQ2wlo6LESr1vqsOAvRzHWS/OYJTBKecznwNbAH9HErv3p3LFxZKNShkJUrni6sBGwAzURKNpsO3oOTv85ShK9q8PrAF8DlydcCxKc3IV8AawLDGsflt39Y3tUBOLA+AVvHmJnJ4r1YpHI9q7zwLPAIsCt2DcuZHFj38Di9F+2kp/sNvvpHJFbf1SFEVR2gfjrgJshugNX4BoLwfAysBPE4xMGaXUm1g8CnljPu44ju84TtFxnLtme90ZY5yKpZzPfABsjmi7fQu4O5UrtlsVQjtS0ce4vZzPvJJoJMrs3Ac8BMxNVB3U6hxstzeW85n3E41EaUrK+cwUxB0d4JhUrjhumKdcG6n8/RD48zDPNZrZCUkcvgLciXGXAw6y3zsa2Bb5Ga4DnOVn/elE96UjvILXNgm2cj7zKlBGnnW/n2w0iqIoijKiVOaOd2KClzDBJ8AVs31PUWKj3sTi6sA8yIPtAsAqgDeHl9IAyvnMa8gKxHvA/wG3x9iKpjQZqVxxCWBnO5yUYCjKHCjnMyGy2AKwSypXXCPJeIZLKldcGtjaDrU6VhmMK4C3EMOVXYZ5roou4IPaej9nvILnEE0GLrRJQ4MsajwC3I8JXiKqIJ2AcbcDbgb+BSxCtGjQLmg7tKIoitJeGHdRYDc7mjTLdyYjFYybYNxVRzosZXRTV2IxDMNUGIYrDPH6ZtzBKhHlfOZ54GfAp8iE7JpUrqh6CaOT/YDxwJ+AJxOORZkD5Xzmz0Avom+WH2L3ZmdfRL/t9+V85q8Jx6I0MeV85jPgbDs81rYz14vqKw7NRsii7WfAVRg3TZREPBoThACY4C6iatKr/ZdeWRE4yY4P9wreQiMXcuJoYlFRFEVpN/ZFisCeBR7/31dN8DLwazs6ZOTDUkYzmohqYcr5zJ+AbYDpSHtUjzVdUEYJthK14uZ5vq2OU5qT45C/xc1TueLGQ+3cjNj32352ODnJWJSW4VLgXcSxfsd6TmD179axQ00sDkylWrHgZ/0PgFOR57jfYILZF52OAx5Fukpuv/H1N38LlBCn93ZqgaokFteNoV1fURRFUZob444j0lSe9L9Fx4iKPvNutrJRUWKh7sSi4zhjHcfZwXGcyxzH+bXjOJ79uus4ztaO4ywZX5jKQJTzmfuA3e1wInBkYsEojWB7YCngdeC2hGNRBqGcz/wHSbIAnNmiFcTbAksiphx3JByL0gJYh/pz7PC4VK44to7TbIhUyb5YzmdejCu20YRX8FYEfm6HF2Dc7yGSBSGSRPwyJpgO7AC8Cay6+tRpFzlheLL97mFewVu44UE3ByXgA2A+YM1kQ1EURVGUhrMdYvL6JtJNNTu/R4ze5kEqGxUlFuqa+DqOszDitncTUqGwBbC4/fYniPNQO62IJ0o5n7kRONQO86lccY8k41HiwVafVn6vF5XzmWlJxqNUxSnIPXBtJEnXalRWOC8t5zNfJBqJ0kpcDLyPGIptX8fx2gY9NAcjUgv3+lm/HzjDfv06TPCPOR5hgjeR5OJMYNeny/9dCPgnsDBt8oxWzmdmErlDazu0oiiKMnox7qxzx4sxwdSv7hOERFWLB9kKR0UZNvVW1OSBVREDkW8iD7sAhGE4A6ms+tmwo1OqppzPTCLSVLoilSv+fJDdldZgfWAtYApwecKxKFVQzmfeJtKcO72VTJVSueJ3gXWBL9D3m1ID5XzmY+BcOzy+jmpdTSwOgtVE3NMOJ2HcnwAbA9MQ85aBMcGjwDEA4+GC9T77/Dr7nUPbqGpRdRYVRVGUdmBdpLhhKnDZIPv1IuZ7SyOyaooybOpNLP4CuDAMw98hbTiz8y/EJVIZWY4GrgHGArekcsX1E45HGR4T7fb6cj7zbpKBKDVxLvJhvSKwT8Kx1MJBdntbOZ95M9FIlFZkMvAhkKaGh9RUrrgM0IFU1T3UkMhan92BBYH+Az4I7icyiLoEE5SrOP5s4LfA+Eveeme/MWH4T8AlqmoY7fwvsag61IqiKMooZqLd3ogJ3h5wL6lkvMSO2qKDQWk89SYWXeClQb4/DtFLUkYQa+yxL9CH6Cb0pXJFtZJvQVK5YgrYyg4vSDAUpUbK+cwnRA6sJ1pjiqYmlSsuihhAgZq2KHVQzmcCYJId1lK1WKlWfLqcz3wQe2AtjlfwxhI5N15w4IfBNsB3gU+B06s6iQlmIu7RL42BFY5574PP7HcO9QreIjGH3Iz8GaneWAJYKeFYlFlI5YpbpXLFE1K54jxJx6IoitLSGHd5ooXdSVUccSnS+bAOxv1+o8JS2od6E4svIC2aA7EpouOjjDDlfGY60AU8gego3ZfKFZdLNCilHg5C/j4fKOczf086GKVmrgT+jWjPdiccSzXsDYxHxJz/mHAsSutyAfAR4AFbVnnMpnarbdBz5mdI9fOH3/t8yo2IEzRAz6DVCLNjgg8Q3dep2338ydqLTp/xBlIFeVjM8TYd5XxmKvC0HWo7dBOQyhXnS+WKVyImYSdR3SRYURRFGZhfInPHBzGBP+TeJngLuNmOtGpRGTb1JhavBPZ0HKeLSF8xdBxnvOM4pwGbM3hfv9JAyvnMZ4h75D8Q7YT7U7niYslGpVRLKldcgKiFdlKCoSh1Yo1PjrHDw1O54lJJxjMY1sX3QDucbCufFaVmbMVhpcL6hKHaTm1V40/sUBOLc2ai3V5x1Ztvbwd8G3gP6Kn5TCZ4BjhkDHDce+8vab86wSt4i8YQZ7OjOotNQipX7ACeAvZC5JRCYL9UrrhjooEpiqK0Ksatd+5YMXHZDuMuHWtMSttRb2LxfOA6JMv9L/u1m4CPEZ2/y8MwvKrWkzqOc4DjOH9zHOcj+/qj4zg/rTPGtqacz7yPJHj/i0xE+lK54vzJRqVUSRaRG/g3cE/CsSj1czvwJ2B+4PiEYxmMTmA5xNX3VwnHorQ+kxBn9DWR99ZgrAEshrT1PtnQqFoQr+B5iEnLzFWmTr2SyKjlNEzwUZ2nvQK4/seffT5m5WnTpgML0BpV1cNFE4tNQCpX3BVpTV8N0SLehKgK9/JUrvitpGJTFEVpYSpzx/8Ad1d9lAmeBR5FJOwOHGJvRRmUuhKLobAP8EMkwXgP8FfESXTDMAwPqDOeV4Ecoh+0NiLkfqfjOKoTWAflfOZVxLn7feD7wG2pXFEt5ZsYW8FTKUc/v5zPzEwyHqV+bOXfkXa4bypXXDnJeAbhl3Z7ZTmf+TzRSJSWp5zPvEek0zlU1WJFX/GRcj4zrbGRtSQVbcU7el9/6+fAMshi4SUDHzIEJgiBAxz4+y8/CEQLOwwP9greaO9qeMJuv5XKFZdINJI2xLY+X4XMGeZHnu/XLOczDyKt0I8gSe5bU7nivIkFqiiK0moY90tzR6urXAuVqsX9MO588QWmtBv1ViwCEIbh78MwnBiGYSYMw5+GYfjLMAwfG8b5fhuG4d1hGP47DMN/hWF4LFL5sM5w4mxnyvlMCdFo+gypYLy6BlF9ZeT5KbAyEACFhGNRhkk5n3kUKCIrgdUZLYwgqVwxjbSizmQ4yQpF+TLnIp85ayOfOwNRSSxqG/Rs2ETfLgArTPviSiJpBYMJpgzr5Cb4FNh2o88+/yQ9dRo4zgLA4cM6Z5Nj2/QresXrJxlLu5HKFVdBqvf3RNqeTwQ2LeczbwKU85kZiHnY28DqqASMoihKLcw6d7y2juPvAsrAosDOsUWltB1Nm2ByHGes4zg7ICubczQTsJqOC1VeiBC5MhvlfOYpRLR9OjJROSvZiJRBmGi3V1p3YaX1ORqZTG2byhWbzXXtILv9bTmfKScZiDJ6KOcz7wAX2+GJc6patFVJG9ihJha/yr7APMAzv3ntjfWBRYB+pOLrK5Q60iuUOtKvlDrS1cnQmOB5B/Y66IMPARgThhO9gjfaK/m0HXqESeWKuyHGOasCbwI/LuczJ9tk4v8o5zNvIBPaEKnw32nEg1UURWlNDrXbKzBB7XNHE8wALrSjCRh3UH1sRRmIuhKLjuO85DjOi0O8Xqjz3J7jOJ8AUxEb9K3CMBzIYfpoJDtfeb1azzXbgXI+cw+yWgzQncoVj0gyHuWrpHLFVYmqxyYPsbvSIpTzGZ+o+vTMoQwtRopUrrgQoskC+n5T4uccYAoiw/GTOXz/B4gT+WtAaQTjanq8gjcOm/Rf5osvrh4TOTcfiwmmD3DYacCywJ6ljvSGVV3IBLds8PmUC1abOpWZjjN+8enTTx36oJZGE4sjRCpXnD+VK16DfPbNBzyAtD4/PNAx5XzmAeAUO7wslSt+u/GRKoqitDDG9YAfM/y541VIl+iq9nyKUjP1Viw+OofX7xHtn+WAj4B6W6KfR0Tfv4+05hUcx1llgH3PQIRKK69l6rxmW1DOZ64nanc6K5UrZgfbXxlxKvoYv9bqsVHHichiyY+QloVmYDdE06ofeDDhWJRRRjmfeQtZHIQ5Vy1uare/Uyfyr7At8A3grdtfe3MVpHPjaeDXc9q51JH+DjCro+7ZpY50Vc93Y+CI3YKP+wGCMWP3zl628nLDiry5qSQW11Izu8YxS+vz7shk9wRgc3tPGIqTgYdRvUVFUZRqqMwd78AEL9d9FhPM2kY9YZA9FWVA6jVv2T0Mwz1me+0WhuGPEOOVpYAb6zz3tDAM/xOG4V/CMDwaeI4B3uBhGE4Nw/CjygtxpVYGoZzP9ABn2+FVqVwxk2Q8ipDKFRcDdrXDSQmGEj/GTWHcrycdRpKU85lXgAvs8MxUrjg2yXiszmrFtGWyJnaUBnE2klBfH9hwtu+pvuLATABYavr0m+YTozyAo63xypzI2+3dyHPQ2kBXVVcywbSNPvt801WnTp0+bYzjLDJj5m+HEXez8wrS2TIX8L2EYxmVpHLF3ZEk+CpErc+nzN76PBCz6C2+BXhEpgKKoijKrBh3cawWM/HMHSvzlE6M26yGk0oTE7vGYhiGzwGXAWfGdMoxSLuUEh85RKdpLLIivF7C8SiRntZfgD8kHEt8GHcl4B/Acxh3tLuODkUe+BBYjehBICl+DHwbSULMUbNNUYZLOZ95HbjSDk+ofD2VKy4JrGGHD4x0XM2MV/DWQTo2pl39xtvLAOOABzDBHKuKSx3pHyPVn18ABxM9e51e6khX9ew0z4kf/tebOu1EgMfnnWf1Z89Y/JdDHdOK2AUUbYduALb1+VrgGqT1+XdI6/MjtZ7LmrpU9Bb3SeWKaiagKIryVfZDciR/Bp4Y9tlM8G/EcBLkeUJRaqJR5i1vIauVNeE4zhmO4/zQcZyU1Vo8A6lyqKv6UZkz5XxmJrA3Ut0wL9BnW1eUBEjliv/T0wLOH2XVYz3IJGNxoqqatqScz7xP5Ax9SipXnCfBcCqJg0I5n9FKb6WRnIkkvTZM5YoVs5aKfs9z5Xzm7WTCalomACw6fcY9y06fvq392jFz2rHUkXaI7quXpftLLwLnIbqVKaLPlSH51UILnvGNL6a/OnXMGO6df/7zMO5q9f4HmhxNLMaM1Yd+GtHsnQkcR/Wtz3OknM88iLRFg+gtdgw7UEVRlNGCcccTfcafN0hHQ61Msts9MK4b0zmVNiH2xKLjOIsCe1GfkcoSSPXM84jm1/8Bm4VhqK1SMVPOZ74AtgeeBL4G3JfKFZdNNqq2paKn9SZwS8KxxIdxNwG2ACotUHth3Havjp2M3BuXJUrujSipXDEF/NwOL0oiBqV9KOcz/wWutsPj7VbboOeAV/CWQT4POOuddxcGHOA2TPD0AIdsi7Q9f4I1vUj3lz4j+jkfV+pIf62aa/tZP3x37Ni9AW5bcIG53hg79jcYd8F6/y9NTCWxuF4qV5wr0UhanFSu6KRyxT2QpGIaeAPYuJzPnGYXsIfLKcBDiMboralccb4YzqkoijIa2B6RnnsduC3G8z6IdJotQGT6qihVUa8r9EMDvJ5BDFzWYJa2p2oJw3CvMAxTYRiOD8NwiTAMf6JJxcZRzmc+BToRR85lkOTioslG1V5YQ4ND7fDicj4zNcl4YsO4cyGVMyDJtGvsvy+232tLyvnM50ST/mNSuWJVk/6YOQBJWDxQzmf6E7i+0n7kgenAJqlccV00sTgQBwJzLTRjxl+/N2Xqj5Dqr+PntGOpIz2OqAK6J91fmrXy8zrARxYNj6324tPGOPePC8Onpo1xuNZdaEXgSozbFC72MfJ3xGBwAUTDT6mDVK64AOL4fDXS+XI/0vr8aFzXsHqLOyNdUKsR6X8piqK0L/K5XJk7XoQJpsV37iAk0rY9BOMmqgmvtBb1ViyOQSams74AXkKSCKuFYXjz8MNTGk05n3kP2AypokojbdHqljhyrINU5k5FtElHC/sBqwLvAScBRwEfIIsOByYYVzNwPTK5/RqidzpiWIfNve3wwpG8ttK+WJf7gh1eCSyN3PMeTyqmZsMrePMiWrt0v//h3PbL12CCgZL/ewErAe8gkhP/I91fmgEcaYcHlzrSqWpi8LN++IXjHAtw24IL8NbYsduTUGV1o7DJqooWlbZD10EqV1wNqVLcFUl+Hwv8tBGyBlZvcSdEb3GvVK646xCHKIqijHZ+AHwHmAJc3oDz34DM31JEHU6KMiT1ukJvGIbhRrO9Ng7DcJswDI8Mw1CrYFoI26q2GZL4WQe4xer+KY1not3eOGq0xoy7CJE20vGY4ANM8A5wtP3aKe3sEm0ntpWE4oQRliDYEVgEeJlIoFlRRoIzEFmEip7v47aCVxF2BhadZ+bMt7b85NNVkMTrSXPasdSRnh840Q5PSfeX5qSTeh9ijDM3cFoNcTwEPD5tjMOVCy8E0INx16nh+FZAdRbrwLY+7wn8CehAWvA2Kuczp8fU+jxHyvnMQ0R/C5emcsV0o66lKIrSAky02+sxwbuxn90EnxMlLCcOsqeifIlGmbcoLUY5n/knkAE+B34GXJnKFfX90UBsQmkbOzx/sH1bDIMkr/4OXDHL169EqhwWAs4Z+bCairuBxxA3tzkmD+LGtt1XXN4utglORRkRyvnMC8gqeAVtg7Z4Bc/BPrzvEXw8w/YdTcYE/x3gkImIttJLDFDpnu4vhUjVYgjsVOpIr11NLH7WD7FSNrcuuMDMN8eOHQfcinEXq+5/0xL8L7Fo74vKEMzS+nwV0vp8H9L6/NgIhXAqov01H7L4rXqLiqK0H8ZdAfiFHU1q4JUuRiRsfoRx12zgdZRRRFWJI8dxdqvn1ejglXgp5zN/BLZDqkp2o81dfEeAg4CxwMPlfOZvSQcTC8ZdlajVeSImmB59L5hhvxcCO2HcjUY+wObAOn9XWhWztrWs0awLrIm0Tlw1AtdTlNk5HWmdBNFkU4SNgVXHhuHUXT766BuIBuAZc9qx1JFejOjecVy6vzSgtlK6v/QsUTL3bOsiPSR+1n8EeGSG44y58GtugGgw3ziKtJb+hDiVfwNp9VIGIZUrekStzzOQ7oOflfOZd0Yqhln0Ft9E9BZVykNRlHbkYCR/cz8m+GfDrmKCV4lMYSY07DrKqKLairRr63hVzBqUFqKczxQR7SaAI1K5YneS8YxWrI7lvnY4KcFQ4kPEhM9DkqW/wQQPfnWf4M/ApXZ0Ecad+yv7tAnlfOYp4HbkPjzHJELMVKoVb7LaqooyopTzmX8hyYFDyvnMXxMOp5mYALDFJ59OWWhmCHAOJhjob/QYpOr7r8Cvqjj3cUhb9YZIN0K1nAhw1wLzz//aXGOnAJtSgxFMM2Nb8P9sh9oOPQC29Xkvotbn14ANy/lMvpGtzwNRzmfeQvQWZwJ7pnJFLWBQFKV9MO5CRDrpk0bgipVr7IRxlxyB6yktTrWJxRXqeH0z7mCVkaGczxSIKiLOUbHshrArYt7xAqNH664TcXudBhw+yH7HIoYDaVS74xikAqQzlSv+sFEXSeWKXwe2tcOLGnUdRRmKcj7zq3I+o9VGFq/grYTcO9kj+MhF7o3nzWnfUkd6eaTSHSCX7i8NmdxJ95deIZocnFXqSM9VTVx+1n8MeAjHmevQJRb/o/2ywbibDHZcC6E6i4NgW5+vRyRM5gHuQVqffz/ogQ2mnM88jMitAFyieouKorQRuwMLAs8jchSNxQRPAU8hWs37Nfx6SstTbWJxArBIGIYvh2H4MtLK+HZlPNCrcWErI8A5wLn231encsWfJhnMaMJqV1bKyi8YFVp3UnlYeb+chwleGHjf4APgCDs6EeMu1+DomhZbwVXRoTyrgXpf+wJzAU+U85lnGnQNRVFq52DAWffzz6eu8MV0gFMwwScD7Hsy8oD/MLW1kucRh8dVgD1qOO5EgNL4uTcozT3uJsABbsK4I2k41Sg0sTgAqVxxdaSic2dk4SsHdJbzmfhNAurjdMSYaD7gVtsBoiiKMnoRKZJD7Oh8TDBSVeOT7PZAjDt+hK6ptCjVJhYnItVFFV4Ctoo9GqVpsBpwRyD6THMBt6VyxdHmDJkUmyJtRR8jsgGjgUOAlRD9o2ocSK9DJnbzMUB1ThtxEvAZ8H1g67hPnsoV5wb2t8PJcZ9fUZT68AqeC+wJsHvw8XigTOTE+CVKHWkPqXQHOMqas1RFur/0IXCKHZ5sXaWHxM/6v0dMduba6RtLTQOeBRYDekeBjMUTdrtKKldcNNFImgTb+rwPUqHybeBV4EflfObMJFqfB8Iuxu6CPG+siuotKooy+ukEVgQ+QOZQI8XtiAzGksD2I3hdpQWpNrH4Fl9ubVYXvTbAPkjuCdyLJICK2nYSCxPt9qpyPvNRkoHEguhuHG9Hx2CCj4c+JggRI5cZwNYYd/PGBdjclPOZN4EeOzw9lSuOi/kSWyMOsm8iDwiKojQHewALpKZ9MXPdz6cAnIgJpg6w7+nIs9dt6f7S03Vc6xLgReReUIt28okA0x1n13O/tvChQIAYQZ1ZRwxNg62+K9nheknG0gykcsUFkYXky5HW57uB75TzmT809MLGXQ/jHoRxa/rcs3qLOyJ6i3ukcsVsQ+JTFEVpDiba7eWY4NMRu6oJviCSUJpo9fQVZY5Um1gsAic4jvOY4zh32a91O45z1yCvOxsUszKClPOZLxBttj8BiwD3pXLFZZKNqnWxidnNEDmB0bLKfipiJvAXoFD1USbwgfPtaDLGnSf+0FqGcxBttW8RmSfFxS/t9rJyPjOgg6yiKCOHV/DGYg2Vdv3o4zEO/AO4cU77ljrSGyDVCjOo00DFukcfbYdHljrSS1VznJ/1/4hoOY29ZuGFskDFMGMixt124CNbAm2HBlK54hpI6/NOyHvsSODnDW99Nm4WeAyppD+n1sPL+cwj2MQ3cHEqV1wlvuAURVGaBOOuiRiwzSAZnfTLgSnAWsD6CVxfaRFq0Vg8BxiHtB2EwLKAN8RLGQWU85lPgQwiFrssklxcJNmoWpaKPsad5XzmxUQjiQPjfocoETahDs0PA7yOlPcfFWNkLYWtXK20KhornD9sUrnid5CHgOkM0GKpKEoidALfXGjGDH7+yacg1d5f0dstdaQdourAK9P9pX8N45q3Im2u8xMZYFRDJXmzm7fCcv+cJZ6rMe63hhFP0rR1YtG2Pu+LvCe+BfwX+GE5nzm74a3Pxj0CkYIZa79yCMbdqY4znYG066veoqIoo5WKLv9tmOC/I351E7yHmHmBmm4qg1BVYjEMw0/DMDwmDMN1wzBcEWnHmRiG4QqDvNQVehRhV643RXQWVgF+m8oV50s2qtbCJmMr7TqTEgwlHqQc/nzkfnAzJqi9ZUrapg+zo6Mx7orxBdhyXIa0Ki4JHBrTOSsOsreX85nXYzqnoijDZwLANh9/yrxh+EfgtwPstyXSevwZosdaN1aX8XA73LvUka5K2sTP+k8hrsBjgePs6zHEnfJ2jNuqzwKVxOL/pXLFeRONZIRJ5YoLATchnzvjkc6k75TzmScGPXC4GHcMxj0bOMt+5RwkOQhwJcZdvZbTzaK3+AbybKo6woqijB5Ebqqy6DIpwUgqHWZbYdzlE4xDaWKqrVicnY2QFUKljSjnM68AmwMfIppEvQ3QgxvN7APMC/wVmZS1OtsCGwCfM7xqw1sQh8fxwAXtqt9h25QrbY5HpnLFxYdzPmtIsLMd6mRLUZoEr+CtDmw0NgzZ8aOPAY62urNfotSRngvRVgSYlO4vvTHca6f7S78HfoMkCfM1HFqpWtzVW2G5FYAdEP3t1YBLWvS+/RKSkBoHrJ1wLCNGKldcE2l93gFprTsC2KKcz7zX0AuLjuI1RMntIzDBEYhG8/3I89EdGHfhWk5bzmfeJtJb3D2VK+4eV8iKoigJcwAwN/AkJngysShM8A9krjaGSGJJUb5EXYnFMAwfDcPwnbiDUZqfcj7zd6SFa4rdXp7KFVtxQjGi2ARs5UZ8vnXdbl2MOy+RJtKZwyrNlwn1L4EvgJ8hFTrtyi2IVuUCRIY49bInIsL/V6CxAvyKotTCBIAff/oZX58x415M8OgA+2WBNPA+UYVXHOSQhNIWpY70D6s5wM/6TwN9yHPjCZjgDSQxNRPRXYxbG7bh2M/htmmHtq3P+wNPAisTtT6fMwKtz/MjCe3dkPdeFhPIM4RIAOwEvIzIolyPcWuan5TzmUeBE+zw4lSuuGo8gSuKoiSEaM8fYEeTEoykwiS73QfjxiLZpIwu6kosOsJ+juP8yXGcdx3HmTGH1/S4g1WaA+sSuD3ycLg7URuLMjBbAcsAbwO/SjiWOOgGlkMmJmcP+2wmeH6W81xgJyFth53cVao/90/linW1hqdyxbGI6zbA5JZPZI800q43rIpRRZkTXsFb3AnDXQB2lWrFY+a0X6kjPS9R6/Np6f5SEFcM6f7S80Saq+eUOtLVPgsau93JK3jfxgSPEFVZT8a4a8UV4wjSFolF2/p8M+IOPh5JEje+9RnAuIsglS4/QzoctsQE1315n+A9YGtgKrJofVwdVzqDqPJR9RYVRWl1dgCWAF4F7kg4FhBJlH8DLpGRm6L8j3pboc8CLkZaaW4ATp7D65QBj1ZannI+81uktRfgqFSuGJcm3Ghlot1eUs5npiQZyLAx7tLM4i6KCT6L6cynIRULy1LfpGJUUM5nHkRcWMchjtv18DMgBXyATCaV2rgCeAvj7pp0IMqoY9/QceZedepUVp867VeY4NkB9jsYWBpZvLm4AXGcBHwC/B+wXTUH+Fn/L8BdVKoWhbMQfcjxwG0Y92vxh9pQKonF9VO5Yr3PxE2NNfH6C9CFGHkdzki0PgMYdxngcWAd5PPoJ5igOOd9g2eIqnMMxv1ZLZeyC3O7IoZwaZJxT1UURRk+Ii8y0Y4mY4IvEoxGEIPOC+xoQq2V5crop943RBa4PQzD74ZhODEMw5Pm9IozUKX5KOcz1yAtVQDnpnLFnQfbv11J5YrfR8T3pwGXJhxOHOQRB8Y/AL2xnVUSlBXns26M2xHbuVuPo4AQ2CGVK363juMrbfdXlfOZuBK/7YFxu5A2cge4uM0NhZQY8Qre3OPC8FCAnT/6eMaYAeQOSh3prxEt3hyf7i/FvhiV7i+9RdRefUapIz2+ykON3e7oFby0nWhkgTKwAnBti+kt/g1JsLrAqGqfta3PByCtzysBrwAblPOZnhGpYjduGngCMVV5DdgAEwxeIWmCa5DnJAe4sdb772x6i9lUrrhHHZEriqIkzY+ANRDjtisSjmVWCsBHwLeAzRKORWky6k0szou0NSjKWUSaC9emcsXNE4ylWakky24u5zNvJhrJcDHuOogDYwhMmJPhwDC5C2nRGgdc1GIT1Ngo5zPPATfa4Zm16JimcsVvIw7uIY2pdBq9SHVNJfkfIFqX12PcuZILShktOGG47ReOs+hi02fwk08/vxoT/GeAXY8CFgb+jnSFNIpzEfOSFYikEwbFz/rPIlp5DpWqRRN8gJh5TQO2IDLnaHrK+cx04I92uEGSscRJKld0kYW/ixHh/98irc8jI/4vzwq/RzoQ+oH1rPh/NUwEnkL+Bmp2HS/nM48RJe0vSuWKq9VyvKIoShNQ6QQsYIL3E41kVkzwMXClHU1MMBKlCak3sfgg0j6jtDl21bsbuAmYC7jdVugpQCpXXJqozez8JGMZNlLyXvk/XIsJ/hL/NYIQOAQxB9oY0RdpV45HJuo/RhKF1XKQ3faV85mXYo9qtCLv72uRyezTiEvsR0i18Rx18BSlWryC5yw0c6YB2P7jj6fPG4ZmTvuVOtLLEC1GHZ3uL81oVEzp/tKnRAmY422lZDUYu+3yCp5U+cnnwSH262dg3KpMYZqEUaWzmMoV10Jan7dDWp8PA7Ys5zMjMzk17k+RecIiSIJwA0zwSvXHB1ORRPXbSMXOZXUsMuYRSZGK3qIaDSiK0hoYdyXg53Z0wWC7JsRkpCp8U4y7StLBKM1DvYnFA4F1HMc5xnGcReMMSGk9rK7NHshD3HxAMZUrtnMb66wciCRcHyvnMwNpabUKuwDfQ9rGGpdoMcFLwOl21INxF2rYtZqYcj5TJtKIOrMa/a9UrrggYqgE8sGvVM8hSBL3M2AXW01WSdKeYCtwFKUu5pk5c71g7NiVx4UhP/3ks0swwesD7Hoi4ub+e2DOWnTxci3wD2DW9utB8bP+c8DtSNXiibN863LgekR/uxfjLhVrpI1jVCQWbevzQUgF5oqIZvEPyvnMeSNm4GXcnZHOg/mQZ8IfY4J3az9P8CqiCTkDefY4aPADvsxseosdiFN0W3ZAKIrSchyMfL7egwn6kw7mK8g87U47OmSwXZX2ot7E4vPANxGDlrcdx/nUcZyPZnvF5mCoND/lfGYassL8NLAocJ+t1mtbUrnifMB+djgpwVCGj3EXQCoAAE7FBI1u6T4b+A/wdSJn1HbkNKRqbg1gpyr23xVYEPgXKldRPcZdjej93Y0J/mX/fSPi4i5GZfJ3oCg18/XpM84B2PyTT6elpk8/cU77lDrSaUTfE+CodH+p4ckgWxF5pB0eUupIL1/loZX78nZewfOASsX5AUiicing5haREXgKSWAtm8oVl0s6mHqwrc+3IAtKcyOTvu+U85mnRiwI4x6KtO7Phdw7t8AEn9Z/vuARRBYA4DyMu34th5fzmXeQrodKklH1FhVFaW6M6xI9B0xKMJKhqHSw7YZxF0k0EqVpqDexeDvyAHOdfd1ivzbrqxls0ZURpJzPfAJkkKTGcsC9qVyx1Rwi42RnJMlaRlbwW5kckuR7kZH4oDPBFKIKhYMx7hoNv2YTYl07/5fQTeWKAxos2GqMimnLRbZiQxkK445HJsHjkQqxy6LvBSFSdfxfpAJo0sgHqLQ6P7+i45svj5trHYCNPvv8UqtJOCdOQ57L7kz3lwY3uYiXe4CHkL+B06o5wM/6PnCrHUaJUkkkbYNUtm8InBxjnA2hnM98Cjxjhy1XtWgNvp5BFne/QLS5tirnMwO9z+LFuA7GPRPR7AQ4D9gNE0yL4eznInOMuYBba62CLeczjwPH2eFFqVzRiyEmRVGURrEnou/9T+B3CccyGI8Bf0XkJvZJNhSlWagrsRiG4e5hGO4x1CvuYJXmx64Qb4q0n6wG/DaVK86bbFQjj03yTLTDC8r5TMN0shqOcVcgEuPvtvpHI3Dd4H7gNqRa7GKrgdeOnI/8PS3P4AYLGwNpZEJ/bePDGjWcAqwOvAvs/RVDIkkC7YaY4eyFcbca8QiVlubrM6ZfMtNxWHPK1GmbfPb5HGUkSh3pdYGtkOqquqQmero6f9TT1blsrcfZysgj7HDnUkd6rSoPPQn5u9jGK3jR4o8Jngf2sqOjMW5nrTElQMu1Q9vW518izsvfRBYxf1DOZyaNYOvzXMBVRFWvOeQ5IZ6FLbkf74VMsr+OJBfH1XiWM4F7EYmBW1RvUVGUpsS4Y4laiyc1wCAzPiS2SXb0yzruy8oopF0n6koDKeczLwObAx8C6wO9qVyxFdqh4uQnwCpIkufqhGMZLmchlSwPEWlqjBSHAp8C6wHZEb52U1DOZz4jqgg6zra8zYlKteJ15Xzmo8ZHNgow7o+IkuZ7D9jiLy15Z9vRFRj3G40PThkNXH3eMov/Y+65NwFYe8qUa+bUGlrqSDtElcnXpvtL/6z1Oj1dnVsCjwB/6OnqXLDW49P9pWeInOjPtjENip/1/4E4D0Nk6GJHwS1EovPX2wWqZqalEoupXHFhZOHtQqT1+TfAWuV85k8jFoS4Nd+BtBjPBPbCBGfGPhk2wSfA1ogsyA+Ac2o53Fbv7wa8hugtXqJ6i4qiNCFbAingPURWotn5FWKytQyyMKq0OVUnFh3HWavWVyMDV5qbcj7jA1sg7r4/By5rswe5iqvnNeV8pnX1RiXxsi0yaZg44qtnIuBe0fI6q411PK4FSojL5lGzfzOVKy6P/L1BZPiiDIZxF0akPBzgSkwwVNL8BKTtY1HgmjauoFVq4I255rr8o7FjnaWmT5++/BfTJwyw20+BHwJTmT1BVwU9XZ1zEyVblqX+9uNjbQwb25iq4WSkavEXXsH7zmzfOwLRL1wYuA3jzlNnXCPBH+x2tWaXcEnlimsjrc9bI63PE4CtR6z1GcC4XwPuR57vpgBbYYLGLaJKFexudnQIxq1Gc/h/zKK3WDGD2XPwIxRFUUaciXZ7GSb4PMlAqkI62C6xo4kJRqI0CbVMjP6MGHNU86rsq7QxVtumC0lK7UmV2k2tTipX/BaiNRki1QStiZTkV8R5L8MEfkKRTELaoBajTd5Ds1POZ6YTObZOnIMx0gHI/fyhcj5Tc7VTmzIZ0YJ9AamMHRx5gNoZmURvSlQhqihz5NOTFl70T/PMswVAx9Rpv/rF4a9/RUai1JEeS1SteEG6v/TfOi51ELAS8LEdH9LT1fndWk+S7i+9TFRleJaNbVD8rF8CbrZD86Vvisbe9kj1xVqI9l5TUs5n3gL+jSw0rJtwOHPEtj4fjLQ+r4C0Pq9fzmcuGLHWZwDjLo3oa62PdKZsigkaryMtiz+n29GVGHf1Wg4v5zO/R5LnAJNTuWJNxyuKojQM434X2ACYDlyccDS1cCmywLUuxv1e0sEoyVJLYnEPJDlUzauyr9LmlPOZu4B97fDoVK44UMXGaKKij9FXzmf+nWgkw2MvxI34Q6RaKxlM8AWRtuB+GPf/EoslWe5CqmrmZZYJvNUw3dsOWzeRPZIYtwtJEopbqLTaVXFc8E8iLbqzrJu0osyRuxeY75IX5x43Zp6ZM2eWxs998AC77QR4yH02P8A+A9LT1bko0f35UKQ1aQxwRU9XZz0SJKcD7wOrArtXeczJyN/SFl7B+3JC0wSvIH9rIbA/xt2ljphGiqZth56l9fkCYBzSgvydcj4zsov4xv02kthcDdH+/SEmeHwEIzgBqZScF7jDVp7XwtmIWdE8wK2pXLFm2QBFUZQGUJkf92KC1xKNpBZEQqiyuNgOc3xlEKpOLIZhWKj11cjAldahnM9cRbRKPCmVK+6YZDyNxLZQVYyLJiUYyvCQh/VTKyNM8G6C0YAJHkX0RhzgEltN2VbYipSKQP6eqVwxbf/dhbTnvgL0JRFbS2HcZZAVVoDTMMEfazzDRcjEVNykxVVaUb6McZd5eL75tgFYdvr04gN7lT6cfZdSR3o8Yh4EcGa6v/R+HVc6EWk1fg6RTJiIJCm/Qx0P+en+0odE9/5TSh3p+Yc6xs/6zwM32aH5yg4muI+oPfsyjLtqrXGNEE2ZWEzliv/Hl1ufDwG2LeczH45oILKo93uk0vtfwPoj3slgghlIMv5lYEVEv7PqucwseouvAt8CLm0zmR5FUZoN434dkWqA1pw7VrrbtlcN8vZGNaKUkeIMoharQipX3DTJYBrIXsB8wN+BhxOOZTgcDywO9NM8JflHIOLt3yWqgm0ryvnME4hI/xjgDDshqlRCXWJbppWBkAnotUgi5mmipE4N5whCpCL/XcRNui3b85XBeW783Oc8Pt+8YwBeGjeue4DdDkDc3l8n+nysmp6uzg6iau7u7t6+Gd29fW8RVdWe3NPVmar1vMg9/yXEhfewKo85Bala7PQK3pzaoU4Bfod8Pt6OcZuxUqySWPxeKldMfMHAtj5PQCrVV0B+J+uV85kLR7T1GcC4myLPNIshckc/wATlEY3hf7EE7yFJ1qlAJ3BcLYeX85l3ifQWdyJyMFcURUmCA5FK9D9ggj8nHUzNmOAZ4HFgLqJnEqUN0cSiMiLYh+BKm9Y44A67Cj9qsM7XlSTPpBF/8I8LaXWqtHMfaluRk0fK7SuVr6dj3CWSDCdBjkEm8Fsik/61kAnWlUkG1SJMAH4MfAbsUvd7W96LlcloN8b9cTzhKaMC4367uMD82wMsMmPGE8/u/vevSGKUOtIuUULEpPtLn9VxpbOAscBvu3v7Hpzl61cjD/nzARf1dHXWVJGV7i9NJdJ0PbLUkV5yqGP8rP8v4Ho7NF/ZQSrNdkaceb+NaOQ1W6XYv4F3kGrkmjUq48R2P9yBVK+MA25HXJ9HftJp3B2Ravj5gQeAjTHBOyMex5diCp5BEvMABuP+rJbDy/nMH5DPUoALVW9RUZREMO68wP52NCnBSIZLpWpxP/t/UtoQTSwqI4ZtQckiD6bzA3dbo5PRwpZIi9C7RG1hrUgPsupUxAT3Jh3MbFwCPItUnJ2VbCjJUM5nSsBVdlhxgr3ZVmEoAyF6iGfYUTcm+NfwzhfcBVxuR4U2dixXZuO9MWPydy4wvwPw/tixZoDdDkckDJ4Hrqn1Gj1dnT9GHHmnE1UoAtDd2zcT2A9pm/0ZsF2t5wduQap6F0DaravhFKQK7KdewVvnK9+VZNR2NubtEdOZpsEuBibeDp3KFb+HtD7/ApiGGEVtN+KtzwDGPQR5nhmHLAxnMMHHgx80QpjgGkTWwkFkKVas8QznAHejeouKoiTHTkgl+MtIR1Krcifyf1gM+T8pbYgmFpURpZzPTENaWP6M3HzuT+WKo0WPYaLdXlrOZz5PMpC6Me7miKP1dGCg9r3kkKqXSpl9FuM2lRbWCGKAWd9jkxOKozUQHcQbkUqkInBZTGc+DKlyWhq4tAkrsJSRxrjfLS4w/y8+GzOG8TNnvoAspH2JUkd6KaIW42PS/aWaJAx6ujrHAufa4cXdvX3Pz75Pd29fiSiRfn5PV+fCtVwj3V8KkeQnwL6ljnTHUMf4Wf8F4Do7NHPcSTRNK+c9F+N+NQGZLIklFm3r80QbQwp4EWl9viiB1mcH455GVIVyIbCzdfpuJiYCTyGLjbdj3PmqPXCWxe6K3uJlqreoKMqIIc+ME+3oQkzQunJGEnvFQHKCPg+3J5pYVEaccj7zMZK8+jeiL3WvdTxsWVK54trIROQLpKqu9TDuOOA8O7oAE3xlstoUmOBJorbfizFuPc6nLU05n3md6Hf1ZDmf+UuS8bQApyB6iO8Ce1udxOFjgk+R9s4ZSCXWrrGcV2lZpsPpNy0khU9Tx4w5y8/6c3qvnYC0KT8F/LqOy+yBvJ8/IDJFmRNnICYbS1GH43S6v/QY4kY/lihJORSnIgtTm3kFb90B9rkAcTgeB9yCcRerNbYGUkksrp/KFUfsGdm2Pv8aua+PA25FWp9H/t4un6mXE7UKHwdMwAQzRzyWoTDBVGBb4G1gDcQcqOoJra3070Lu4TsC+zQiTEVRlDnwY2A14FOiTqRW5irk/+IBGyUci5IAmlhUEqGcz7wNbAa8idyA7krliq2syVBx37zFJn1akQOADiT5UrupxciSA95D3jsHD7HvaOUk5Hc2al3WY8G4GxJVSO1t9RFjPH/wNFF11mSMu0Ks51daB+Nu/Oh882762ri5GBOGHyJO9l+i1JFemSh5cZStDKyanq7OBYlcm0/u7u17b6B9u3v7piAt0QD79XR1rl/LtSoxIkmXX5Q60hsMtbOf9V8ECnZ40hx3ksT+Xsji4rLADbU4+zaYZ5Fq8EWQz8OGk8oVv2+vuyXS+nwQ0FXOZ4KRuP6XEG2sW4G9ES3ffTHBabEtxjQCE7xKlBzchRpb7K0pWkVT9IJUrrhGvAEqiqLMkYl2ew0m+DDBOOJB/g/X2tHExOJQEqNZHuSUNqScz7yEJBc/AjYAbrYGKC1FKlf8OvJQC60qvCsVI5VJ4LFN/wEnrpA5OzoZ4y6dZDhJUM5nppXzmUvL+Uw56ViaFuMujLRmOsCVmODOBl3pDMS5dUEkSdJy9zFlmEiV1Bk32mrFmY5zqZ/152TIciqiYXt3ur/0aB1XOgpYEknKXTzUzt29fY8QaThe3tPVOXctF0v3l/qJKsTPLnWkq6kGq1QtbuIVvDm3FJvgI2AbJIm3GZExV6KU85kvgCftsKHt0Lb1+TCkSnJ54AVg3XI+c3Ei5m9yv7wX0XaUSkATXDHicdSDCR5B/jYAzsO4tSbRexCZjPGo3qKiKI3GuN9CuvdAqvhHC5V26E6Mu1KikSgjjiYWlUQp5zN/QwTopyKr9Ze0oMbNAUjr0h8ScWyMh5MQjaLnaJ1y/KuRCeACyKRAUWZnMlIR9QLiSt8YRPtzV+BjYD2ipLfSPmzZP/e47z097zwQhjOYQ9Kv1JFeGzEtCYkqpKqmp6tzOSLt2yO6e/uq1bs7AqlEX4XZjF6qxCDtTd+nCiMYP+uXkfszDFS1CGACn8gN8ySMu0kdsTWChusspnLFRRCh/opZ2i1I6/MzjbrmoBj368CjwA+Rxd7NMEE9bfpJci7yc5wLuBXjLlXtgbPoLf4XWBm4vAWfRRVFaR0Osds+TPDvRCOJE5HRuhtZ0G/XjrK2RROLSuKU85nHgB2Qtpu9af423P+RyhXnQRKL0LrVih7R5G6iTZI0P6L3dCDyvunCuD9OOCKlmTBuF6J/OBPYFRN80tjrBS8h7q0ABuN+r6HXU5oH444FTq9UK+I4t/lZ/79z2LOic3hjur/0tzqudAbiYPsIon1YFbZdupJYP76nq3PlWi6a7i+9CZxViaHUka6m6vE0RHN4Y6/g/XDAvUxwHXAFMgm5CeMuU0tsDaKhicVUrrgO0vq8BbKoegCwQzmf+agR1xsS464MPIHodr4J/BAT1FNNmyxRi/0/ga8jycVx1R5ezmfeQ7pPpiPPpPs2IkxFUdoc434N0UqGSC99NFEx/doD4y6UaCTKiKKJRaUpKOczvyFKbh2byhVbZZVjJ8Td+hWk+qC1kPa9Sci94HbbTtQ6mOBZ4CI7usi6/yrtjiQnLrWjU60T7UhwPVIxMxa4EeMuMELXVZJl1/fGjEkXF5i/Mj5/9h1KHelNEKH2acDxtV6gp6vz+8jnTQgc1t3bV2ur7I3A75BWz0t7ujprrcbqQZJO3yRaTBsQP+u/QlT9PnDVonAIkmhbDDFzqToZ1CCeRBYkVkjlirHJbNjW527gcWA54D9I6/OlibQ+Axj3u4iMQ8rGsz4meC6RWOJAFpC2RqoufwCcU8vh5Xzmj0TVxOencsU1Y41PURRFimjmA3zg4YRjaQS/A0qIPNCeCceijCCaWFSahnI+cwXRhOv8VK7YNdj+SWPbZCba4YXlfGZ6guHUy5bAxkjVRD0tcs3A8cBbwLeJ2gSVdkVMIApIa//TREYXVeMVvB97Be9XXsFbrrZrByGSdHkNWAlpzVNGM7KYcdKtCy3AF44D8p57ctZdSh3pMUTVipek+0vlWi5hk4CVqoZru3v7nq01TJuIPACYgtzzd6vl+HR/6VPEzRrghFJHeuEqDjsdSaRu6BW8gR0iTTAFabEOgHWBM2uJLW5s5WAluVaP4c1XSOWKiyJVpucgrbq9wHfL+UzNv8vYMO5PkOrXxZHE7g8wwYuJxRMX0opXeX8fgnF3qvEMPcBvifQWteJGUZR4EA3uSvHMpKY2xqoX+T9VFlgPtl0dShugiUWl2TgNqUBzgOtTueJPEo5nMDZCXIk/o3V0CSNkQlzRJuyxrZythwkCItff4zBuKsFolOSZgCROPgN2wQRf1HKwV/CWQqoOu4CbvYJX2wORCd5HJrUhsA/G3bKm45VWY/8vYLmbF1pwph1P8rP+7BOF7YG1EA3O0+q4xvZIwu1T4Lh6A+3u7XuBqHqwp6erc7EaT3EN0ma6CFVoRNp28Ir5x0lewRu4StIELyAadwCHYtxtaowtbmJrh07liusiibtOZBFvf2DHxFqfAYy7PaKDtQDwELAhJngrsXjiRoy6TrejKzHu6tUeaqtHd0c6UVZC9RYVRYmPrRDt73eBmxKOpZFcD3yAdDl0JhyLMkJoYlFpKuwD3QRkYj8O+HUqV1w72agGZILdXlvOZz5INJL6mIjc8N9AtLtixyt4c3kF7wKv4JlBJ5XD50ZEeH5eWlXrUhk+xl2N6L3cjQn+Vcvh9j16CZI4ATFiOWrgIwaKI3iIKGl/ZS0mAkoLYdwFgePunX8+3h87dgxyL71t1l2sHmGlavbsdH/pnVou0dPVOQ9RBd+Z3b19rw8z6h6k/WpRajS9SveXpgNH2uGEUke6moreM5Bk2gZIwn9gJBlU0XK8xrpmJsWwE4upXHFMKlc8AngMmUj+G1innM9clljrM4BxDwJ+hTxj3Qb8zLp0jzZOAO5HngvusK7XVVHOZ95HdBanI4tM+zUiQEVR2o6JdnuJrdYfnZjgM+ByO5ow2K7K6EETi0rTUc5nZiAVPw8iq+l3p3LFmsTmG00qV1wJcbMGuCDJWOpCEh2VypdcA40tDkVK/k8EdmzQNSpl9wchk4AtMa6ujrUbUoF7I9K+VgQuq+MsXcAvkPdRJcFxklfw1qrjXMch7ZSLIUkSrXgZfRwWwmLXLrxQZXJwsZ/1Z3dq3gdYEZFrqEekfQKwPPAqNSYC50R3b98XiClFCOzW09VZq+nV3Uj77HiqkBnws/5rRJOLwasWhWORRNyCwG0Yd74a44uLP9jtGvW0ws7S+nwW0vr8K2Dtcj7z19girBXjOhj3JGAy0hVyMbADJpiaWEyNRIzodgJeRv4Gr7dSGVVh9RZzdjgplSt+J/4gFUVpG8TUbz3E2OzihKMZCS4CZgAbYdw1kg5GaTyaWFSaknI+MxUR4H4G0f+5P5Urfj3ZqL7EwciD+d3lfOb5pIOpg9ORpO2fgBsacQGv4HXwZYfvyV7Ba9zv0AT/IJq4X4Bx523YtZRm5BTE1fQdYK9adWu8grckMuGunCsH3IEkBW7wCl5t7yeZrO+MVGttjiS+ldGCcRcHDn9u/Nz8a+6550F+z19KZpc60gsQ6RKenO4v1bSA09PVuSSSaAM4uru377NhRg1Ad2/fk0hlLoiRS9Xv7XR/KSSSntil1JGuJtmSR7Qd1wcGlzcxQcWR9y1EauTiJJLy5XzmNeAl5Dl5nVqOTeWK6wF/BTLI+2I/YKeEW5/HIr/zyvvRAL+0ybfE8AreN72C93Ov4DVmPmKC95BnyalIO16tUgLnEukt3qJ6i4qiDIOJdnszJngzyUBGBBP8l6iLQ6sW2wBNLCpNi30I/xnwAuJYeG8qV3QTDQqwMVRcriYlGEp9GHdtRD8IYAImmDnI3nVhdemuRh7G7wf+AnwNuLzBLdEnI5U9K1CFBpgySjDuhkTJjr1r1QqbpQV6USQhcIbVydsPccJNU49cgCS7K62jZ2PcVWo+h9KsHAMscNnCbkUG40Y/68/e5nwYsATyGXYFtXMSUrn3Z+LXYjoGad1eiSh5WRXp/tJfbDwOcHapIz3oPd3P+q8TJV2Hrlo0wRtIcnEmoruYlKvk43ZbVTu0bX0+Eqm4XAb4F/D9cj5zecKtz/Mg8jL7IZWqB2CCk5I2DfAK3urIs8FdwLkNezYwwTNETuYG4/6s2kPnoLd4heotKopSM8ZdBjEpg8jYpB2o/F93wrhLJBqJ0nA0sag0NeV85i1gU6R6YXXgzlSuOE+yUbEnUu33T+CBhGOpDan8mIRMCG/ABE8OfkDdHIKYDXwM7I1MDqchFQPZQY4bHtLSfagdHYVxm6qFXmkAopt1HfKevhIT3FXHWbZHBLWnA3v4Wf8LAD/rv0uU1JjgFbx6zKQuBO4D5gFutC3bSitj3OWAA98cO5bfzztPZbHrSxOFUkd6ceAIOzw23V+qyUSop6vTQ9qoAQ7r7u2LdQGou7cvIHKmPKqnq3PVGk9xLHJP/zGwWRX7n4lULa5b1f4meIQo4XkRxk2iDbVqncVUrrgY0If8P8cCNyOtz88NemCjMa4L3INU7U0DtscElyYaE+AVvJWRRceF7ZcmIAuDjcEE1wCXIp8TN2LcFas91OotdiGfD9sj5juKoii1cCDSAfOYXexoF55EuuPGo1q1ox5NLCpNTzmfeRFpJfwI+BFwUypXTMS63l63Mhk7P9EqhProQtrRPiPSDooVr+CtROR8erif9f/rZ/1/ELVgne8VvGUbcW3L7UgiZ25gsmrbjXomI8YILxAllavGK3hLIDowAKf5Wf+vs37fz/r3ELWNXusVvK/VdAGpCtoDeA9Yky/LAyitiQHmvnRh9xUcZwzwsJ/1/zbbPschC1DPALfWcvKerk4H0VMcA9zW3dv3+BCH1MsdSJvnXMDlPV2dVT8TpvtLZSRpDlK1OOhnsp/13yDSlKpGaxFEn7APmZDcVov5RkxUEovrpHLFcQPtlMoVf4BUOv8USZ7uC+xczmc+bniEgyFayo8AGyKLfJtjgtsGO2Qk8AreMsDvgCURHdrKs8hxXsGr3SyreiYCTyHJzNtr0e8s5zNPElWfT0rlivXo7iqK0o7IvaaSVJuUYCQjjzwDVxZeD8S4cycZjtJYNLGotARW8HxLZMV9K+DihNpRfo602b5Pg7QJG4Z8sJ1tR2dggtfivoTVSboacWF8kC+3/52DrFwtBFzZwLanEEn+TkOqXbdpyHWU5DHuDoiO4QxglzpNiC5CWqCfQ7RH58QRiKPr0kRJyBriDN5AKncBDse4G9UeptIUSDt79jPH4TcLzr+w/ers1YorELVeHpXuL9Vabbg5sAlyD2tYoqW7t69ievUJIii/z+BHfIXTgA+A1aiuEv0s4HPge0gSbnBEpiMLlIFvAteO8EJRP7IgMC/wlYpJ2/qcQ5J3SxO1Pl+R+KKjVOT9AVnMeBv4ESZ4ONGYAK/gLYZUKi6P3FM387P+mUTJxbxX8BqjRyu6t9siP481gMtqfD9NQtq250b0FhOX5lEUpSXYBVgE0e2tp6um1bkNeB1YCqn6VkYpmlhUWoZyPvMI4vAXIhUBJoEwJtrtZeV8JhYh/RHkCET36WVicBcdgIOADYBPgb2tTh0AftafgWgVTUESfvs2KAYwwb+RljSASRh3gYZdS0kG4y5LVEl4Wj1t/V7B2x6ZaE4Hdp+Doy8Aftb/FNgVSWDu6BW82h3OTfAb4EqkFe86jFtb5aPSLJwKjCm4C/51huMsBLyIVNXNysnAOOCBdH+pJrmMnq7OcUT35/O7e/teHG7Ag9Hd2/dfIkOLM3u6Oqs22Er3lz4gcoY+pdSRHrQCzM/6bxEl5qurWjTB+4gu1TRkcbG72viGi00OVtyhv9QOncoVF0fc589AWp9vRFqfZ69cHXmkbfwPSDL2RWB9TPBsskGBV/AWAu5FNGtfBTax7wlscrHyXprsFbzGSKaY4FWkc0MWo2ow1ZpFb7HiMq16i4qiDI4sXky0owuSNsxKBBNMI+pYmKCdZKMXTSwqLUU5n7kd0akAOCGVKx442P5xksoVv4O0Yk8nukG2BpKEqVS+HIEJPo/7El7B+ybi/glwpJ/1y7Pv42f954lMVXq8grdC3HHMwhnI6uDSRG3YymjAuGOAa5GWtqeJJqRVM1sL9Omzt0DPjp/1n5rlOhfbdr5aORT4D5Lgv0QfrloM434P2CqEmVe6bsUd9kK7aAJAqSO9BlJFC/XJTeyDJF7eZeAK2riZjBjEuNQuKn8RUlH4DaqTIjgbkeJYG3FNHhoT/BnR7QXIY9wf1hjjcPiKzmIqV9wAeBapLJ2CVCPvmnjrM2CroR8lajNeHxP8J9mgwCt48yKVOt9F3tub+Fn/5dl2O4Ho/Xe1V/C2bUgwot9ZeR46D+OuX+2h5XzmA6Ti5gsk4T1iz6CKorQkmyKf6R8jHV3tyuXI5+XaSIeEMgrRxKLScpTzmUuJqhUnp3LF7QbZPU4m2O1t5Xzm1RG6ZlycibRzPY6UpMeKbYG+EpgPaQsbTBz+AsQ1c35k8tCY+5AkTyuT0UMxbq3mBErzMgHYGElQ7IIJajLGsEwGFgN8Ik3QoTgNSWQujOgt1vbelVbtXZBqmS6iBJTS7EgSOA9w5wLzPzBtjPNNpIX4mtn2PAOpSu217slV09PVuTCRgcWJ3b19Hw4n5Grp7u2bgVSQzwC26+nqrC7hB6T7S1MRh2mAo0od6UFdH/2s/zbytwfVay2CTEpuQKoDe61+4Ejwv8RiKlccm8oVjwYeRhas+oHvlfOZqxJvfQYw7jZIReCCSHLxR5jgzWSDAq/gjUNcqX+E1Xr0s37/7PvZDodDgauQ+clNXsGr2sG5Rs61Mc0F3FrL+6mcz/yJSG/x3FSu+N0GxKcoyuhgot1ejQk+SjKQRDHBO0hlP0TzaWWUoYlFpVU5GWmDdIAbUrnixo28WCpXXBKotD9OauS1YkdW43dEWsgnWA3CuNkX2AhJ9OztZ/0BNcXs9/ZA2qU3pIZWpJoxQR9wJzJ5uFgrxEYBxl0NSd4AHIYJ/lXrKbyCtx1SbTKDQVqgZ8e6Re+K6MT9GPhlrdfGBE8BJ9nRRRg3VfM5lCT4CXKPm3bGol+rGHlc7Wf9oLJDqSO9IaIdOJ2ovbgWjkX0PktIIm3E6O7te5bos+3inq7OWuQjepGKxwWprjr8bCQpuxawRVVXkM+t/YF/IDpNN2HcuWqIsV6eQaosFkeSjKcjyc0bgP8r5zP+CMQwNMbdDzEJmhsx5dkcEwSDH9R47OLLtUAn8nPs9LP+gAl3m1zcD/gVIidwu1fwNow9MHk/7QX8E/g6klwc0KBnDpyPPFuo3qKiKHPGuGmksj0kMjtrZyoV6Vtj3OUSjURpCJpYVFoSWx1wMFJ9NzdwZ4Nd+va313mynM881cDrxIu0jFZu5Fc1QmfJK3jLE5nCHONn/ReGOsbP+i8Srfif6RW8leOOaxYmIImgH6IVYq2NcccjK57jEV27mpMvXsFbnC+3QD9Ty/G2nf9wOzzTK3ir1BoDkhh9AjEyuh7jJuJyr1SJLEicAfDn8eN/9dmYMRsx20Sh1JF2iHRdL0/3l2pqP+3p6lyRqMK6u7u3b/qw466dExH9uOWIkt9DYs1pjrDD/Uod6W8Ntr+f9d8l+tmZqqsWTfApoon6CZLkrTrGeinnM1OBP9nhOshnyV7AbuV8ph6zqHgxroNxT0C6BBzknrg9JpiSbGBgf6+TEW3s6cC2ftZ/bKjjrLTAbohj+TzAb72C9/3YA5QK8q2Bj5BW93OqPdQ+g+5BZCx0leotKooyG5XKvDsxwZBzo1GPCXzgIWRxrnFFJUpiaGJRaVnK+UxFfPthYAHgnlSuuFLc10nliuOJdHQmxX3+BpNFNI0+or4KmkGxE4crkJ//H6htRe5SxDl6XqSttDHJFRO8TKSNdw7GXbgh11FGglOB1YF3gL3rrL6djFQf+dShzWi5BGk5nAe4wSt4c9d0tAmmI5WPnyAT2oY5/yqxsA1yH/3k4KUWryT8in7WnzV5uDXidvwZcEod1zgTWby6r7u3757hBFsv3b19nxJ91k3s6eqserEu3V96BEn2z0WktTsYPUhb7JrAL6oO0gT9RA7rx2DczqqPrZ/f2W2l9fnqJml9HovczyoJ1lOA/ZvIHOBUxB09BHbzs36x2gNtdfj2yDPCAsC9XsFbI/YITfA8ksQEOATj7lTtoVZvsQvRW9wGnSgrilLBuIsS3VsmJRhJszHJbvfFuPMnGYgSP5pYVFoaW03wC+CvwBLAfalcMW7tpR3suV9FWoxaA+MuRNQyegomeKsBV9kL2ARpcdpzsBbo2bH77olMLtcj0iFpBD3A84igfT2TfiVpjLshkSPs3vW8n60ZwPZIC/Qe1bZAz45t19sTeB/4DlLpVRsmeBGpugY4CeOuXU8sSoORdtvTAN4YO/aiT8aM6bLfmVTZpdSR/t8+QE+6v1STrl1PV+cGSGJiJlE1bCJ09/bdjWjPjQEu7+nqrKXd+Cjk/7BVqSP9g8F29LP+e4jeLkjVYvXPoyboJVrEuh7jNtIEDKSSbXPE9fnvDb5WdUj19s1IIlg6OExwQoOkTmrGK3iHE2lvHuBn/ZtrPYef9acgTuBPILq2v/MKXkdsQVYwwZ1ERklXYtzVqz3U6i1WqnV7Urmi3scVRQExYpsXmZ8OWandRhSBF5B7+m6D76q0GppYVFqecj7zEaJr9SLSknJvXHo3trVloh1eVM5n6jGJSIpjkETaf4gmcLFhXXF77PA4P+vXrHXnZ/1XiJxET/MKXjqu+L6ECaYSVRMciHEb2TavxI1UmV6HtPpdiQnuqvUUXsFbjMjNPT+Yzlc1+Fn/DURbFCDnFbyqnUVnoYDIOcwF3Kirt03J7sC3gHe3WfrrHyGmU39H2nkq7AF8G3G7rbqdEqCnq3MMcJ4dXtHd29cMiasJQIBUaVatI5ruL/0TMfECONu2hw/GuUg1/erAVjXGeDjwFDI5udUm2hpCOZ+ZUs5n7ivnM5826ho1YdwFkcnZdki13I6YYPLgB40cXsHbm0ge5Wg/619W77n8rP8p4h7+LFJp/oBX8BqRSD4BuB9JBNxRY2fDBcCvifQWazlWUZTRhui1Vj47JzXLgk9TYIKZRHPSQ6xklzJK0F+mMioo5zNvApsCbwNrAL9J5YrzxHDqHyKtWp8jLb+tgXFXJErYHYYJ6qrMGgjbAn05ohH3JMMr878auAfRzSt4Ba8xgvwmeBAxGRiDGLno/a91mAwsi6xyHjrEvgNxITIx/TsxVa36Wf92JOE5BrjOK3gL1nQCedjcD3gdSV71DH6AMqIYd17AAEyDMz4eO2Yf+50LbNUqpY70fEStqKem+0u1uj7ujCTwPqY645OG093b9yaRBu6pPV2dtYisG8SYax2kCnNA/Kz/PtFnR61Vi9OQ6uP3kJ/feYMfMEow7hLAI4h51CfAz2wFZ1NgjbEq2rdn+Vm/mrb4QfGz/ofAZoip0dJIcvEbwz3vl5D28Z0QjdEVkUrYqt6Pti1+T0RvcQVUb1FR2p1tkHvVW4gRlfJlrkEWFTuQubsyStCJdath3PjbQEYJ5XzmBaRd6WPEbfiGVK44XN2+ivDudeV85r1hnmskORtZPf8donsVN7shVaJTkRboujWd7AR9H+BD4P+IJrSNoBuZjH0fmQgozY5xd0CSL6KpKoL7NeEVvK0RSYNKC/TUGCM8BHgFqZY+t+ajTfA+ooUKsB/G/Xl8oSnD5EBkcvDfDZdb5lUghSSybphln0MQV9kyohtbNT1dnfMRyVWc1t3b9/Yw442TKxHd3PmByT1dnVUlStL9pTeIqjbzpY70UPqj5yHVkashxizVY4JXEJ3lEDgA445ucy5p+f4D4qb9DrARJngg2aAivIK3OWKuVVl4zMV1bj/rv4M4s1c6Ux6wRlzxYYL3EK3UqYiLddW61OV85kMk0f2FPUfVlb6KoowixOytsgB+se2YUmbFBB8jRSUQzbOVUYAmFlsJ4+4D/BPjHpB0KM1KOZ95FtFcnIasGE2ud+U4lSt+k0hUPvZW4oZh3I2RtrIZwKFxl+DbSoFJlav5Wb803HP6Wf81IkdU4xW8qjWOasIErxFVBZ2JcRdryHWUeDDusohRCsBpmODJWk9hW6Ar5zjTz/p/jis8AD/rB0iiPQT29greFjWfRJIDlaTkVRh3yfgiVOrCuC6RRtyJH48dU5FSuNzP+p8DlDrSixAlT45P95dqnUAcjiQuy8D5wws4Xrp7+2Yirf5fAD9HkiXVcg7wJlL5td9gO9pqtEq14Yk1m3iZ4F6iCuTLMe6qNR3fKhh3DURrcCWkqu4HmCDWe9lw8AreDxAN6nFIZ8CBlareuPCz/utIpearQBq4zyt4C8d5DUzwDGI4A2Aw7s+qPbSczzxNpJGqeouK0p6sgxi5TaPGxcY240LkuXlzLZoaPWhisbX4JrISfDHG3SvpYJqVcj7zEFEVw/7U3172S+TnfV85n/lnTOE1FjEamGRHl2CCf8R5etsCfSmia/VnatQTG4IbgDuRiUmhZqfd6rkQcQRehKhaSGk2pA3tWuS99jT1OzhfgJgv/RM4OY7QZsfP+o8StTFf6RW8Jeo4zbHI+3Jx4Gq76q0kx+HIPaK03nLL+IgsxnQinU6AowEX+BtwUy0n7+nq/AaRG/hR3b19U4Ydccx09/b9E3GrBriwp6uzKu3idH/pEyJDoxNLHemhjpuEVKyvgugG1srJwAPAfMDtVoNw9GDcHyLi/0sh94j1MEHNmsaNwit4ayKdEfMisia7DaeLYTD8rF9GKhffRoyz7vYK3gKxXsQE1yDPOQ6ifbtiDUdfSJRgVb1FRWk/JtrtjZigmboQmgsxMKzopR8y2K5K66CJxdbiGKKk0RUYd5cEY2lqyvnMrUStKCaVK+5fy/GpXHEhYG87nBRjaI1mH8BD3Gprd6odmp2Q6pUvkJbS6XGd2FY37Ie0Gq5JVC0ULyaYjrQ4AuyNcddpyHWU4TIB2Bj4DGmBrtk4ySt4WwE7Ik61u8fcAj07xxElBq+wSfjqMcEU5O9rKvAzoqoZZaSRitHD7OjYj8eOqXyW3OZn/VcBSh3p5YhcvY9O95dm1niV05BE2BPArcOMuJGcBvwbafeuZSHmakQTb1GGaIm1Vb+Vit16qhYr+nivISY6l4+axLxxf4GYiiwEPA78EBO8nmhMs+AVvG8h8bnA74Ft/awfq6bz7PhZ/3lEl+tDYF3gTq/gxaGpPSsTicyBbse481VzkNVb3At4CdFbvFr1FhWlTTDuckTawk3VhdCkTLLbLMb9WpKBKPHQVIlFx3GOdhznacdxPnYc523HcX7jOM63k46raZCW1sOQigkHKGDc7ZMNqnkp5zMXE1UoXZzKFWvRb9odWBB4Hnlobn7kplxpCTvRarfFhlfwliJqCT/Zz/qxu5f6Wf8toqTfsV7Ba4x7swl+jzjyglQAN8YwRqkP43pESYzD6qnO8QreokQt0Gf5Wf/puMKbEzZpuQvS/rIF9Wh4muDvRFVsPRi3MS7pylAchyT9/vR/yy/zBJKchi9PFAxiOPUoUqVVNT1dnWsR6Woe1t3b17SOkbaSsrIwt39PV+e61RyX7i9NJ3ovTyx1pJcd4pDzgQ8QMfcdag7UBO8gGnfT7fEHDn5AC2DcvYHbkffZncBmmODDRGOaBa/gLYtUii6OuDZ3+ln/s5G4tp/1n0M0tT9BFqBu8QreuNguILpo2xIZAl5WbbJ6Nr3FrYgWIBRFGd0cBIwFHsIEzyUdTAvwKNLxMR9RMY/SwjRVYhH4EXARok+wCdJKcL/jOPMnGlUzIcnFg4GrkN/fTXZFW5kzBhERd4AbU7niRkMdkMoVxxCVZZ9fzmdqrURJihOR6pB/ELOuh62+uhhpDXyWqD0udvysfwtSwTMX4rQ7vkGXOhKpePgOWh3WPBh3PGIAMB5pr7t88AMG5HxgSaQF2sQS2xD4Wf9vRIL/53sFr5YWugoXIqZL8yBteI2SBFDmhBhkVHQBj54yZsx+iBHWU37WfxKg1JFelSgxmEv3l6pODFoTlB7kM+mm7t6+p2KLvUF09/Y9hCzEOMDlPV2d1SZw+pCJwzwM4cTuZ/2PiKQ1TvAKXu2LPSZ4AjjCjs7DuN+v+RzNgHEdjHsscAXynHc1sC0m+DzZwCKs3MPvgGWBfwGb28rTEcPP+k8hJitTkE6K62uudh0ME7wKdFExDpOkQVWU85k/I2ZxAOekcsXvxRaXoijNh3EXQHSJobU63ZJDchqT7OhgLfJofZoqsRiG4eZhGF4bhuE/wjB8DqkaWw74brKRNRkmmIlMfK5HVkZuwbiZZINqTmxbyoGI5s3cwJ2pXPE7QxyWQUTnPwSua2iAcSGVTZWH3kNtu2+cbI+svE9HWqBrbkutkQORSoFVaVRSSLRPKu3Wp2LcpRpyHaVWTkXa+d8B9q7HfMgreFsiTtIzid8FeijORfTQ5kcmurU9KMn9fXdEzuA7NEgXUhmQk5BFzd95Kyz3B6LKt1mrFU9Hnp/uSPeXajUU2hLYEEmGHD28UEeUwxGZitWIDCoGxSZcK4m+3Uod6TWGOORCe41vEVWJ1sr5SJXfOOBWjLtonedJBtGWPZ9IU/YM5D4Y92d63XgFzwXuRdrO/wts4mf9RLTErL7t1kh1YBdwuVfw4pvbmOARosrb8zDu+jUcPZnovdibyhW11U9RRi+7IdIJLwDFZENpKW5GnveXJTJMVVqUpkoszoGK4PccWzodxxnvOM5ClRfSutoeiKbQnsAtyEPL7Rh302SDak7K+cwMJMnwKPIeuSeVKw5WSTTRbi8v5zOfNji8uDgXqfC7CxP8Ls4TewVvceQBGeA024LUUPys/y5R1dCRXsFrlA7i5YgJzULA2Q26hlItxt2QqMpjb0zwVq2n8AreIsBldni2n/X/FFN0VWFNC7LAx4j+15E1n0Q01PaxoyPtz0VpNNKCX9EuPgZZUFkSeB24DaDUkV4faXWfiRjuVE1PV+fcRPeZnu7evldiiHpE6O7te5dId/KEnq7Oqqpx0/2lp4FfIdWOg95j/az/McOvWgyRZ6N/IxOVG2yyrvmR6uQbiVpnJ2KCY+pZXGkUXsGbD/gtsujxDvATP+sn+j72s/49RFq6ewLn1axxOzjnIs/acyHJ6qoWIWfRW3wRSKF6i4oyOpHPmAl2dL5dIFaqQfTFK112ExOMRImBpn3YchxnDFIe+4cwDAfScjsaCGZ5vToy0TUJsoK9C/BrKho8OgGdI+V8ZgpSKfIcMlG8L5UrLjn7fqlccXVEr2cG0pbf/Bj3Z4jW0BdUWUlSI5OBxRAdjNMbcP454mf93yBO0WOAa72CN2/sF5EE/YGIg/guGPdHsV9DqQ7jLoxUCDvAFZjgrsEPGJBKC3Q/I9QCPTvWubRi+HFSXVqhJrgDaYF0gOvsz0dpLKchP+/bvBWW+wvRQ+5Fftb/otSRdohkIK5K95f6azz/QcBKwJs0UE6igVwPPIi0Nl9q27qr4RhEe3STUkd6syH2nQy8i/ycdq4rShN8hAjof458NjbGCCxOpI3ut4g+5HRgZ0zQVOL/XsGbG5Ep2QD4CNjMz/pN4U7tZ/3biXRtD2GI1vuakMTuXoisxteR5GJVcgDlfCZAFiimIdU4EwY9QFGUVmRzpNL+I+DaZENpSS5B5rDrY9y1kw5GqZ+mTSwiSZ3VGFzE+wykqrHyWmYE4mouxCl1B6Tseh6gr8ZWjbbBPuD9FHHrWxGpXFxott0qD313lPOZ5q8mkQqH8+xoEib4d5yn9wre1shD8QykpbShbo9z4BDgDaTl6tQh9q0PEzxNVOF2cbUTBiV2LkIqjP5DVBlVE17B2wJZbKm4QE+JL7yauR5pg5sLuKHOxPgEpK1mWUTjVGkUxl0P0Wmbgehkrg+shbQsV3Q+O+3XpyAt01XT09W5KHCCHR7X3dv3cQxRjyjWZGZ/5P//E6pM/KX7Sy8RVb2fVepID6iD52f9T4gqG0+o25DDBD6Rdu7JGPcndZ1nJDDu4sBDiNPxp0AnJrgp2aC+jNUuvA5xrP8cyPhZ/9lko/oyftYvEEnCHOsVvKMG278mTPAJ0nL9EfADosraISnnM38h+kw7S/UWFWXUMdFur8AELffZnjgmeAPotSNdfGlhmjKx6DjOZOQBfqMwDAesQgzDcGoYhh9VXkjrWfthgmmIe939iK7XPS0rWt5gyvnMG8BmSAvPd4Bfp3LF8QCpXHFxoonSpEQCrJ2DkFWyt4k58Tabq+6ZftZ/Js7zV4Of9T8gcgo71Ct4GzToUsciVTKroKX4I49xdwB2QpI6u9pJXE3M1gJ9jhX2Tww/61eSMG8CaSKX6+qRn8MuyM9lR4y7U5wxKhZxe83b0TWY4Hmih9sb/az/rk2GVX6H56f7S6/VeJUTEP2l52jhiobu3r7/EFWDnWcTptVwGqJbvDqw6xD7XoR8Rn+zin0HxgQF4EqkCvVmjNt8i8/GTQG/B/4P0ZfcGBPcl2hMszGLeVsXUlWytZ/1f59sVHPGz/oXE2ki5r2CV7XhypDIfWE3OzqkxvvxxYicwjjgFtVbVJRRgnFXQwxnZxItoCm1M8luuzDu15MMRKmfpkosOsJkxCRi4zAMX0o6ppZBNAq2Ah5GdATvw7i1t9+1AeV85t9I5eInSNvz9alccSyi6TceeBr4Y3IRVolUOZxoR8fY9q84uQBYAmn/ScxAws/6dxO1hF7jFbz4XeJN8D6RFt6JTTkBHa0Yd1miBPZpmKBWM4wKk4ClkBboEwffdWSwWqGV9rwJXsGrvWpKfh6VRM4lGHf5mMJTIjZH2junIq3ryyPVSRCZtuyKmEl9QI1tzD1dnd8mMoHp7u7tmzHsiJPlHOAfiERGVdq06f7S+0hyEeDUUkd6voH29bP+p0Q/4+PqrloUDgH+isTa21QV6aLp+QdkcfAV4AeYYEQ1YavkDMTtNAR28bP+vQnHMyh+1j+LaKF1slfwdo/t5Ca4k0gS5kqMu3o1h1m9xb2RCvTlgWtUb1FRRgWVRchfY4JykoG0NCb4C/J5OI6o20BpMZoqsYisUu+CVK587DjOUvYVv7baaMQEnyGi8n9AWsN/Zx9cldmwrSlbIavv2yHvvcrK9iT7ENjsnIL8np8l5goY21K6E1FL6Ui66s6JwxD3yRVpnDZZAXgCqfo9b4h9lTgQwetrkUquP1Fn1a1X8H6OJH4qLtBJtkB/CWssUEmcXusVvHoqVU4DnkRMhq7HuAO2kio1QjfrXwABAABJREFUIu/BSiXiZEzwKvJZMAZ4yM/6fqkjPQ/R4soZ6f7SBzVe5WykJf633b19D8YRdpJ09/ZNQxJNAHv0dHVuVOWhk4GXgaUZut3pEuAtYAXEDKk+TPA50tERAOsRVaYmi3F/gLjHfwNJ0q6PCWrV7Gw4tp24UgG4n5/1b0kynho4gWhR4Cqv4G0X87nvB+YF7qhW/3Y2vcUt0e4IRWltpMCjUlU/KcFIRguT7HZ/jDtPkoEo9dFsicUDkETJI4iuWuXVlWBMrYW0zv0MeApYBHgQ46aTDao5KeczDyAfCCFSrbgUs7h/NjXGXYPINXaCNSGJBZv4qDh0neNn/afjOne9+Fk/IKr8OsgreBvHfhFxcTsAaTvdFuMOZTKgDJ8JSNXwZ8AuVjO2Juz7tdICfa6f9euteGwkRyAutUtTjylUZNT1CVJZd0ScwbU52wNrINppZ9iK6Mq9dZLdHoToXL5Kja1OPV2dP0a0G6czin5v3b19TxB9TlzW09U55CQg3V+aQuSkfXSpI734QPv6Wf8zvly1OHfdwZrgBaLk5GEYd5u6zxUHxv058DtkQeUJ4Ic2od1UeAVvP6JE7JF+1r8iyXhqwUpRHIq0wo8BbvIK3s9iObk8b+2EJMlXRBZ7qppPlfOZZ2xcIHqLKlukKK3LvkinW6XaThkev0Gq9xcHdkw2FKUemiqxGIahM8Dr2qRjaymkJXZz4Bnkj/NBjLtyskE1J+V8ppcvV05cXM5nRtqgpDZED2wS8vd7CyZ4POYrnIc4Hz5Pk7SUAvhZ/wGiyq+rvYI3u/HO8DHB34AL7Wiyrpg1EKmmrkxaDxuG8dCs79cThtg3EWxr565YrUSv4NX+wCTJkUPs6BSM+934ImxTpC22UiV7NiZ4D9FQWxhpWSyWOtILE7kKn5juL31e7el7ujrHAufa4cXdvX3PxxF2E3E0oiG6MtU7L9+MPJssyNB/r5fa8y8P7FFnjIK0sFbatq9J7JnIuHsAv6ZitgebWCmOpsIreDsQfd6e4Wf9qlrem4lZdG5vRiqGb/cKXrXVtYMj94qtEfmETsTwqVouQdy15wJ6U7niIrHEpCjKyCHmmZVOt/Ose7wyHGQRvbJ4O9HOd5UWoqkSi0qMmOBDxGHQRybdD2HcFRKNqUkp5zMXIi0pv6Y1hHe3BjZEnDmPHHzX2rAr+lmkinPPZmoptRyJuHovTw2ujDVyIlIpvRKjqMKoqTDueOBGYG5kcn354AfMGa/gZYjer3v4Wb/qpM9IY81kKkmsi72CV4+O57XAHciE9EaMO6BOnVIVeyEVR28Dk7yCN4YoeXuhn/VnIvecRRCt2etqPP/uiFnJBySoU9sounv7PiT6eeV6ujpXGeqYdH9pJnC4He5f6kh/a6B97d9zZfHhWK/gjR9GuCDVko8jSc3bRvTvx7gOxj0K0Qsei0hvbG0lbJoK+xxwPaJrfAlRlWnL4Wf9GchnxF1IMve3XsFbJ5aTm+AZIi0wg3Grqoi0Ujv7oHqLitLKbI/Mr99AFgqUeLgS6WJaHfhRwrEoNaKJxdGMrKj+BCgBywAPY9zlkg2qOSnnM+eX85mtrQZO8yIVdJWE2tmY4OW4Tu0VPJcowXOen/WfiOvcceFn/U+IKlf28Qre5rFfRCp+u+3oGIz7zdivoZwKeIjz6971rPTaFujK+/VcP+s3v+GSaCU+jVTEXWsTWdUjP6d9kQfZb9O45ProR5JKlYq5U6yMyCZAB/AxcE2pI/0NIh20Y9L9penVnr6nq3NBIrOSk7t7+96LJe7m4zagiAiuX9bT1TnkezrdX3rYHjMXkRHGQFyOSJQsSySHUR8itbADot24OiO1kChtsj1ESdKzgD3qkX5oNF7B2wC4Hfnd3Az80lb+tSx+1v8CkVR6ENFQvscreGvGcnITXINU1jrIYs+K1RxmnzW3Q/QWtyBqj1YUpdmRSrrK3+xFmKC5O91aCRN8gCy8gerQthyaWBztmOBt4MeIvtfySOXi0skGpQyDw4AU8Brxm5j0IBpw/wGOj/ncseFn/UeJRNmv9Arewg24zK+Ah5AKhwu0HD9GjLsRUeJ2b0zwVp1nOhcxPvgXTfx+nRU7wd0V+By5Lx9c80lkwaiiF3cAxu2MLcD24mCk2qBMlKCeaLdX+1n/I6R6eV5EB++uGs9/FLAk8tl78TBjbVq6e/tCpB3sU+AHSBVoNRyFmC1tU+pIrzfQTrZqsWKuc8ywqxZN8Dqi3TQT2APjDi9ZOeT13LmRStfKJPRwTHBUM7bNeQVvLaSCfB4k8Zu1Vbstj+2+2BL5W14YuN8reB0xnX4iomu+MHB7tZWw5XzmWaJ7zpmpXDGeSkpFURrN+sBaSOdYXR03yqBcYLdbVLtYozQHmlhsB0zwBmKQ8BLS9vUgxl0q2aCUmjHuN4h0rI7CBJ/GdWqv4G2KTAgrLdBN1541G8cQmWGcP8S+tSOTvoMQ1/AMUlGgDBdxzywg1R1XYIJakzXA/1r1did6vzZtC/Ts+Fn/eaLE6plewRuyffQrmOB3RMYiV2PcJeOJrk0w7teAnB2dgAmm2STD5sh76sJSR/rbREmyXLq/VHUiqKerczmi3/ER1kV51NLd2/cyUXL/rJ6uziGfL9L9pX8gbcEA55Q60oMt3lyJLKYtA+w9nFgBMMHDRJp4F2HcNYd9zjlex50fSUjvjJj37IYJehpyrWFi3//3Ic7zjwHb2YWQUYPVus0Q6Y8/4BW84UsEmWAq4jz+NmIEdVkNi5GXAr2o3qKitBIT7fYGTPBOkoGMSkzQD9yLzBV+mXA0Sg1oYrFdEMfBjRG3pW8DD2DcAR0ZlabkDKSN54/ATXGd1JqgVNweJ/tZP24zmNixic8sUnWym1fw4k/8yQdbZRJ4vurZxcJFSEvjf5Dq25qxFaqVFeJJftZvRSe+S5GHpvHADXU63h4N/B2ZIF+lVbU1cSRSXfR3ontppXr0t37WfwFpYx4L9KX7S7XeE89Aqr4eofZKx1blQiRhszBiqFQNJyJaSusCWw20k602q7RMH+MVvDhMtc5EqvLmQfQWF47hnBHGXRRpvd0MqVDeAhNcH+s1YsIreMsjLtWLIe6mP2+lxZpa8LP+h8jv5J/IwuSDXsEbfhePPGN3IQZduxCZOgyK1VvcF/lMXA4oqN6iojQxxk0RfV5NSi6QUc8ku90L48Zv1qk0BE0sthMmKCPJxdeBVYHfYVxdHW0FjPs9xK0UYELMbVRnIQ+0LyHJipbAaupVNOYu9wreog24zKlIMn55WljAvikw7g7ATsjEa1eraVcPlZb9f1ObE2fTYDXL9gTeB75DPe7rJpiCVEJNQ6pw9osxxNGLVH5PsKNjMMEMq9e5u/3a+aWO9PeAbZDqxZruiT1dnd9H3uchcJhtFR71dPf2TUcMKWYCO/R0dQ6pf5vuL71OtHiTL3Wkxw2y+1XAfxH5g32HGS6YYCbymVpGOjmuiS05L1rWvwe+jxj3/BgT3BPLuWPGK3hLIknFZYB+YHMrAzBq8bP+u4ie6gvACkjl4vAX2k3wCNLiD3Aexl2/msPK+cxHiBFExWG6rkU3RVFGhIOR/MnvMME/kg5mFHM/8pm0INHzmdLkaGKx3TDBC0hy8S2kZeM+jOsmG5QyKDLZqbT7FjDB03Gd2it4GxMlJPayrUKtxIlI5cGSNEKIX9rNK0mIIzBuXJpM7YVxl0XcRQFOxQRP1nMar+D9FEnItUrL/oD4Wf8NogRJzit4VU1Cv4QJ/kbU0nuuvj+r4nhEN/GPiJ4cSMvzfIC/3eMzHibSr70u3V/6e7Un7unqdIiq9a7t7u17Np6QW4Pu3r5niD6rLunp6py/isPORlpIV2aQ5Lif9acSmeEc7RW8eYcTKwAmeJ/IQOMXxJHQMe4qwB8QE6BXgR9ggqY0lrLV3/chP/uXgU1s0m3U42f91xFzw1eR39X9Mek1nwvcgrQ231qt7NBseov5VK64bgyxKIoSJ8ZdkEiOY1KCkYx+pICm8jxxCMYdm2Q4SnVoYrEdMcHziHHAu8DawD32Zqk0JzsB6yDi+McMsW/VeAVvAaQKBOASP+s/HNe5RwrbIpdFquB28Aretg24zJ3A3Yjr6WRtOa0RcUS9FmmR/BNRcqAmrGt5pWX/fD/r/z6O8OZET1fnej1dnRf0dHU21OjKz/q3I8YOY4DrvIJXz334fOABJFl2ozWLUOaEcVcimhTkMEHoFby5iNqgz9/u9+FmwIZI9dAJXz3JoGyHtPV+SotW08bACUiVd4oqKnHT/aWPZ9nvxFJHerCFzmuQBNhSxFWha4I/Ey0enYlxN6j/XO66SKXiMkAJWA8T/HPYMTYAr+DNhyTW10AWmjfxs/6ryUY1svhZv4wkF98G1gTuts9F9SOT4b2QBc+vI8nFwSpxZ+UyxDiuorfYiC4MRVHqZ3dEh/ZfiJyN0liuBz5Eugp+lmwoSjVoYrFdkfLtnyBtOusCfVZoXGkm5HdSqZ45zTpaxsUZyOTvZaL2nZbDz/p/JnINvcQreEvEegGZKByCJBp+jLQsKdUzEamS/gzYBRPUawhQaYF+gQa2pfd0da6JVPEcDNzX09W5cKOuZTkEScR8E6l2qQ1p6dwdaateCzDxhTbqOBmZtN+DCR6zX9sSkYJ4b/m3wpuBvP36Ren+0ivVnrinq3Meonv1md29fXHeq1uG7t6+T4j05Q6zf09DcSXwPKLxd+RAO/lZfxrRwkTOJsfi4DLgRkRTs7cuMyTjZhBNxa8BTwIbYIL/xhRfrFhN19sRZ9MPgc38rP/vRINKCGumtQnRs/Cdw9bwFJmPrYGPEKf0cwY/QLB6i/shMh/LInqLOk9TlGZAFskri1Dn22cvpZFI11hFU31igpEoVaIfWO2MCZ4DNkUefn4I3Ilxh99epMTJUUgy5SWqF8QfEq/g/YjIaWsfP+t/HNe5E+IU4DlkYnqpV/DirSoUCYFK8vI8FRKuEuN6RD+3wzBBXZNXr+BtRuRavkejWqB7ujqXQQwdKlUrqwK/7unqHN+I6wH4WT9AtN5CYO+6jIhM8BpRBVcO4/4wvghHCeL8u6MdzVr5XZkoXHr21TO2Qiq4PiIyC6mWCchCzWtEuoFtSXdvXx9wG5Kou6Knq3PQFqZ0f2k60eLWYaWO9DKD7H4toou4JLD/sIOFyuLRfkRVZjfX1HZl3N2QyvZ5gXuAn2CC92KJLWa8gjcWuAFxQP8MyPhZ/7lko0oWP+v/Dfl5fIIsgt3qFbxqqwznjHQGVXSxD8G4O1Vz2Gx6ixlUb1FRmoUMUjn3IVBINpS24iKkK21jO6dQmhhNLLY70gZUeaD6MXAHxm3YJFqpAeMuDxxhR4dbs4ZhY6s8Ki3QV/pZ/3dxnDdJbCVLFpiOuLXtOPgRdXEmUi33dbQqbGjkPnIjMDfScnf54AfMGdsCfaUdXtAo1/Kers6FkKTiN5AEw4+Aj5G22Gt7ujob9nnpZ/1HiZJRV9ZVdWuC25CkiwNcr9q5X6GSKPwVJvgrgFfw1gI2AKav9Fp4JWLWBHBmur9UdWKop6tzSaIq2qO7e/taVvszRg4BAkRupRqH3LuAxxGX5lMG2snP+l8Q/Z5yXsGLp9NCKiO2QdrYNwJOqu4493BkkllJ2G1pz9V02AW3S5GW/S+Arfys/0SyUTUHftb/E2KcMsVur7dJ2PoxwZ1E950rMe7q1RxWzmf+SrTgkU/liusNKw5FUeLgULu9vFnv8aMSE7wC3GFHEwbbVUkeTSwqWGHxDLJ6vTlwi+p0NQVnIZOsR4Bfx3je05BVt1eBw2M8b6LYqouT7XCyV/C+EesFJLFbqfI8RFfOhuRUwAPeAfYehpP5OYhmWcNaoHu6OucCeoHVEb2xn3X39j2GtLNNB3YgapFtFMcBPrA4cEWdVbeHAC8irb0XxRhbayMVnD9FfpfHz/KdykPqradfN2MLpOLwTSLB8Go5CXEu/DOSTG97unv73iAyFjqtp6tz2cH2T/eXQqLPo2ypIz1YEuY65H2+OHDgcGP9HyboJ9LgPNa2Nw+wrzsG456NmM+AyBhkhyH10FDs/eQs5P83E9jRz/r3JxtVc2EXeLZGkq5dwOVewRvuPOkExN10XmThfuEqj7scuBnbnq96i4qSIMZdA1lwmoE+WyVB5ZlsF4y7eKKRKIOiiUVFEL2pLZDV2i2AmzDuXMkG1cbIRHh7ZAIwcRhJmS9hnWcrk+l9bBvmaCIP/AXRubq8AS3R9yIrZ2OBi9XIZQCMuxHQbUd7YYK36jmNV/A2JZro79kI13Lr5HsRsqjyOfDz7t6+lwG6e/seQFyoAY7o6eo8eM5nGT7W9XYXxKF2C6T1uzZM8DGwK3Lf2BnjNqJyt7WQv9FKO/6VmOA/AF7BWwpJGPPNN8LLicxWTLq/VPX7rKerczVgHzs8rLu3T3WXIi4HnkCkBS4caud0f+lPiKNuJQk2R2zVYqWq8chhG27Migl+BUy2o+sxbuqr+7jjECOZSiL0SEzQ3eSaW0cTxbuPNY5SZsPP+vcgHQ8zkXv/ecN6jjDBDMSA72VkQfd6q9U2KLPpLS6D6i0qSpJU5k232wo6ZWR5Alm4HQ/sm3AsyiDoh5QSYYIHkTbSaUhL0HVq754A8jOfZEdXWC3MYeMVvHmBq5FJ27V+1h91jmZ2wplF3sMZxNQibiYi1b0/INJQUipIRUYBeZ9dgQl+W89pvIK3EFEL9IV+1n9ssP2HwRHIg0oI7Njd2/f0rN/s7u27nkiT7/yers6tGxRHReurUpU5ySt4K9Z8EhM8QdQqegnGXS6m8FqVTmA9JGk8a4vt/kib/pP5a2dsiFS//Ru5R1aFTUr3IM9St3X39jWkTb9VsUnW/ZBK0S17ujq3quKwo5GKsc1KHelNBtnvBuA/iK5uNa3WtXA44mD/NcTVN5KHMe58SAfBbkj1yh6Y4Ow5naRZ8AreAUSmN91+1q/6Pd6O2KTrHnZ4CNH9tD5Eb3NrRDexkyod48v5zMdI2/oU5Hlm1HSYKErLYNwlgJ3taFKCkbQvUlxTqVo8SLsqmxdNLCpfRiqytkUmAjsiujD6PhlZ9gC+g+hTHT/EvrVwEvAt4A1GsSC4n/X/QfRzm+QVvEFb8GpGnD4r+ltnY9yvxXr+1ucixNHyPwzvfXa2Pc+LSLIhdnq6OrcjcvI9tLu3784Bds0j2mQOcGNPV+f6jYjHch7wKDA/ovNVT+X4qcBTgEs7LxDJ/7uicXY+JngdwCt444EDAFZ+LbyWaMJ+TLq/VEsr6+aIAdo0orZfZRa6e/v+TlR9eKHVMh2QdH/pRaJWs7NLHek5vnf9rD+dKFF8hFfwFowjXgBMMBVJ6LyPaESKW7txFwEeQJI8U4CtMMG1sV23AXgFbyein+epftav3Xm+DfGz/nVECetjvII3vL9vEzyDvecABuP+rJrDyvnMc0hyE+D0VK7YyM8eRVG+SmUR8ikrHaYkwy2IVM3XkTyF0oRowkj5KlJhtAOyGr87UvWiLZ8jgRguVCoLTsIE78RxWq/gfZ+oNXU/P+t/EMd5m5ge4ElgIeCq2FuiZdWyhFQ5nTb4rm2EcXdA2r5mALtigk/qOY1X8DYhandoVAv0esD1dnhhd2/fgLp63b19IaKveReie3pXT1dnR9wxAfhZfwZSdfsxsC5wZM0nEZ23XRAjih8R/e23GzsCqyEujrO21u4ALAG8dvL1M1ZHkrhPA1W3h/Z0dY4jMty5oLu374U4Ah6lnIosNCxNdffLU5GFtTWIKkXmxE1IlemiQLwyBdLutjNSyXwgxu1GzGXWRd5PP6m3Gnuk8ApeJ6JH6SDt3SckG1Fr4Wf9i4ncys/wCt4vB9t/SExwDbMsUGHcaivSr0Te62OBX6VyxcWGFYeiKNUh1eoVHd9JCUaimGAa0SLZRM1LNCeaWFTmjAluJ9Lq2hc4X/+IR4TjkAnvv4hJINgrePMgelBjgBv8rN/Uk6E4sMmZ3ZGqklmTVPEgH3CVh439Me7asZ6/FTHussAldnQqJniyntPM1gI92Qrqx0pPV+eKwJ2IXstvidz+BqS7t28Gkqh6ClgEuKenq3OpuGMD8LP+y0RGQSdZ9+LaEC3Bii7QqRi39nO0MtIqU6loOxMTfAD/M7GYALDKyzNvHhv+795wlDUQqZZ9gDTwLrq4MCjdvX2fI1UfAAf1dHV+f7D9rSN3pdL01FJHet457WerFiuGXYfbe0d8SAdHpQ32HGAV4HVgA0zwh1ivFTNewfsRcCuRW/UEP+vHotXcTvhZ/yyi+8iFXsHbfZinnIh8hiwM3G5b6wfF6i3ujzwXLgNcp3qLijIi7AAsCbxGDQuPSsO4DJGU+D9gnYRjUeaAfjApA2OCmxHx6hCpBjhLk4sNxLgrEyUCDrXJqzg4AZkAvzXL+Uc9ftZ/nqiFtscreCvEegETPIJUETiIkUt7tpsCVi6hgEyW/sTwEi1nIa7GL9GAFuiers5FgbsRbba/ILqKM6o5tru37zPg50j1VQoo9nR1xteC+WWuRx5k5wJusBqptXI18BtgHFIhM+QkdhSxL/I7egO4YJav/wCRmphy9C0zV0B+vvel+0sPV3vinq7OhYnkEE7s7u37MIZ4RzXdvX0PIu9pB7jcVnwOxgXAK4gcwmCfWzcDzyN6iIcMsl+9nIS0P2Ovsx4m+HsDrhMbXsFbG1kwmcdu9/SzfjMbyzQ7JxJVK13lFbzt6j6TtNlvC7yNVOReVs1z9Wx6iz9FtIEVRWkU8nc50Y4m204QJUmki+9GO5qYYCTKAGhiURkcExQQ8XUQHapTBtlbGR49SALgXkxwdxwn9Ared4laKQ/ws/77cZy3hbgAeAxpdbzGK3hx3/MOBz5CVs/2GWLf0cxEYCPE1GaXeh/AvIL3E6L7zV5+1q+rlXogero6xyPGC99CkhY/7+7tq6nNuru37x1EW+8dYC3g1iqSJDVjq4v2RzRl0kTOxtUjgtf7IMm1DgZx2h1VGHcBIp3VkzHBZ7N8dyLAmi/MvHv8dLaxX6s1gX0skpguIc7HSnV0A+8BqzNElXC6vzSFyMjo6FJHevE57Wer0ytJ3m6v4LkxxSqIq+9WSFv0upjg5VjPHzNewVsFuBdYEHgY2N6amil1Yu/FhyGV9GOAm7yCl6n7hCZ4FehCJEN2oUrzoXI+8zeilv/TUrniD+qOQVGUofghsCZi/Kaf881DRbZoG9sppTQRmlhUhsYEVxA9zByLceM0FFEAjLsJUgk1nZiMVbyCNzdwLdIK1etn/V/Hcd5WwlZp7EGkNTc8jaTZMcEbRAmM0zHuHCe/oxrjekRJr0Mxwb/rOY01X6i0QF/sZ/2qK8iqwTr4Xg1sgCSDM929fW/Ucy6rp5dBEqmbAZfZ88eKn/XfRarGASbYxGttmOBdIofTg6o1DWhxJiCSEi8AV1W+6BW8FPALgAl3zqy0sd+U7i89W+2JbRt9pTKuu7u3b3oM8bYFNilf0fs0PV2d3xzikJuAZxGt3MGcdG9BkrwL04iqfBN8ggluqrTTNyv2/X0/ojn5NLCln/WnJBrUKGGWhZ6bkSrn272Ct1HdJ5SOh4p+43kYt1pTlquQip2K3mL7PXMoysgw0W4LmKDdijKaFxP8DVk0G0uVizLKyKGJRaU6TDCZyDnzZIxbu6GAMmeMOxdRm81FmKAU05mPQ4wL3iFuYfsWws/6LxK1DeW9grdyzJe4GPgr0op35uC7jjKMOw8yyZkb6AOuGMbZzgKWB8pEE644ORkxlpkObGPdauumu7fvaaTqpJK8PnHYEc4BP+vfQ6Rdea1X8Gp3ITfBfUTtwNdg3CViCq/5MO6iRFXax89WPXsQMOb7/TOfmX8q6wFfEC0MVMuZyPv9fqQyTKmN64CHgHmBSwZLyKf7SzOJ7t0HljrSK81pv9mqFg/zCt7C8YXbGngFbymkZXtp4J/AT/2s/3GyUY0uZjHWugurz+sVvOHofJ2LJMXnAm7l/9k76/BGqvYN32m7zm4WdyieAQ7u9uHW4BI8yOK2EKT44OXjC/YBv8UZPLikuH242wATvDgsshvWrfn98Z7sZLuVWJu0Pfd17dXtJDk5bZPJmee87/PYwS49e3P8Fr9A/tbGb9FgKDcSrLSL/u6azu5qqAjZqsUj+pnFT9VjPowM+WOn4/itSZdhB0dXcDZ9iaMQU/i/8C+OSkI5ag389r5j3ahblnTpXswNwAvIxeztylHl80O00zPxg1wOKaDyoC9wEaAQ8XqUbr0tGOWorfDDHbqjBfoQ/IqnI2OJ5POd3T9fYolkEjhaf3tePBIeVY5x2+FUJP12cYoPdWoEPkMq+W7uw365jUiF28dAIntQOWoe4HAyGY54qjXriznGSnnf5jtwPBLeFNgDEZNjOi3cUAD6d3YUYsC+LRKI1CFWynsBeAoRXzqzA3gAeX0HySOMqS+hNxueBZZDNma2daPuXxWdVB9Ft5VHEBF3GPCUXm8VjnxeHoYIwYsi4mKXthotTQ0T8f0Wt8ffSDEYDOXheMQP+OkyFnsYykcS+BYp6DiwwnMx5GCERUNh2OlL8FMYr8QOHt3Z3Q1dINU12d/nOeVotVKOGoCkQNcBD7lR94FSx+zt6JboQ4EJwEaU+8LTTr+J33J5va5C7dvYwS3w2/YPw07/XswwugU6+7v7PzfqvliO6WWJR8Jb4/vjXBxLJG8t5/ixRPJG/OTYMfFIuOytxm7UnYQsnmYB+ypHdSrGtIudnoL4xE1HbBf6nieoHVwCvzr7DOx0bmDFQUBws08zvw2fygrARPy/W5fEI+EapMII4KZSK177M7FE8iv83/1V8Uh4vi4echoi5u7phax2K8T0Od7W344uqrK3F6IcNQxoRjZ4fgO2dqPuz5WdVd9Gt5fvCryOtN8/qxwVKmowOz0R2B2x59gESR/vkpamBhff2uWi+sbmTYt6foPBMCd2cAS+Bc1VFZyJoSPE+/i/+rsT+/BGea/DCIuGYrDxWz6vxw4eVsG59HZsZMfFpbQ20lwaEcPhvzD+E7Nxo+4P+ILiRdrkvpw0An8jwQTl9XKsNuzgSCQFOgDchJ1+ooTRmpAW6O8pcwt0PBJeFT9Z+V4Kb3vNl3OR30ctEuayTrmfwI26b+OLMdcrRxVuWm2nPwbO1N9diR1csUzTqxbOQ1oUXyWnTVmHNp1QOyvDwc+3ZquV/2OlvLEFjL0/sA6yOXFumebbn/k3Uqm1IF2EClkp71PELxjgP17I6ugi4mHgE6RitSxexdWMclQ2jGpDYBxSqfhNZWfVP9CbPQ3AB8hr+HnlqGWKGsxOf4FsfACcgB3cL89H3grchfFbNBjKyaFI+JWHVIIbqpNbkfWYBWxT4bkYNEZYNBSOtG+cgb+TcxN20JQiF4odXAW/jXK0bqktCeUohS+enOBG3aKqyPowtwJPIuLD7cpR5asslJCMbPv5BdjBxco2dvVxHbAk8DUlXMBr8/tsG/lh5fQEi0fCiyKVPCOA14BDuqt1VY97OPAcMBRoziOYohguBt5BqmSKTTm/EvG4GwrcnU/rXa/ADq6EH1JzRpu2/O2Albb+KDN1nqksiLTuX9F2iI6IR8JD8dtwL44lkoUIkoZ2iCWS08lJgI9Hwpt18ZBzkXTOjdEBPG3RVYtZO5ETlaPmL8NUqxL92XU3ckE1CdjRjbpuZWfVv3Cjbho5t3yO2FS8oBy1eFGD2enHgEv0dzdjB1fr6iHab/FoIAUsBtxp/BYNhhKwg7X44WxXFWvvY+gB7PQ/yDUd+EE7hgpjPoAMxSEn25OR4IoAcDt2MFLZSfUipGz7SmSn+RHsdMntn/pC4zZgAPAYUqFlyEEnOx4BjAfWpfwhITcjws9w8mxp6nXYwX2REJRZwAG6latgtOdddlEwxo26L5RphsQj4WHAE8BSiDfhrrFEclq5xm+PWCI5A/Hf+wjxMXw6HgkvUM7n0P5eByICy1YUE8ok7cFRpMJpHbopdKYCXIicT5/ATr/e5rYTB03PsO/LrbOy97VSXiEi9imIcNCCbxpuKJFYIvkavk3BjfFIeFBH97VS3s9AXH97mReyOhLEH0X8NYfjJ1D3KZSjAohv8B6ItcGubtR9q7Kz6p+4UfdPRNz9BlgGqVwstnLwXKRCagjwsO4M6JQcv8UpiMjZHcFnBkN/YWfkffw3Ug1sqG7+C2SAHfTmsqHCGGHRUDwiLh6PiCk1SPXLbpWdVK8hjCxGp+OnbZfKqcDaiGBwtBbRDG3Q/lPZHcnzlKO6rAzIGxFtjkH8wPbFDm5VtrGrATu4JH5C8UXY6bdLGK0JqAd+oIzm8/FIuBa4B3kv/AnsGEskeyTIIJZITgB2RH6mFYAndLVb2XCj7pf4gsllRbX02+mf8KvFzsAOblKm6VUGO7gOcnGdwQ8YA0A5ygK2a3g3kxk6nWHAd4gokxfxSHgx/Iv102OJ5NTyTNqgaQR+B1bS/++My5Fq0xXowCO0jdfi8cpRZRX3K40WFeNIu14rsI8bdcsSRmUoDjfq/oJs9PwEhBDPxZEFDyS+YfshtiDLAXdiB7u8TmtpaviUOf0Wu6r+NRgM7TNaf70BOz25khMx5IGd/gYpIgD/us5QQYywaCgNEVKOBO5EqkUS2MGGyk6qyrGDg/Db8K7ATuedStoRWlyw9bej3aj7a6lj9nHuQqo6BwCOctTAso1sp9/HF9+uxQ6Wb+xKIhc4DpK6+g7SllsUylGb4/t/lrUFGnlv7Yykzu4SSyS/LuPYXRJLJH9FkjrHARsAd2uxs5yMQTwEBwF3FfX6tdMPAHcg64C7sIPBss6wZ8m2EN6FnW7bDnrC8MkZdntjdrXi2VbKm17A2BchbeNvIMnDhjISSyTHASfqb8+MR8IdhmBYKe8f/M852wtZIzq462PAh8A8lG/jrlo4G98r+FA36j5SyckYBDfqfo+Ii2MRj+undFV+Ydjpv5Awl2nIBvTZeT7yNvzz+b31jc0LFfzcBkN/xg6uBWwGzETsfgy9g2wXycHYwX4R2lbNGGHRUDoiLh4KJBCh5iHs4LaVnVRVczywPJLgeEkX9+0S5ahapKV0IOIfeGepY/Z1dDXnkUjAzRq0qXIqA2cjFxgh+k6IwGhgC2Ay0gI9o5hBdIpptgX6xnJW28Qj4RPwdy0PiiWSb5Rr7EKIJZIevri5K3BNPBIuW2qdfv0eirTrrEnx7czHIxV8S+Mn7PUu7OCWSPX3DNr8HpSj5gMO2u2NVgbNpA5pU78v36HjkfBawMH625O7y6PTwP3IZ9dA4AadwN0RNwFfIoEZ7VY66/dH9rVwXAmtqVWFctTxwAX629Fu1HUqOR/DnOhq8m3wN5UeU44aXPBAdvoDfP9tGzu4Y1cP0X6LxyCBE8Zv0WAonOwG1/3Y6Z8rOhNDIbyEBKAOBUyYbIUxHzqG8iDBIwciCYWDgMewg5tXdE7ViB1cGD9R9AzsdDkqtU4C1gf+AY40LdD5oYNtssEhZylHrV22we30eKQ1HeAc7ODSZRu7EthBhR9ecRJ2+qsSRrsU8bD5Af93VDLxSHgX/ECpxlgieX+5xi4G7R93ANKeewxlbPcG0FXJR+hvG5WjNi54EDG/PhBpqTyw1/nkildt9nV5A3b6uzb3GLVAOjN0+/cz2XNio5XyWvMZWgvBccRD+J5YIllK27+hE7RgeyyyabEZfgjPXFgpbwZ+a/rJXsjqKCwjCbwHDKOM55lKoRx1IHCN/vZ8N+oar88qxI26nyAV6xOBLYEHi6wovw2pTA8gNkPLdfWQlqaGScDeiN/itvhhcgaDoTPs4CLAvvo7c27tTYgtW/Zvdhx2sHyhnIaCMcKioXxIBdM+SBLrYCCJHSz8YrdvcxFiKv8e0rZSEspRK+kxAU5yo+5PpY7Zn3Cj7v1ItUwt0hLdYXhAEdwJvIrsol1VxnF7Fjs4GEkfHYhcrN9U7FDKUf/CDxwZ5Ubdf0qfIMQj4XUQX8UAMr9/l2PcUoklkg/ity02xSPh/cs5vht1H8Jvf7tDOWp4wYNI0Em2cnqM9tHsLewKrIek4l6Ue4MOszou8korda0EkCTsZwsYexdgc2Aq5gK924klki34m26XxyPhzlo5HwNeR0IuLmjvDnqDzdbfHqsctXB5ZtrzKEftgrS6goiL53dyd0OFcaPuO0gb81SgAbhTd5YUymjgbWAk0gnUpV+v9lvMbpheUN/Y/K8intdg6G8cg3TcvYGdfqfSkzEUzD2Ip/rSyNrNUCGMsGgoL3Z6OrAncgE3DHgKO7h+ZSdVJdjBNfHLtE/ULeRFk9MCPQh4Bv/Cw1AYxyJty6vgX4iWjuyiHYOkJ++aTztTlXIRoJDQhFH65yqYNi3QN7lR97lyTC4eCS+NCJ5DkffBsdXUshpLJK/G91S9LR4Jb1nmpzgBqf5cNud5CuUC4F3kAtbJJzCg4tjBWnyfzyux07+3uceuS47NLLnpp7NfCo1WysvrdRGPhAciQSEA8Vgi+UPJ8zXkw9WIN+K8wJUd3Un/HbPeiYd4IUt1cNcnET/YoZS5YrinUI7aArGZqUU8bk8yXQnVjxt1/wfshlg07A3cpBxV2HnVTk9D1tNjgdWBG3SVdqe0NDXcjrxWaoAH6hubVy3oeQ2G/oRsnmetB66q4EwMxWKnp+CH8p3Y2V0N3Uv1XzwYeh92eiqyoHoJqc57Rpvi9l9kMXg1UlF1L3a6HN5vxwMbAROAI8zFRnG4UfdP/ITc05SjNijb4Hb6U/yFyn+xg0PKNnZPYAe3wPeIPKwd8aYQLkHErx8pU6BCPBIeiVRIL4x4rOwdSySL8n7sZk5FKmMHAI/EI+GyJZG7UTcNHIS0XI9Sjtq54EGk2vwApBU1929ezRwIWIjP5H/auX30fi+3Zhc5D1op790Cxj4G3wf3stKmaciXWCI5E2nvbwX2i0fC23V0XyvlvYWE6QTooEK5TdXi0cpRi5R1wt2MctR6wOPI5uGjSJV3SRuShp7DjbpPI+2VrUh7/1U61Tt/7PRPQATZoDwAP/SsK44FPkC8SF+ub2xes6DnNRj6D/sBCyAbtCYMq/dyPRK8syl2sHzWVoaCMMKioXuw05OR8ILXkRTZ57CDZbuY7oXsBWyKeN+c3sV9u0Q5ann89sVT3ahrKmpKwI26jyJJ0TXA7cpR5RQAzwd+QUS1kv/2PYakq92BXLjfiJ1+otihlKM2ww9VObwcLdC6quxBpNL0F6AhlkiWpbW63MQSyVYgCrwCjACejEfCZWs51tUxcf3tzUW1fdrpL5HWO4BLsINrlGVy3YFUGGTbQS/FTqdzb1aOWtv6IbPx2t9kyMgFed7hTPFIeH784I+zY4lkORPLDV0QSyTfww8S+r94JNxZ++eZSEXY9l7I2rqD+zwNvIW0Tfea869y1CrAU0iy9QvAvm7UnVnZWRkKRdtVZD1Dj6eNZUNe2OmX8V+7V+ZjMaT9FrdGKtHnB16sb2xet+DnNhj6MlL0MVp/91+dF2DojdjpX5ANfDBVixXDCIuG7sNOTwR2RDxi5gOexw6uXNlJVQCpUsu21V2Gnf6xlOF0O80tyIXSi8CNpU3QoDkBEahWwm+xLB0J6Bmtv2vEDi5ftrG7l+uAJYCvgVixgyhHDcVvgb7ZjbrPlDoxHawxBtgK8dcLxxLJkt5X3U0skZyKeAJ+DiwOPKUrLsvF2UjV5oJI210xKdQ3I/51A5DAgGqtsD0KWAr4GXmdzkEgkzlx/5dmyf/hZivlfVnA2OciLeEfA7eXOlFDUZwD/ISEPJ3b0Z2slPc18H/62397IWuuNW2bhOijlKMWLfNcy45y1LLAc8i66W1gVzfqTq3srAzF4kbdO/B9D89UjirGs/UK5KK5DnhAh010SktTwzgkpfoN5Jz2fH1j80ZFPLfB0FfZArH6mYRcVxl6N9kQl33yOUcayo8RFg3di6SObo/fkvECdnCFyk6qxzkFuQj+EV9gLIVjkOTMSUhrlGmBLgNu1B0HjNLfjlaO2rSMwz+IXCgOQlqiixF9eg47uC/SwiXtV7JJUCyXAMshQkFZWqCRSqVDkBazvWOJ5IdlGrdbiSWS44AdgF+RSstH4pFwWQKD3Kg7DWmVmw7shO/nmj/in3k40gK8MtXYBmwHh+NXINraW2c2ylGLrvNlZt8Vf4HWAFMpIOgiHgmvhC8AxGKJ5KyyzNlQELpKNNvyeUoX1gEXAv8AawIdhSM9h4grg4HGcs2zO9DC53PAosCnwI5u1C3l/GuoAtyo+3/4Pp+XKEcd39n950LOzYchG1OLIuLigK4e1tLUkEbW4Nlq+WfrG5s3K+i5DYa+SzZc73bs9LiKzsRQOhK88wayOX50F/c2dANGWDR0P3Z6PLAt8AmwCPAidnCZis6pp7CDS+BfyJymW8SLRjlqGaBJf3u6G3W/K2U8w5y4UfcpZNcygLREz1OWgeWi4DhE9Nke8SCtTiQVOFsFdBF2+u1ih9LibG4LdLqz++dDPBLeD7+d7PhYIvlkqWP2JDoIZAfEG3Vz4PZ4JFyWz2I36n6CL7pdpRy1XMGD2Ok/yG3ds4Pbl2NuZeRkxA/pS9qpKBwwM3P0vv9rrQOoyXCFlfJ+LWDsy5GKoCdiieQLZZiroUhiieTjwMNIaMmN8Ui43VRdK+X9iW8LcrEXsga3vU+bqsUjlaMW74Ypl4xy1HxI8N2ywLfAtm7U/buyszKUCzfqXo4I4QDXKEcd0tn950I2+HZHhPRNaN9bdi5amhomIJ85zyOhik/XNzZvVdBzGwx9DSlyCevvrqnkVAxlJVu1eJS2zTH0IEZY7GUoRw2s9ByKwk7/hbRkfI60V76EHVyqspPqEZqQRMrXkWTHotGtjTcjC8P/4Ys/hvISQ6pLl8UXcUtHPOyyFatXYQfLI1qWE0kDdhBf1LcpoSU8pwU6ANyqjexLIh4Jb4qffh6PJZLXlzpmJYglkh8jF4gzgX0o5+tM0nT/h5wn7lSOqit4BDv9NHCt/u427OCC5ZteCcg8slWvZ7f1Q1KOGrz5J5nRS/wFM2qZSAehHu0Rj4S3Qio9ZyJhO4bKcwIioqyPtL93xDXIOXtJ/I2MtrwAvIZUjRfTitqt6E2sJ4FVkYrmrd2oW4gobugdnIcf6HazctReBT3aTn+BhHUBnIAd3C+fh7U0NUxGzm9PITY6yfrG5mrbNDIYepLsZ0WzXp8b+gYPI+uBhZD1taEHMcJiL0I5al3gK+WojkzKqxs7PRYxk/4KWBqpXKzKyoGyYAc3RFqzMsCJumqtFI4AtkQCYEw6ZDehq+oO1d8eqxxVzp39S4AW5AL4nDKOWy5GI54zk4EDdVpwsVyEJOv+TAkejVl0m+qjwEBk4XBapw+ocmKJ5PP4r7NT45FwYa1xHeBG3VlIUMwEYEOK/z2dhmwELQLcVCXt+2ciYRbvAw+1vTE4KXPg7m+0Dgcgw/lWysurQlZXw12hv70+lkh+UZ7pGkohlkj+jC8CXhqPhNtdL1gpbwriMQpwphey5m97H121mPVrPFw5qmzhSaWiHDUYObetj6Scb2O6Efom+nV4MrJJXAPcoxzVUNAgdvox/Crdm/MNRmxpapiKdEs8htgCPFbf2LxTQc9tMPQF7OBI/M6MKys4E0O5kQ3nrPf2iVWydu03GGGxd3E24tX3nHLUf5SjyuLN1aPY6V8Rcew7xHfthT5psCqVX9ly7Nuw0++XMpxy1NL4bS9nulH361LGM3SOG3Wfx68IvVU5akRZBpZW+Owu6clVFWYkFyeX6u9Owk5/VexQylEb4wfWHO5G3fGlTC0eCS+IVPPMB7wDHKiTlns1sUTyTkQsA7g6HgnvXo5x3aj7PdJ6D3C+ctRaBQ8i3oX7I6m7u1CMZ2M5sYNL4/sfnoGdnuPvrxwV2P69Vnv+CTBpEOMHtM6uuMyHg4HVgHHABWWZr6FcjEFSnYfjp0W3x11I4E6QDjZt3Kj7ElLNO5AqqVrUFcX3IkFUE4Ed3Kj7WWVnZehOtLh4FPJ3rwMeUo7assBhzkXa5ocAD2uhpEtamhqmAXshvs8DgYfrG5v3KPC5DYbezmFIV8enSAimoW9xE1KEswaSSWDoIYyw2LvYF1lkg1QAvakcFargfIrDTv+EiIs/IAm8z1dNq135OABYF6kaOquL+3aKboG+CanUeZ3OL64M5eM0xOdqKSBetlHt9BPAE8gFxXVVsZsmPiR3IRcaSeT1VhS6Bfo2pAX6Nu1bWTTxSHgIUmGxLLIhsXMskSzJq7TKaELO6wHg7ngkvHGZxr0TqeqrA+5Sjio84dlOf4R//rq6wsFbNvL6fBHxCpuDFX/K7LjdB5nFAKYO4Cwr5eWVohuPhIfjt/xfEEsk/yrPdA3lQG8gHIG0qO8Wj4R3ae9+VsprxW9hP8YLWR35i2a9FkcpR1XUjkU5qgapXNsVmAbs7Ebddyo5J0PPkFNZ/hjSnv+4ctSGeQ9gp2cB+wHfI5v0d+oN7S5paWqYgVxP3IN8PiTqG5v3LegHMBh6K3awDn+D/6oydJMZqg07/Tdwh/7uxEpOpb9hhMVehBt1J7tR92ikleFvJAXxA+Wow7X41Huw0y2IuPgLko76HHZwvorOqVyId17WM+0i7PRvJY54KOJPORU4VC9IDd2MTuLMtkqMUo7aoYzDn4j8PTdHFviV5iJAAWOBw0pcaF0IrIC8t08uZVI61MRBWnrHAw2xRPL3UsasNmKJZDbY53GkPe3xeCRc8oZRTlXMb4CFX41aKHHgJcQr9u58kkjLjlT2Zn3Fzmzv9bn1h61XzDMV/hzO3/NP5IYCRj8dWBj4GuiVnp19nVgi6eJX7F+rxeC5sFLec8AzSCLkJe3dx426/0NezwMocdOvFPSa7UpEXJoF7K0rKg39BDfqzkA8wLKhKk8pR62R9wDiXb47IkqH8e0AuqSlqWEmck69HQlIuqu+sTma93MbDL2XXZGCgT8Rcd3QN8kG8uzabwJjqwAjLPZC3Kj7KCICvIC0QdyItFLM5StU1djpbxBx8XdgdeAZ7GCwspMqC2cAiwLf4LdDF4Vy1BL43l/nuFHXGAz3IG7UfQX/b3izctS8ZRnYTn+Hn2x8RUVf93ZwS3wB8DDthVoUylEbASfpb48otQUaEcP2Qtpxd4slkl6J41UlsURyFiIwv420ez8Vj4RLtohwo+6f+D6OJxblzystx1FE2F2XyniDXoSsVx5pL6X8vMNX2XCjVGZFgJ8WCJxtpby8Nl/ikfBS+P6fp8YSyenlmrCh7FyAVJAvgX/ubI/TEF/jvb2QtX4H98lWLR6qHFVfthkWxnn4VTMHu1H38QrNw1BB3Kg7FRE6Xkfa+J9VjrLyHsBOfwAcnf0OO7hjvg9taWqYhbSE3oicX2+rb2welfdzGwy9k9H66xht+WLoi9jpzxG7iAC+NZChmzHCYi/Fjbq/ANsii+gZSBXjx8pRW1R0YoUiCXdbITtH6wBPYwfbrUboFciuSPZCNYadnlbsULqi4QZgBCI4GIPhynAmEji0GH6aYzn4D/AlUi1VGV83OzgvUhEYAG7ETieLHUq32mZboB036jaXMrV4JHwEfvDIobFE8uVSxqt2dHv3TkjlXD3Q3FFlViHoVvSsX+jtRYnjdvpH/FTes7CD5WrXzuO5g+sjn2+tdFCRs8oPmRsGzoSWhRi/xneZMe3dpwMuRapEX0ZaEg1VSiyRnIL/Gjw+Hgmv2979rJT3CVKFBfAfL2TN1c3hRt1XkSqxOipQtagcdSK+uHm8G3Xv6uk5GKoHN+pOAhqAD4AFgeeVo5bNewA7fRs5dhrYwY5sAOaipamhFXlfXasff1N9Y/Ox+c/eYOhF2MF1gY2R62bTodD3uUp/HdWrtYVehBEWezFu1G11o+7lSJvgl8DiwAvKUZcqR/V8u1qx2OnPkLToccAGQDN2cFhlJ1U0lyN+OS8grY2lcCCwIzAd0wJdMdyoOxmp2GoFDlKO2rksA4vonN1FOw47uEZZxi2M65AKoK8pPbn5AmBFpAX6pC7u2ynxSHh7/EWfHUsk+8WFdyyR/APYHvgDWAu4Px4Jl+Ncfioiji9OsYtpO51AfDhrED+v8gQadfqcwQB+C7ejd6Dn4IktrLVX+SGjAN5ZseZiK+Xl1cYfj4TXRzzKMsDJuiXdUMXEEsnngLvRGyHxSLiug7ueixi3bwJ0dL7OCnsHK0f1WJuUctTB+Bc757pRt5CQIUMfxY26aWA74HNkE/N55ah2U9A7YDSyAT0SeAg7ODTfB7Y0NWSQ6tmsl/S19Y3NJX2GGwxVStZv7z4dJmro2zyD6CMjkJA+QzdjhMU+gBt130cuQm9GFtyNwBvKUZU02i8MO/0xUoH5D7Ap8Dh2sPCwgUpiBzcH9kAEqNGl+NQpRy2G34J7nht157qgNvQcbtR9E9/j68ay2Q7Y6eeAB5Bz8fX5mq+X57mD+yLtt7OAA7DTE4sdSpvOZ4XJI9yoO67YseKR8OrI76QWMV/uVym9sUTyG6R6ZTIiMt4Qj4RL8tDVFTEHIH/rfZSjivX1PA4JC1gG37+mO9ka2ALZXLHbu8OgGdxSk4GPlglMenDTmivau09b9O8ze9/bY4nkh+WYrKFHOBnxmF4Dv6VtDqyU9xN+hf9lXsiaS5x3o+4bSJtUHQV405WCctRuwC362yvpvKW7z+OFrPm9kHW8F7Iu9UJW3/DYLgFtXbE1YqOzDCIuLpTXg2Wjck/EJ3l14IZCguG0uHgqvjfpFfWNzY35z95gqHLs4OJARH9Xkk2VoZcgVj7Zv/UJPXqN1U8xv+A+ght1J7lR93BkYTEOaSv+UDnqkF4T7GKn30N2bCci3osPYwcHVXZSeWIHa/FPXmOw058WO5T+e/0fsvP8Hr6gZags5yHVBAsjlX7l4iTkNb8hflhM92IHl8Rvj72wPd+6fGnTAn1HKS3Q8Uh4caAZSUB/CTi8P1aSxRLJd5EFcCvymjiv80d0jU6bvVB/e71y1JIFD2Kn00gltfgu2sG9Sp1Xx88VrMGvVrweO/1D27t8soq10ZJ/snprAJ5bM3CVG3Vb8xx9L2AjRLztEVHJUB5iieRY4BT97fnxSLi+g7tehlisrAR05BuXfV9FlaOWL9sk20H7m96H9rIDYjpgqV/hhaxaL2Rt64WsBFLdfg2yGe56IatwD9g+hht1f0XsgX4CQsAzedtX2OmfkM8N2SyEglqatbh4Nv774tL6xuZz6xube8c1hMHQOccgG0mvYqffr/RkDD3GHYhH+PJIF6ChGzHCYh/DjboPIbuV/0NS5m4F7itb6ER3Y6ffQt742Wqd+7GDAys7qbwYBayGiLrnljjWvkj71gzgEDfqzixxPEMZ0Cbr2QTPiHJUeUQVO/0zfjXWZdjB7g1hEsHGQYzi3wYuLnHE85GL91/poIIoH7SfYBJp100Be/TnMI1YIpnEN+U/Lx4Jl8NU/xLgHWTT4jblqMLXAHb6VfzU+xuwg0uUYV7tsQewNiK6z5Xw64WswORBkv78yqqBGe+uVHNZPoPGI+HBiOgEcFkskfylTPM19By3I76YQ4Hr26votVLeP8i5CcD2QtZc/kpu1H0LeBqpju42gVk5agPgUWAg8BBS1d2vREUvZC3jhazzge+Q9rS9kd/HR0ir2mLAc17IusILWYMrNtEqwI263yPi4likMvdJ5aj8/MHs9MtI0j3AlYX64bY0NWRamhouQEIIQd5DFxlx0dCrEWuAI/V3V1VwJoaeRrqxbtbfndjZXQ2lY4TFPogbdX9EFiVnATORBdzHylGbVnRi+SIXrjsBUxGB7R7sYEdeSpXHDo7Eb2mysdN/FTuUctTCwH/1txe6UbfoykdD+XGj7nvkVFHl3abUNdcAnwHz046IUmZOQtpLJwMHYqeLFq71BXO2BfrIYlugtVdaArmIGgvsGEski26n7ivEEskb8c8tY+KRcEm7rW7UnYFUHE5BPiOOL3IoG6mmnhe4veztJXK+z/7c/8FO/9HOvXYMTmbV6bXw5Lo1t7tRd0Keo5+IhOP8jKkG75XoKuajkBb5HZA1TnvcgHiLLoS0ebZHtjrrwO6wj1GOUsCTyEbvs8D+/WWz0AtZQ7yQtZ8Xsp5HEr3PBZZENmCvBdayUt6aiJVPNnTpJOAdL2SpSsy5WnCj7pfANvje44/p7oB8uAK4H6nOasYOHlhIWzRAS1NDE2I7ABJgd7kRFw29mP2R9XULJqitP3It0mmzNXZw1UpPpi9jhMU+iht1Z7lR9xIk/eobZDH3snLUhb0i2MVOv4gkgU5HKlfu0O3G1ci5wAKAh99eWjC6Bfp6YD5kF7+p0wcYKsWFwMfI33xMWawG7PQMpE0D4HCdhFt+7OBq+MLlSdjpr4odSjlqMNLSVwPc6UbdJ4oZR1cbXYMIBFOAnWKJ5HfFzqsPci5SYVoLPBCPhNcpZTB9wZoVgy9Tjlq54EHk9XoAIk5vRQmVqh1wMBIE9Ce+F+JsvJBVO71Ojj+9TiDTsnDg0rb3aY94JLwQfgrwGTqJ29ALiSWSX+BXW18dj4Tn6sqwUt4MpM0WIOaFrMXa3kdbBDQj57FzyjlH5ajlEDFxXuBNYHc36k4r53NUG17ICnghay0vZF2HtDrfjZwjQJK49wUWs1Le8VbK+xDASnmTrJR3NLKh/AeggHe9kDXaC1n99jrFjbqfIJ07E5HNwAeUo7ru4BF/78OAt5DOhDuAR7CDCxfy/C1NDVfiB8zFgKuNuGjodYioPlp/dw122gRh9jfs9PfAI/q7Eyo5lb5Ov/3A7i/oRfOayIVpDdLu84py1LIVnVg+2OmnEc/Imchi9OaqM161gyvhV/2cpC+4i2UvYHfk5z1EVxcZqgw36k5HWqJnIOL3fmUZ2E6/glwAiMBcbiHdDg5GUn0HAk8AN5U44vmIB9RvlCYsnYy0/GaA/WOJ5DslzqtPoauzDgeeQ1o/m+ORcKnn7zFIC+gg4K68LlbbYqe/wK9ouRQ7uHqJc9LjBofgWwNcjJ1urxJxv4EzWXHiYGhet6bZjbr5CtEXAMORasu7S5+socJchtgmLIzf3t6WR4A3kPdOR0FQtv66v3LUSuWYmE70fR5YBPgEaNAhSn2SbBAL8CHwPrJRNhL4AfmsWMZKedtYKe8+K+VNbW8MK+UlEVGxGTk3XQk844WsQtKR+xR6DR9GOngakPN112sDaf/bDBHLZwC7AJ8V6ovb0tRwHXAE8vl8PDCmvrG5utbhBkPnbAOsjAj0t1Z4LobKcZX+eiB2cIFKTqQvYz4c+gFu1J3gRt2DEXEujbRVfKQcdUBFJ5YPdvoJYB/E1+5g4P8KbenoZq5gdrtJ+pliB1GOWhA/EOQSN+p+VIa5GboJN+p+jH+Req1O8S4HpyHv0bWQVr9ychFy0TYWGFViavn6+AEKR7pR9+9ixolHwnvgt6PGYonkI53dv78SSyRnIJXbHyFtnU/HI+GiF0ba3+1QJF13TYoPh7kREakHAndr8bpUjkV8Nn/Ab4+cjReyBrUGpFLtsQ1qGDc8kFc7czwSXhURaAFOjiWS+Qa9GKqUWCI5DRE9AA6PR8Jz2b1YKS+bdgtwiBey5mqD0hYXT1CmqkXlqPmRSsV64Gtgu2JtIqqZDoJYVkc6Te4DtkUERdtKeS35jGmlvN+RysWjkQr2rZFglz274UfoFbhR93/IJuYMZAP65rz8ce30DOz0RcC6iLg9P+Jbfl8hXs4tTQ03ISFircj77Zb6xuZq7SAyGNoyWn+9VQfQGfonrwMfAIPx14KGMmOExX6EG3XvQxZ9ryNVG3cqR92tHBWs7My6wE4/hJ9EegRwTVWIi3ZweyRoZiZ+5U6x/BdprXUpPUzD0DM0IZUZI4GbytQS/Tt+q+bFhbYudTxucEv89tfDsNNjix2qTQv03W7UfbyYceKR8AZIBSWIqH5VsXPqD8QSyQnI+eYHYAXgiXgkPLTY8XT6aFaUaVSOKsjkH8i23I1CxOpVKNW+wQ4G8UMDzsNOt1fZdHRNhiX/ngeeWTvwCfBKV8Pqdvs48pp9KJZIvlrSPA1Vg/5bZo3Zb4hHwoPa3sdKeW8goSk1dFzZaOuv+ylHWcXOR4dsPIVUyPwMbONG3d+KHa8a8UJWvQ5i+Za5g1iOBxa1Ut6+Vsp7zkp5BQv4VsrLWClvDLLp8T7SSv6AF7Ju80LWiHL9HL0JN+o+zZyb7Ffnveaw0x8j4uJF+vERpHpx53yfv6WpwUHsL7LPf0d9Y3P1ep8bDAB2MITY7GSQjQ9Df0XWq1fp747DDla/LVwvxAiL/QydNrc5UqEyC2nj/Eg5aqNKzqtL7PS9SIVNBvF8ubyi4qKckK7U312Dnf6y2KGUo3ZDFnqzkBbofpuE25vQBvxRpDpjR2SxXQ7GILtqQeDfJY9mB+dFrBAAbsROJ0sc8TzAAn6nyIQ13cr7OLJz2AyM1i2/hk6IJZK/Ip5bWUP/u+ORcNGVI27UfQhpv68B7sg7eTQXEakP0d+diB3cttj5IFWw8yF+tXe2vdELWcGMTu+9f9Mapg4MXJlnuu72SPXUdPzEVEPf4TRE3Lb0/9vjDGQTcEcvZG3Z9kY36n6AmPoHEF/TgtGbLo8hIs5fiKjYUsxY1YYOYtlXB7F8h/yOlgLGIxtDa1kpb00r5V1rpbyiKtjbYqW8L4CNEF/gDPIZ+5EXsqp7vdpNuFH3Yfxz7XEUsgltp6djp88BNkTOrwsDj2EHHR1A2CUtTQ33ImvVmci1wz31jc3m4txQzWT99B7HTn9T0ZkYqoH7kWuXxRCrNUOZMcJiP8SNujPdqHsB4r/SgrTrvKIcda5yVPXuQNppBzhSfxdDQjQqxTGIv9wfpcxDt0xlA18uc6Pu+2WYW9Wgjdy38kLWepWeS3fgRt3P8FvnrlKOWrLkQcVY+hjkQuog7OBmJY54HbAE0pIX6+K+naIctR7+hfuRbtQtOAE9HgnPh6SkLoj4ce0TSySrKiXVC1mWF7KO9ELW6l7Iqnx1dA6xRNIDdgamAbsiwRWlzPEE4HtgWfzNksKw008iwVMATlH+NVKdm638PqsDg/VTAjD/T/PDyyrwB9Ju2Sk6cTyuv70mlkiai4s+hk6QH62/PSseCa/Y9j5WyvsKv7X+8g5CQWz9NaIctUohc9CheAkkZGMCsL0bdb1CxqhG2gSx3MPcQSyLWinvuGwQSyHEI+HaeCS8YzwSPky/T+fCSnnTrZR3FvAv5Dy1DPCqF7Iu8EJWvxO13Kh7J37Q2xnKUWd0dv+5sNPvIlYrl5NdY8Cn2MHt8nl4S1PDQ4gtx3SkLfuB+sbmuaqEDYaKYwfnQzb/wXTEGADs9DT8tWpRhRGGzjHCYj/GjbpvAGsgJva1iMH2y8pRS1dyXp1ip2/CT6k7CztY1hTH/OYQXAD/AuRs7PT4Eka7Gtk5/pyOjeV7JV7I2hR4DbkAedsLWfd5IWuJCk+rO4gjiZ8jgFvK1BL9Nn64yvVFl+zbwX2Ri79ZwAHa0L0o2rRA3+NG3ccKHUO3KT4MrAT8CIRjiWTRcyo3XsgKeiHrSsSSYAzS2veVF7L+7YWs9atFZIwlkq8hbWkZxJPw1M4f0TFu1E0ji+8McJhy1C5FDnUqEqSxCHBjERXlZyMBG+8Aj7a90QtZi6KFx/v+VUNrbWCMG3XbDYFowxFIJdufGJuJvsx9+IFEYzoQ2y8A/kGElX3b3qi9jR+mwKpF7Xd3KyL4TwV20r6NvZJsEIsXsooOYumMeCS8WDwSPgdppW5GWtmT8Ui4wzZnK+W9ilj53InvhfmaF7JWKPT5eztu1P0//A2+S5Sjju/s/nNhp6dip08DNkU2HBcHnsYO3ogd7LJqvaWp4XEkDGaa/vpwfWNzOfx1DYZycjiypvgY+F+F52KoHm5ANkbWxw5uUOnJ9DWMsNjPcaNu2o26ByAehhOAjYGPlaP2qezMOsFOX4dfeXUBdrCj1qfu4gJkkf0xcEuxgyhH7QTsj3hHHuJG3WllmV2F8UKW8kJWEvE+2wi50MogLTRfeCHrTC9k9ZlFqBt1s55DU5D0uSM7fUD+nIm0062C386RP3ZwKfxq2Au1WFkK5yK+YWOLmY++0L8ZqTyZADTEEslfSpxTWfBCVo0Xsg4BvkQqn2qRdvRpwHKIaPYW8IMXsq72Qta/vJBVUfP6WCL5IH6F32XxSLjodHIdDpANQblJOapwb087PRk5n2XT0g/p/AG5jw0ui/++aewgWOgcYOiXi8E7KwZm4L+2OyQeCY9EhBCA82KJ5Pi852ToVWgrhWOQ8/AW+JUqs7FS3h/4PqCXdPA5lH297KUcpbp6Xr2RdDUi9M8E9tLvp16FPgdu64Ws+/CDWNaghCCWXOKRcE08Et4+Hgk/ggiUFyCt1OOQv9l2wGvxSHipjsawUl7aSnkHIV6D44H1kNbow6tl06encKPu5fjdMtcoRx1a8CB2+nXkb/xffeRwwMUObtHVQ1uaGp5GUqqnIFYwT9Q3Nhft+WswlBXZjM8WoVxVSlihoY8hXvb36O9M1WKZMcKiAQA36t6FLDDeQrzd7lWOur0oz62ewE5fgQgvAJdhB0f3zPMGFf4F8IkdtOt1iXLUvMiuCUDcjbrvlGN6lcQLWct4IesORHBtQKrkbkCEmbWR0KChSNXQp17I2qmvXAy4UfdL/NCJ/yhHLVvyoHb6L3w/OBs7mH+1px2sAW5H3stvU2KllnLUujlzOaqYFmikyjdr/r5nLJF0S5lTufBC1rrAG0jF0ULAF8B2VspbGwlUiiAtjhORlvITgJeBX72QdaMXsrbzQtbASsw9lkhehSTTA9wej4Tn8o4rgHOQSs0FKTaMyE5/gG8NcA12cPk8H3k+MAB4Fjv9UtsbdVXS4QB3b1ELgUBCh890xVnI39BDEqwNfZhYIvkdfsJ5PB4JL9jO3a4CfkJErbkqvdyo+wnwIFK1mE9a+vnIBWwGiLpRt1QP2x4lJ4jlOySIJUIZg1jikfAi8Uj4TOAbJNRmV2Tj5nWkDXdxxJbnN0ABb8cj4XU6G9NKeQlgNeAlZE1xI/CIF7La+3v3Zc7Dt6+4STlq74JHsNOTsNMnAFsi1khLAy9iB6/BDg7r7KEtTQ0vIMEYk5D07ub6xuZ5Cp6DwVB+dkfWa2PJwzLF0O+4Wn/dq6BrK0OXGGHRMBs36n6LLPAuRKroosCH2let+rDTl+K3D1+JHTy6e58vGEAuSmqAB7HTpVQlXAEsilRI5XPxUrV4IWshL2RdjQgyByIXZPcDK1sp7ygr5f2i/Zc2RYSlXxGx8XGg2QtZc/lh9VL+i1RpDgNu1e1xpXIb0mY9D76AlA8nIVU7k4EDsdNFexgqRw3Cb4G+z426jxQ6RjwSjuK3Fh4VSySfLXY+5UK/bm9GhNf1EeHwVGA1K+U9C2ClvIlWyrvfSnn7IILbLkgQzjj9/eFI++XvXsi6wwtZu3gha0gP/yinIu+3AcAj8Uh4tWIG0RXTByAVSjsBhxU5n/8gbUfDgLu6bOOXzZr99XdndnCvi4C6D5cNZLylAuAvCjskHgkvh19ZG6s2H09Dt3EVsrk1H7635myslDcFX/w+ywtZ87czxvmIULiHctTqHT2RctTJOWMd60bdezq6bzXhhazB3RnEoqsTt4lHwg8ilhcXI17eaeRzctVYIrlJLJG8M5ZIToklku8h5+BPESuFV+KR8K6dPYeV8n5ExKxTkSrpXQDXC1k7FDrf3ooOroohtik1wN3KUeGiBpMNndXwN2COBz7CDm7c2cNamhr+h1Sz/oMEQz5d39jcL5O7DVXFaP31eux0wXYNhj6Onf4IWafW4nvWGspAIJPpO9XBgUBgBLJwCWYymX8qPZ/ejHLUpoj34pJIe895SLhIURV63YaIfZfiV1ONwk4X3Z7cxXPtCjyCtEeGsNMtxQyjHLUDEl6RATbRXpe9Di9kDUcWtTFE+ALxUzzDSnkd+kvpx52NiF8DkIuCK4GLrJQ3oVsn3c3oSsVPEFHlRDfqXlPyoHZwDcTnqgbYDjvduShnB1cD3kWqTo7QvqRFoxx1MSL4jAVWcaPun4U8XlfRPQPUAU2xRLIws/ky44WsOmQhcQFS0Qni23W6lfLyqYJDhwZsgeyK74ZUOmaZhLy/HwKe7InXdDwSHoz8jjcDfgY2jCWSPxYzlnLUKYix/yRgdTfqFh52Im34nyC/3/Ox03Yn930cETIfwE7PVXHjhax1gHczwKmH1fLDQoHX3ai7SVdTiEfCDyCpf88C25vU8f5DPBJeD+m+CADbxBLJ53Nv1zYGHyBCypVWyju57RjKUQlgb+ARN+ru3s7th+JboZzlRt1LyvtTlB8vZK0FHIoI+SNzbnoeqdh+pBjPxCzxSHghxALhcGTzMMtbSPfC/bFEcnInjx+BbJJsh6yPTgGu7Oq964Ws1ZHWtpX1oWuB07SI3OdRjqoF7kCSmqcBO7pR98WiB5Qgl1uQatIMItCf05lAU9/YvC5yrh2J+ORu39LUMK7oORgMxSK+eW8im6RL6dZXg2FO/Gv6v4EltZ2PoR0K0deqSlgMBAKbIbuPayPVXLtlMplHC3i8ERbLiG7XHYMsrkHU/QPdqFvUBWu3IeLiFcgOVQaIYqfvLPNzDEICVpYFLsZOn13MMMpRQeAzZMF2pRt157qgqXa8kDUIaQc/G6naAhG+Gq2U93yHD5x7nJWQ6pLt9aFfkff/PVbKq54TU4EoRx2NpI5NAdbQbdKlYQevRqqvvgKUTjZr736DkUW9QipCdy3FW0Y5ah3korAW2MONug8X8vh4JLwy0mYcRNqJ94slkgW305ULL2Rtjq6Y0Yc+BI63Ut7rJYxZi3iJ7oEIjbnJ4NOQi62HgMetlNdtF1rxSHheJCxpZeQcs0kxnoL6IvUFxAvzTWAzN+oWXu0nwUH3INXvm2Cn32znPhvrOc8CVsFOf9H2LrqqaqvXrcDUq3etHQzs7UbdBzp76ngkvClSPdwKrB5LJD8teP6GXk08Er4Gqbr6BlCxRHIOkckLWdsiYvwMIGSlvG9zb1eOWhmpoAsAa+pgl+xteyLnsxqkQvc0XT1WdXghaz5ESDwUsbvJ8gNSiX57MZ6JWbR37ubImmB3ZLMQpILtLuCGWCL5SQHj1SHCYNZyZgxwfFcVx7pSvAm/StkD9i8mrbo3olPJH0AqNycB27hRd+5zbr7YwZHI+izrVeoha+t3O3pIfWPzmsBzwPzIZ+s2LU0NxdimGAzFYwfvQywdbsdO5+/1bOhf2MFa5JpqGcpQhNGXKURfq7ZW6GFIC8uxlZ6IAdyoOw4xyT4EWaj8Cwl22bOiE2uLCCcnI2JOALgdOxgp87OMRkTFX/HN34vhP4io+DUizPUatLn7AUjy69WIqPgVIjyvV4ioCGClvC8Q0++dkXTIRZELkVe9kLVmOefew4xBKkCGALdroaZUzkU8qFZAqjg64mJEVBwLHF6iqJhtga4FEkWIigsjiZ9BxE/r4EqJil7IWtILWQnEk2tVJBTnKGDdUkRFACvlzbJS3qtWyhuN+FOtB1yGvMcHIdV4twNjvZD1rBeyjvRCVuHhKF0QSyTHIX5XvyKBP4/oFO6C0FXpUSRgZ0P89NHCsNP3IlXvNUhL9Jx+vX61OcCtHYiK2wBbtQaYec/mNYORtspOW/HjkXANvm3ATUZU7LecjVTvLoffrjwbbXfwHCKEzeVB60bdz/G9uezsceWobRHBvAYJo6o6UbFNEMuvzBnEkkBaV5ctNogFIB4JLxCPhGPIeuBF5EJ+AFItPwpYLJZIHluIqAigBcSjkc+5DHKefqKzxGiQFncr5Z2IbFT+hiTBv+2FrNMrHbTVE7hRdwayXn8OuZZ6Sjmq+HWUnR6PnT4YESp/R36fb2IHL8IOtusp3NLU8CFSyT8WWBN4qb6xeaH27mswdAt2cEmkUwHysEwx9GMkIyEbXHWiXpMaSqSqKhZzCQQCGUzFYtWgHLUCspjOmmrfgrR6TqrcrNoggRU3IIvaWcBe2OmC/eDaGTfrhTgPcFCx1ZDKUdsg1UsA/3Kj7islz60H0AErOwKXIK1jIBcr5wO3WilvRhmeYzAiDp+FmLG3Il4/Z1spr9fteCtHLYVUuwxHLjwvL3lQO7gfItRMBVbGTn/X5vYtkUozgJ2w0yWFCChHXYhcnP+BtED/ke9j45HwUCTgZF1EYNswlkgW1EJdDvTrKoa0cmdfV2OAc4rxDivwuQOIiLmH/rdqzs0ZpFLvIaT98IdyPW88El4deBV57d0H7F+MoKscdRDiJzkTWN+Nuh8UPBmpevkY8W+7DTt9aM5tWUuIacDy2Omfch/qhawa4D1gzRdWD/x5w461CwCnu1H33509ZTwSPhBpC5wArBBLJE0bVD9F+/Q9gryG12obGKVbaD9ENiTXs1LeHNVYylEhpPq3Bln7DEKEm6FIddi+1WQP44WsemQj+GDkPZflI2TNdk8p5z1dnbgpUk24J2K3AeJPezdSnVi2CsF4JLybHncIEiwVjiWSXZ4rvZC1ALJ+2E0f+h9wUDnPs9WKctQwxPd3E+BPpOLcK2lQOzg/UkW6jz7yCbIW/ri9u9c3NlvIWmRRpNJxq5amhrxsRgyGkrCDTYg11svY6S7TzQ39HDsYRMLc5gG2wU4XVCDTX+i1rdC55CMsBgKBQchCL8tw5AVihMVuQDlqICImnY4sxL8E9nOj7vsVnVgufhrugUiL027Y6eYSx7wVWay/A2yInS7mIn04IjQtBVzrRt250iirES9kbYhUX22qD6WRis1rrJRXdj8KL2Qtifi7ZStOxyHi1g1WyquaC7h8UI46DKlomQaspStgikd2015AKgKewE7vnHPbvMhifwngRuz0ke2OkSfKUWshr/daYC836j6Y72PjkXAtkqq6K1IZuGEskfyqlPkUihb1dkK8O7MJ3a8ibc/tXgz1wJxWRFoFd0cE11zeRUTGh62UV/LvKh4Jb40ksNYBl8cSyYKrDnUq9AOIKOoBa7tRt3DPMju4GSIyB4A9sdMP6fP0B8DqwH+w06e2fZgXsvYB7p0VYPIRJ9QOnTA0MAVYwo26HQojWtD+EqkKb4wlkpcVPF9DnyIeCT+CnIveROwB5vj89kLW7UiF7ivA5m1tOJSj7kJaid8GVkI85J4GdnGj7vRunn6X6M2T3ZCwpa1ybhqPiHK3lNoOHI+E50MSnI9AKteyfIBs5t4bSyS7xUs2HgmvCzwBLIxUIoZjiWSXa079GXAIUq05DFm7HG2lvHu7Y57VhLbceQGxlfob8RS+v+TKWju4F9IZtAAi1l8ANGGn59pcrm9sXgGpZF0C6WzZsqWp4ae29zMYyoakmP8IzAvsgp1+vMIzMvQG7GDWNqUZO11c+FUfpz8JizbtJ+oaYbEbUY7aAgk7WBwR784G/uNG3Yp5p82BHaxDWmojiKizc5eBFx2PtQ5y0Q8iKr5VzDDKUf+HtPR8B6zmRt2JRc2nh/BC1spIheIu+tBUpGS8qbsrvfTz/0s/n9KHPkZEoVe7+7nLhRZmkki153vAhkV51eViB1dGfhd1yOv6CX38HmBfZAG/Jna66EpivYHwHvK7v9+NugXZCsQj4SuQYJ7pwFaxRPK1YudSDFrAuxrfu/MXxLvz3mrx7vRC1lL4IuMmiOiWxUWLjMCnxc45p3IP4IRYIvnfzu7fHspRC+j5LAJc7Ubd0cXMBTt4KdCIXOSuhoTM3IP4sC2LnZ6jKtkLWQMRMXPZZ9YKeLdsV2sBY9yoe3RnTxOPhM9BLnZbACuWSJo0yH5OPBJeAvFHHg4cE0sk/y/3dr2Z9SUwGNjFSnlzXIwqR62IvBaz1kGvA9u6UbeiRu89EMQSQLxjjwT2Qn4/AJOR9+4NOs2524lHwksjn6Wr6uffL5ZIPpbPY72QtRyyHtxAH7oHONZKeeO7YapVgz53P42IiyCbfccU0nnQLnZwYaTqf1d95H3Ee/Gztnetb2xeBrEfWRpZ+27Z0tTQUtLzGwwdYQez/ubfACvpVleDoXPs4ArAF8g6fCXsdOm++H2M/iQsmorFCqEcNT/SapJNS3wBiLpR9+fKzSoHOzgA8RLaDRHFdsBOv1zgGAGkXXEj4C7s9IHFTEU5KrdFdUs36r5UzDg9gRY8zkeqE2qQ1tFbgfOtlNeju806vfco4EL8C6d7gVOtlFcdr7MuUI5aDGmlGwmc7Ubduby8CsYOXob43rUgXnq7IpUps4CNsNPvlDK8ctQFiCfZn8DKBbZAH4fvWbJvLJG8r7P7l5MO0savQNLGq1bI90LWIoiAvwewJVIlmuUrfJHxvUJFxngkfAayQZAB9owlkgX5ZMIcKfYggspzhY6hPbneBNZCzoX1iPfd2djpud4TXsg6Frh2VoA/Dzm5dv6pAwMB5LXYYUtfPBJeDPl9DQUisUTy/oLnaeiT5JyX/kEE519yb/dCVlb4TgHKSnlzbAApRznIZ+JHwBZu1B3fA9Oei+4OYgGIR8IjkY6PI5jTvuFjpDrx7lgi2ePr63gkHEQSo7dFzmcx4Kp80t71WuIs5HOtFvl9HWSlvP9134wrj94kPBP52esQW5NjCulAaBdZG++PvKdGIpuIZwNXtBVz6hubl0IqF5dDfu9btjQ1fFPS8xsMbZEuiM+RqvITsdPXVHhGht6EHXwCCAPXYqd7RUdhT9JvhMV2HtOnPRb14ihQDk+7cqArskYhyXFDkbbHw9yom9dOcrcjF7MPISeLScB22On8gxr8VNPJwIrY6YLFLOWoeZAW1WXIo+KmUngha35kAXosvlj/MHCWlfJSFZsY4IWsBYGLgMORHaVJ+vsrrZTXfjpyFaEcdQBS4TsDWNeNuqW14trBeZAF1JKI6LsHEpBiY6fPL3GuuS3QXabv5hKPhMPAY4ggfWYskby0i4eUBd3yth/wb2AxffgpYLSV8nrVzqMWDnZC/qbbMufG2Y/Ie/Ih4I18rAF01dH1iEA/Fdg6lkgWHFajHHUd0k73C6A6a0fuEDsYQlonh+gjY4HlsNNziL5eyJoHqThYqHndwIvO1rVbAs+6UXe7zoaPR8JZy4o3kJbX6lzcGHocbc/wOrA+8GAskdwr93YvZAURL9gFgKOslHdD7u3KUSOQivAHinrtl4D2Gt0KaXXeDd/XcDriH3kL8GIpViH6PLE+Up0YwX+PTkE2aG8A3q70eyoeCQ9AxKys1cf1wIldJUZn0dYudyIiVwb5zDjXSnkVb2nvTnSIi4PfAZIAjnOjbmm+x3ZwceAmJDQM5Nx7MHZ6DjuP+sbmxZENpZWQz5AtW5oa5grrMhiKxvds/gdYAjvdLdYMhj6KHdwa8U+ehLx+xld2QtWFERb7rrC4J7Kouh0JzehR37KOUI5aCakkyybQjQFilW4VAsAODkbEjm0RM/9tsNNv5/G4oUhp9BLAOdjpi4p5euWorHfDD8CqbtStqg87L2QNQxKvTwOyqYsvA41Wyuv699SDeCFrbeT1v6E+9DUiHpXmodnNaAH+YaSy8GNgvZK9uezg7ojAlOVtYBPsdNGt1rq64V2kVfVBN+ru1cVDZhOPhNdCPAyHIhe6h/fERagXstZAXhOb6EPfIq/nZLW0PReLrsDcEREZd0R8wrL8DjyKvAZe7myzKR4J1yGvv52QVuSNYolkQRd1OhDgA2BF4D436u5byONn47cqARyPnb627V28kHUucH5rgG/2P7V2wVm1gRHAjm7UfaqjYfXr7z1k42GDWCJZVecuQ+WJR8KrIa/hWmCnWCI5R7iVF7KOR/z4fgdWsFJeRT+rdRDLwYhYnhvE8jFyjr27VFsSnbR8ACLUrZZz02eImHhnLJEcX8pzlBstgsYQUTCAbCLtk28VpT6vXokItSDhPftbKa+0gJMqR3++nwOcgbwHxgJHuVG3tIBDqV48FPmdDkfE6Eak8me2PVJ9Y/MiiLi4MvIe26qlqWGu9mmDoSjs4DPIdd6V2OmTKz0dQy9DzmMu0gUWw05fUeEZVRW9VlgMBALzAMvrbz9EUmJfAv7OZDJdprn1A2ExAeydc+h/SDjEQ1bKK9xUv4woRw1CqshO0Yc8JNjlo4pNKouIhEkk9CINbImd7jzh1A7aiH/n94CFnS7496sctRnyNwLYzo26xfk8dgNeyBqAVACei5iig7R5nQE8U62ijK7e2B+5qFhEH25GBMavKzaxLlCOWhi5WJsfuNCNuueWNKB8CD6J+AhOQnwVS9poUI6ykdf8n0gK9Nh8HhePhJcC3kISIJ8DGmKJZLdWVevKvouQC+IapKr4EiBeiq9YteKFrCHIonkPYGekQjXLOOBxRGR8rr2fX4eavIhUJbUggTq/FTIH5aj1kIqUWuTcXngIgrxurwQWQipb5hDYdXXyt8A8T6wXuO3OrWoPQfzvrI48fLXQ8CKwOXBPLJHcv+B5GfoF8Ug4ayPxA7BKLJGcXS2rfT0/Q9agF1gprz3/7m4lJ4jlUKRKMeu9Oh6xu7jVSnmFp7O3IR4Jr4NUMe+LbAaB+FHfjwiKb1S6OrEr4pHw7oh34hCkKyQcSyR/zPfxXsjaHam2mw+p5j4FuL5a1z7lQjlqHaQ4YRV96B7gBDfq/tXhg/LBDi6NCN7ZAKGXgUOx099l71Lf2LwgskZYHVlnbN3S1FCRMDVDH8IOroKEY7YCy+e+5gyGvLGDo5DPhBbkdWQ8OjW9WVjcHBES2+JkMpmD83h8nxYWr991u1BtJnPtmt//XjN86vR/4ZuJp5FF582lpv+VinLUNkjLxaJIq04jYvpf2WAXaR99GtgYqdrZAjv9SQf3XQrxWhoC7I2dzrsdNIty1FBksbsccLMbdQ8vcuZlRQtzeyOizHL68LeIP07CSnnVEcDTBV7IGoHsvo9GvIOmA3Hgkmr101OO2htpQZoFrF9ymrq8Tv8L3IqdLsl+QDlqDaRasQ6IuFE3L3867Xv1GuLF9SnSgpouZS6d4YWsWkQQvxi5IAS5GD7FSnl5X1T2ZrQAsgUiMu4KLJhz80REaH8IeCr3vRCPhBdEhMHlkcqtzQtNclWOOg+wEaFjNTfqlvV37oWsq4ETMvD+PqfXBjM1geWBY92oe31Hj4lHwrsg1ZtTgZViiWSXm5CG/okW2D9FrEmujCWSc1S26K6QB5CNiuWtlPdrT8zLC1lrIhV0bYNYXkDEmkdL3TyOR8LDESHxSMTrNEsKERPviCWSPdrmXSptEqN/RSpR8/5c9ULWYog35bb60FPAoVbKK2jTpbehCwHOA05HriN+A450o25pKbric3cUcDkiWE9EBNsbsdMZgPrG5vmAZ5FQmXHANi1NDaWthQz9Gzt4I7IufBg7vUelp2PopdjBIYjl0PzA7tjp0qq5+xC9Vlgslb4uLMYj4duBKDBzwMxZiXW/+/W3kZOn7YEY4Wf5AKlivLdSqXfKUQsii+Gd9KFngIPdqFvZxZodHIEsaNZHTKw3x05/3s797gX2AV7R9yn4TaIclU3G/Qlpge42sSUftA/dNkATfsv6WCRB9abe6jHkhawQ4vGZ9V/7GUkAvq8aKw+Uo7JVx58Ba7tRt+IekbpF6h2kiuAhYC836nb5u9N+V83I6+o3YP3uFHW8kLUxIqRmX7+fAidYKa9qw5C6Gy20boKIjLsDi+fcPBU59z6EtIaPi0fCyyEhKgsiGy07F1Jdqhw1ABGS10NEj23LtWnkhaxlEPuJAU+sFzj7zq1qL0I+z5dwo267mwXxSDi3yuziWCJ5djnmYui7xCPh7ZDXfiuwXq4QpT8nX0fsNm6yUt4R3TUPXXW9HyIorpFzU9mCWADikfCaiJi4PzCPPjwdSQm+AXi12qsTO0MnRjcjFXiTkdCwvAUyvdl6HNIFMQippDusbTp4X0RXoTtASB+6EzjRjbrjShrYDi6HvIY31UeeBUZhp38EqG9sHomIuBsg5/jtW5oa3irpOQ39Ezu4ACIGDQY2w06/WuEZGXozdvBiJG/gFez0vyo9nWrBCIt9V1hcH0nszYooM8hkblq75bdXFv5n8m7Maew9Fdl5vxl4tadFFu0rdxSSyjoYEfIOcaNuZf3w7OBI5IJ4LUQM+dcc0fJ2cBPEKy4DrI2dLrgCVDlqI+TiO0AX3mA9gRey1kMExS30oQnIIvqqaq3uKwR9Mbgz0mK5jD78KnC8lfKqqs1GOWoBRAhZCLjMjbqNFZ5SbhXaX0gL9O9dPUa3n96IhDdNBjYrpFKkELyQtSjyej1AH0ojLfzXt01v7c/oC+R1EZFxD2DZnJtnIue9h95abrEf/p5nyMNIRcltwGGFCAvKUSsitglDgNFu1L26TPO/CxE/nt/7jDqArYG4G3VP6egx8Uh4NPK+/w1YsdAKTEP/JB4J34NU732IiIuzzyN6A+M1RHhczUp5ZfOBywliORRZr2XDmcoWxAIQj4SHIZujRyLnhCxfIudtJ5ZIlhbcUUXoyvkHkE2uDGKjdHUh5zUvZK2CtAVnvSZvBE62Ut6kMk+3qlCOGoxcV5yCVC/+AhxR8lrdDtYCJyAWJYORz+3RgIOdztQ3Ng9H7Fw2QSobd2hpanitpOc09D/s4JlIB8sHwDrFFIIYDLORQKoWpHtrrWI0gL6IERb7qLCYJR4Jb4wsBLJeJtOAG5b6Mz1m1Z//3Ba52F815yFfIQtWp6dbPJSj2i7WrgVOc6Nu5Twh7eD8iCfXakiF22bY6W91G8c7SIvGTdjpgqsVlKOGIBcrKwGOG3UPLtu8C8QLWSshH7jZ1oDpwHVIu3CfuajIon3oTkF8IocgF4ZjgHNKNbkvJ8pR2dbNVmBjN+pWbKdeOWp1JPSiDtjXjbr35fO4eCR8BnLB0ArsGksknyj33HTL74mIiDgPcsF4C5JUnpf/Y39Fi+2r4VcyrpJzc+vPI+f5/OOlFlqFQCAAnB9LJO1CxleOyoawTAPWcqPu3JXfhc13deS8GXhujcDeN+1Qez/y2lrOjbot7T0mHgnPjwQ4jQRGxRLJW0qZg6H/EI+EF0ZagEcCsVgiOYdRuxeyHkaEv6SV8naae4TC6IkgFpgdUHMksgmTDWObgYQ33QC83JurEztDV9BfC2TXbdcBo/NNjAbwQlbWKzyGbAx/hQS7vFvm6VYdylEbIt6LK+pDtwEnu1F3fEkD28GQHnd9feQJ4Ejs9K/1jc3D9PdbIBuU4Zamhn7bgWAoEDs4EPgOWAw4EDt9V4VnZOgL2MHsxqODnT64wrOpCoyw2MeFxSzxSPhfSCvrZvrQFOD6mtbWf2/vfrcM0mKzL377yywkxORm4OmeqvbRO6KXIruVIC2M+7pR99OeeP52sYMLIX6eKyMBLZshQu2twD/ACtjpgsUL5aisOfyvSPVXaS0lReCFrMUR/5xDkaCFDHAHcJ6V8r7v6fn0NF7IWgr4D5BNNf4bOAtpbasKM17lqDuRi78vgTUrkaCu21rfQdrwHgH2yLMFeh8kBR7g+FgiOVeyb6l4IWs74GpEoAdJvT6+P1zgdQd6kyErMq4N8MN8w/l0yYUAWOrP9IOr/vxno5XyvslnPF2Rng0P+hDYoJSkcy9kPQnsACT2PqPuH7Rfkht1O/RLikfCVyMVMZ8Aa8USyap4bxt6B/FI+DBkLTQZWDmWSM7+bPRC1opIZXkdsIWV8l4udPweDGIZithrHIm0lmb5Bqm6uz2WSPaLjZicxOjL9aGngEihlcxeyNoSaRFeAlk320BTX6+Q1xvjFyIVnwFk432UG3WfLmlgO1iHbPpeAAxA1mTHAon6qfcMQdYf2yKdVru0NDVUTdChoYqxg/sh59LfgKXbhsEZDEVhB9dHAimnA0thp7vs4urrGGGxnwiLMHshtSWyGNhQH56MeJH9Z8ePv5mKLDpH5dwO0u5wG7K4/bYn5qoctT2yWFsIqXQ5BbguHzGjW7CDiyKpzSsgi/B5EBPwU7DT8UKHU45aHwlHqAF2dqNu2au4OsMLWfMiYTknIK0nIGmxZ1kpr3IiboXQFwfX4FdrfYiIU69XblaCctS8iMC+GHCVG3VPqsAczkUqn/8GVs6zBXoT4Hmkhe+qWCJZ1nl7IWtZxD5hF31oLGIwf0dvCRaqdnT11G7AHl8sMu/G3yw8H4FMhrW/+42FJkz+GPFkfBj4vDMLDeWoRZHX8HzAJW7UPavI+WyObPLMfGeFwIb/2bP2VeT89S836r7S3mPikfBK+rnrgK1jieQLxTy3of+i104vI5uKzUjwx+zXuxeyrkXEj/eB9fI9//REEIue/yqImHhgzvPMRKrhbwBejCWS/fKcGY+E90ASowcjGw8NsUTyp0LG0OupMcj6GcR780Ar5fX5xFnlqI2RKsPl9aGbgZgbdUu7rrKDCrkGyPokPwgcUz/1nglIK3sYuZjfvaWpobK2SYbqxg4GkI3xdYBzsNMXVXhGhr6EHXwT2aizsdPnV3o6lcYIi/1IWMyiF8nbIgJj1lNnIhJscUUskRznhayVkQXvQcACOQ9/EVk4PGKlvKndOU/lqIURQXMHfagZONSNupXZUbeDSyDiYtaP7Ctg1UJ3vnTK3gdIBeTdbtQ9oIuHlA0vZA1FxMTT8S8wXgMaq0FEqyReyKoDjkF2yoP68F3A6VbK+6ViEwOUo3ZAqr4ywOYdiSjd9Ny5LdD7uVH33i4eQjwSXgHZxZsPuXjds1xVYvo13IhU+w5CqkSuAc63Ul5Fg4/6Mp9aKy/65vKLP/zP0EEb1La2sv7XvzByyuw8oS8QgfEh4IP2REblqD2Qi8NWYDM36hZ0vtEt228hYTDX731G3U9Ii/2HSLhRuwuUeCT8OBIO9kQskdy5kOc0GLLEI+EQ0o48ENg7lkg+kL3NC1kLIa32w5F22Hs6GqcHg1iGAHsiguLGOTe1ADcBt8YSyT6daJwv8Uh4PaTNdiFkI32nWCJZUIWoPj/tj7RVj0D8qY9HNrr6zsVTOyhHDUXOxScg1Ys/Aoe5Ufe5kga2gwOQDpKzkPXHH8CR9VPvaUY6IXZH2vcjLU0NJpXV0D52MOuFOw1YEjv9R4VnZOhL2MFsZ9ZYpGqx4kGblcQIi/1QWMyiBcYGREjJ7gr+g1QBXRVLJNPau2xnpIpxW/wWnXGI6HKzlfI+6a456ja645B2lUHA70DUjbrPdNdzdoodXBpJgF4C2Bk7XfBOqXJUNknqd6QF+q/yTnJutGh2KNL2vJg+/CniMdjc1xe+haAvEi9GLvwCiOh+IRJgU7H2CeWom/WcvgVW7yj9tszPOQBpLV4TEQh376pqOB4JL4CkCS8PvAtsHkskS27f1hduewBxfO+xF5C055J8+wz5kZvuXdPa+s9GX/38/oip0zfGDwIDsYvIioxv5lZvKUfdDkSR1/AabtTNu+3QC1lZYXLSz/MTOumIureQZOuD3ajrdDDfrZCq2ZnAqrFE8ov8f1qDYU7ikbCNfIb+BlixRHJ89jYvZJ2FeO59D6xkpbxpObf1SBCLnmMIEROjwLz68CxEOLsBeLa/Vid2RjwSrkfObSsjnTz7FOMHrKu870SCRkDOWUdWk3dzd6EctRkijmc3328ATi3kPN8udnAtxKIn21Fy94ety5202/QLr0GCh2YB+7U0Ndxf0vMY+iZ28AFkk+UW7PSoSk/H0MeQDZDvkPVoFDt9R4VnVFGMsNiPhcUsWmDcBWl1zAanjEe8567Jes54IWtpxFT8UOY0FX8XWRjfa6W8bvldKkethuwIrKwPXQU0ulG353cG7OA8wBLY6VShD1WOWhsRamoRn7qHyz29XHLEmIvxjba/B84B7qkWH0GAeCS8NvL6mom0urxZSfN4L2Sti9gEZI3EvwRGWymvIsndylEjABd5713vRt1je+A5z0ZE1XFIC3SnFS7xSHgwIuRsjLzO1o8lkiV7jugUzmsQKweQ6p6TgYeNKN6zxCPhEUjl9hrAV0v+9c+26qc/NkTOMzsgCdJZfkOEk4eA/+19Rt0wpOpraeAWN+rmtcjXGyOfIeewC/c+o+4z4D70DnF7nwPxSLgWqQxfDfkcO7GIH9dgmE08Eh6EvH5XAsbEEsmjs7fpSuovkYuLU6yUF9drpkPo/iCWQcj770h8H22Q8+TNwC2xRLKiVfe9gXgkPBJZe2yNdAeMjiWS1xQ6jheyapGukPORSrtfgKiV8p4v32yrE+WoYUATUhAAsg441I26L5Y0sB0chPhXnoZYCP06LVN3xErT7tgbafFvBaItTQ0mlMPgI8Ug3yKvGYWd7ndWT4YewA5mQyo/BNbuz4njRlg0wuJs4pFwDbI4tfEFvL+AfwPXxRLJSTB70bQ1Uj21K2KwDLLLez+yYH693Bf82iz6csTLCGRxvl+pKaM9hXLUQKSlVAH3u1E30p3P54WsrZAF3jr60J9IRcWY3GqKSqIviPZC/qYbtLm5BREP7oklkm4PTw2YXWlyEHAZ0iYFUvlxUr7hFeVEOWprINtetLUbdbvNL045SiGeYQOAA9yoe3dn99fnj3uACHJu3SiWSJaaABxEzkfHI2L8NORvcZmV8no8xMYgxCPhxZCq1KX0161jieRkLa5sh3yO7ISfNgviz/nYyyrwxY3b11w6sy4QAHZ1o+5jXT2fF7KOQKpf/gSW2/uMumeQ88X5btS1O5hjNnBjPLB8LJHs9spwQ99HB+G9rL/dOJZIvpG9zQtZhyChbuORz/puC2LRc1kBSTY+GN+yphUJ3rsBeMYEFRWGrsq+HunSAUmPPqmQxOgsXshaB/mbZzd1r0B8rLvVRqgaUI7aAnkv1OtD1wOnl9xpYQc3QDwdVwJozQRuW2/adbV/MvIgRAwe1dLUcGtJz2HoO9jByxGP/uex09tUejqGPoodnB/4CfHq3Qw7/WqFZ1QxjLBohMW50JUeeyMX9NkF0R+ISDUmt63RC1kLIruFowArZ5gvkIu6O6yUV1ZPROWoMNJusQCSDHcScEPFgl3yRDnqfOBc5OJ4ZTfqdovPhxey1kL+VtkP0YlI+2jcSnmltaSUiXgkvBRwFPK6WVAfnoG0Dc1E2sXmyXnIZ4hodV8skeyRAKFctMB1LuIhVIe0sP0HuMRKeZN6ci7KUdcDRyPVKKpkk/T2n2MA4me3FvAYsFseLdCXIK31M4HtYolk0RUKWtCNIq/jrKD7KHByfzDE7w3EI2ELCaAaSTs+mtpGYytEZNwVmD972/Rapr+zUmDgeysE/mkNsMZNTZ91+DfVYuXXwKLA6L3PqHsTqfqegVQrzlVFG4+EhyPVY4sAJ8cSyStL+2kNBp94JHwL0rnxGZIyPh1mb7p+iGweZil3EMtA5P10JH4FN0gqb7Y68cdSn6c/o7t4TkU2sUD8jfcpNDEawAtZw5C1wlH6kIv4cFZks7QnUY6aBylMyFb2fgcc4kbd/5U0sB0cgnThjAYCmQw/njbziI8emLX5TvoeR7c0NYwp6TkMvR/pLvsJ8UwPF2NdZTDkjR28Adnoexg7vUelp1MpjLBohMUOiUfCdcC+iKfQcvrwb8ClwI2xRHL2rqtuud0AEYr2wW+Hm4mkDd8MPFuu1ludMno74vsIIn6McqPun+UYv9woR62BtIzXARE36pbdC8YLWcsjFYnZSsgZSFLhReUWd4tBL9a3QqoTd0ZaE0AuiMYAN2fN5LXxfBh5/TUwp4fbW0hb/P09bT7vhSwLacndWh/6CdkNvb+nWnL1Yv1jxMfoZjfqHt4Nz5H1CxuH+ID+2tn945HwKCQQAODgWCLZruddPrTTgv4F4qP4bLFjGrqHeCS8KVJBOwgJLTi+PfsC3cq8KSIy7obv88qMWmbVzeLxgLRLJ9sG8HghqxH5zGkBQnufUXcrEn5xhxt1ox3M6yLE8P9rYJWs8GMwlIN4JDwfkEI2xc6KJZKXZG/TVWpNSDLwbeUIYtHPuRxwONJWnd1syQBPIdWJTxZTVWfomHgkvCfilzgY+cwNF5oYncULWWGkgm9BpPK+Ebgm3wTx3ozutLgF3w7gGuBMN+qWtilrB+fwdHx51mqfHDNj9GqTGQxwYktTQ8Ft7IY+hB08DllLfgWEsNN9/r1mqCB2cBUku6AVWA473VLZCVUGIywaYbFLdGvIgYgvX70+/DOyY3hrLJGco63WC1nDEXFrFL44ACLC3Ia0ArWUOi/lqBpkx7IJadf8FTiwO9tDi0FXf72DeJI9DOxZzupKL2QtilTTjUKEywzSfnOelfJ6vLqvLfFIOIi0Ex+Lbl/RvISIEY91dkGkfY92Q8SELfEFyVYkpfxe4OFcI/3uRIvouyJtTfX68MuI+NUjVQjaJP1lpM1uRzfqls33UTlqVcSbbgDyfurUsygeCW+LVHTUAhfEEsnzinleHZpzCVIJlA3NOR+5+DLCUJWiL77vR/5mp8cSyX93dn9djbr+70GODEB0oTlzvGcgHp0PIZtFrYg/UhA4cO8z6l5CBMY6JAl6rpZSXQ39BSIG7BZLJB8t5eczGNojHgnvjwTYTQNULJH8qhueYwCyCXckfgcCyFrnFmQz7vtyP6/BJx4Jr49sjmcTo8OxRPLDYsbyQtbCyN+tQR96HjjYSnk/l2Ou1Yz2iL4cqegB+AYJ3nqtpIGlKu0y4BiAvzPzjD9y+skj382EAE5raWq4vKTxDb0TO1iDrAOWB47DTl9X4RkZ+gN28FnkszqOnT6l0tOpBEZYNMJi3ugWnIOBs4El9eEfkMqm22OJ5Iy2j/FC1qqIF+NBwHz6cAZZUGXbg0ry+1OOWhNpkw3psf8DnO1G3aoQI3ICMP5GWqBLDrOA2e25pyHiarZC9EngTCvlfVyO5yiFeCS8KiImHggM04cnIul+18cSyc+KGHMRpE1/X+b0ZJyO/Oz3AMlYIllyy1lXeCFrCNIudQYiYrQiPkLnWilvXHc/v3LUlcjf/hdgVTfqlvycylF1SEXo2oiX5C6dieDxSFghlTnDkYvsgwoN3NHVbMciImJQH74TON1KeZ1WShqqg3gkPBrIthvvH0sk78nncavdtuopS4/l8g1TrTPC72S+HzCL5XNubkU+X+qBT4A19z6j7gKkEvE1N+pu2sFc7kY2IV4GtqxkAJSh76Ir8J9GuiZeRHxGy/Ja0wnFhyObLIvowxngWaQ6MdneesvQPbRJjJ4E7FtMYjTM3pg8EtmYHIKsC4+wUt5D5ZltdaMctR3SwbQE8pq+Clmvl+aZbAe3RipCl8xk4JZZO3D5zAjTGHhOS1PDRSVO29DbsINhZA07HlgSO12at6fBkA92sAHxOE4jIa/97nVnhEUjLBaMDtwYBZyJ39L2HXABcFd71WdeyBqEVHmNwm8jBQmHuRO4xUp5Rad1KUcNRRZqR+pDHyDBLl8UO2Y5aFP9tb8bdfO64O4ML2QNRoSYM/HF2rcQIeaVUscvBV1hsSsyv3/l3OQh1Yl3xhLJsrzf4pHwskjb/X7AKjk3TUSSaO8Fnu/uCzCd/BlH2jxBPDTPRCpzu804X7/mP0R8UO90o+5BZRgzm2w2HmmB7jBJVAd4vIVsMrwCbNu2erkrvJC1BdKqkv37fQgcb6W81wufvaGSxCPhOJLUPQPYPh+PTeWoWsSD7l/Am7dcNfOI4VPYBXkvrZlz1x33PqPuZURoXACp+p7rQlxXF72FXLCuE0skyxKSYTC0h/4M+hQRiKKxRPKOEsaqQ+w/jkQCkLKhL78jgslNsUTS+MtWCN058SBi59KKBLoU3WrrhayVkM6StfWh25Guh6rwwe5OlKOCyHr9UH3oS6R68c2SBraDc4z7TeuixGYczUeZ5S8Ezmtpaug7F7GGzrGDzyPv1cux06dVejqGfoJUyqaAFeinlbJGWDTCYtFoH7wjkIqthfXhr5HKo3s7SiP0QtYyiE/QocDiOTe9jexkJopdXClH7abHmA9JqT4RuKUSwS5tqr8eRxJQi56Hruw6CPn9LpE9jIhYj/WUx197xCPhRZHXwhH4YvMspJ3xOuCl7qwc0pVz+yGVjEvn3PQn8ABSyfhGLJHsNo8VncL9X/wQo/cRkay0xXInKEdtCLyGtIfnlbDbyVirInMeCBzkRt07O7pvPBKeBxET10TaTTaKJZJ/5/tcXshaCqks3ksf+gupRLu5O8VYQ/ehU8HvRSqK/wE2jSWSn3T1OOWopZFAg+HAWW7UvQTAC1nLArsAE4Bb9j6j7lDk3P4DsJwbdefYwNIVZK8BGyEV9IeU62czGDoiHgmfjtix/AWEYolkQT7PunV/FNLZsVjOTc8j1YmPG4/Q6kBvnP4f8rcC+bw/qdjkbR1wdR6yhg4gtg8HWinvjU4f2EdQjtoR8WZeDBFrrwDOdaNuaR0nUjV0E7DorEyAG2btxHUzd4lPYsipRlzsB9jB1RBP1FnAstjpHyo8I0N/op97exph0QiLJROPhIciqW+NSDUJiGJ/PhKw0e6bSicobossqndGfLNAWk0SyEXkW4UKZspRiyPtttnExIeAI9yom7fwUQ6Uo7KhA+ORFuii2jp168wuSCVZVrT6EVmQ3lEpIUZfyG+CVCfugf/3GwvcCNxQrNF5iXPaABEZI/iJ0yC/s3v1v4+7Q+j0QtYA/LbeEfrwHUBjd7X1KkddhrTEj0WqDAsOMNIi+JvAOkgZ/84dieA6Nf5RpLrmD2CDfJO6dbXtKYgYPgS5mBgDnGOlvB59fxrKTzwSHgw8A2yG+PBumE9CrXLUQYCDhH2t39Y7UTkqgFwoKOA0N+rO5ZsVj4T3Rj43JgMrxBLJDqttDYZyocWm94DVACeWSB6cx2NqgR2R6sQd8H2D/0B8qG+KJZJfd8uEDSWh1xinIWIyyOflvrFEsuiWNy9kbYp07iyNfCZeDFxopbw+3+6uHDUvYqORDeJKIdWLb5c0sB2cDwmJ2R8g1bokl8/c+54XWtc+wIiLfRw7eAtSuPIAdnrvSk/H0M+YM428ATv9ZIVn1KMYYdEIi2VDVzEdh/jOZVt0P0MEsEc6qxbTptYHIiJjbsDH54gX451Wyvsj37noYJdTkAVaHfImP9CNui/nO0YpKEdZwEdI9dfBbtQtKiXXC1mbIQvYDfWhvxGB8Tor5U3t8IHdSDwSHoYs1o5FLqayvIFUJz5UaEtsd6Bby7ZERMbdkYqoLB5aZOyOCzj9er4UqcwFqbq6gG4IIlGOGoxUGq4MJNyou08RY+SK4B22QOuLqv8if/upwBaxRPKtrsbX4vhOyAXEsvrwq0hFZ8X9QA3lIx4Jz4tUDq6MnP836SpYSQuH9wN7Iu/NtXOrVpSjtkRapicDS7T1E9WCpof4MZ4XSyQvKNfPYzB0hW7BfxOpOtuqIxuAeCS8OLLGGYXfdQASZHYD8Gg1fHYauqZNYvRHSKhL0SEs2jP7v8g6GCTw7wAr5ZU9FKgaUY4KI1WGiyDi6uWA7Ubd0ta5dnC3KZmBzpDA9OEzMrU83rrRe/OT3njzC181VcB9ETu4ENLVMAjYGDvdL6p/DVWGHcxaAz2Hnd620tPpSYywaITFshOPhEcAJwAxYKQ+/DEiMD7eWaWYFiA2RlpNIkhVE4hv16NIFePzVsrLq7RYOWodpA12BcR361JksdJtO8HaN+w1pHLuKaCh0BZoL2Stjsx1B31oMiLKXG6lvHSHD+xG4pHwikjy3sH4IRtTEJ+g62KJ5EeVmFc+6Lb9HZFW6TCy6MjyLvIaScQSybJWFXohaz3gWmBdfegLxEfp2XI+j3LU2oiVQC2wtxt1HyjgsSsj3oZdiuDxSPgkpF0pA+wVSyS7NJz3QtaKwNXA9vrQL8jmw72VbN83dB+6vfMtYFEkRGX7rgQT5aj5kZboRYFr3Kh7Ys5tjyFV7f/nRt1j2nm+bDvqz8CKsUSytCAAg6FA4pHwtciGy1fAarFEcqo+nu3MOBLZXMlWJ/6NVCfeGEskv+z5GRtKJR4Jb4DYvSyEnHvCpa6DvJAVQar4RyLdO6MRD/I+/1mpHDUfslY4QB/6HFmTvFvSwHZwwa9bF3ty+Zpf1gH4sXXBv+YNTNhqnvN/N5uafQ07eA6yif8OsAF2us+/bwxViB1cBrGGqwFWxU4XHFbaWzHCohEWuw1tdn2S/petFnsfOBd4qqtWVL2Duw+yu79Ozk0/IGbmt1kpr0vvDOWoeZDFStYo+h0kSKVbWo2Uo2KIf9w/SPVX3u3A2n/yQqTKLoC0Bt6EtMX0eEKuvihqQC6YcnddvkESkG+LJZLdnoBcTuKRcBAJmNkXCRKq1TdlkMqRe5Gqy7L8XF7IqkHE2Cb81uzHgJOtlJdXC3E+KEddAJyDeH2tkk/6uG6Bfh1YD0m93KmTFujdEFuBAHBqLJH8T2djeyFrOJIgfxISXjQDESUvslJev0tK62/EI+E1EB/O4cB9SFp0pxtCylHbI5sxANu6Ufc55ajlELEmAFhu1E21eZ6FkAXccCSVvENvUIOhu9Abqh7iF3cR8vl4KJLunOv7+ypSnfhQVnw09F7ikfAyyGenhQiB+8QSyWQpY3oha0nEGmILfegx4PBCunZ6M8pRuyLvkYUQn7wm4EI36hZfzWsHA3fN3Oq/DbVvHztvYCIzMzWtwLl1gdbLsNNzBU4aeiF2cBDQglS97oedvreyEzL0a+zgw8BuwI3Y6SO7untfwQiLRljsduKR8HxI9eKJwDB9+G1EYHwuH687XcF3GLKTOa8+nAGeRaoYH++qxVQ5ai/E+28kkhx8HHBHOYNdlKNWRKozBwOj3Kh7Sz6P80LWQogIcxQiwoD4hZ1tpbwe91qKR8ILIL/vo/EvijLAk0gF3rPdGYTSU2hRYi9EyN0o56YZiMBxD/BEOSqgvJA1EqnaPR4RM6cB/waarJRX8vjKUQMR0Xx1pLp3965e28pR2UqvNCJGttvKFY+E10Mqz4Yg1RTHdPS+1VXH+yE/WzaM4ClgtJXyTGVOPyIeCW+DnDPqgMtjiWSX6YzKUdchldG/IJ6K5yKfHU+7UXeHtvePR8JjkGqw94D1+8J5ydA7iUfCuyObL7OQz8us7/B4RCi6MZZIfl6Z2Rm6C72J/hBivdIKjI4lkv8tZUy9IXkyYn0zAEkHP8RKeU91+sA+gnLUAkhreNba5VMg2tZ/t1D2PuM/RxxR1zxm69oPAgCtGd6pCXAQdvqL0mZsqDh2MOvV/AtQj53u8x6lhirGDm4G/A/p7FsSO/1XhWfUIxhh0QiLPUY8El4QaYE8Dr/F+XXg3I48idqiwx92Q6oYt8y56U8kJOMWK+V1uHBXjloK8cXZTB9KAEe5UXd8/j9Jh2PXIieRjRHBc/uuhB0vZI1ARNcYvuj6LHCmlfLeL3VOhaIFpGORNvRsu/DfiM/lmHxDOnoj8Ui4HlnE7suc3pGTEKHuXkRQLWmx4oWslRFT8a30oR+Rv/+DpbY7KUetjrR2D0A8Re/q5L65LdCHuFH39vbupysy3kKqB54Cdo4lku3u8Hshaw3kYmATfehbpJUr2R9auQxzE4+ED0TOzQAndHXBrRw1DPgAWBGp1NkSqUbcwY26T7cZe1VkI6cG2CyWSL5a5ukbDHmjPWgfQcLWQHyHbwAeiCWSpSXdGqqaeCQ8EEmMznbGXAOcXGxidBa9qX4P4lkLsrF7mpXy+sXrSTlqD+T3uiAi2F8MXOxG3aI9EpdtfHzX3Wtfe/DcujtrRwQmk8kwNRDgTODq/pbg2mewgwGkI25N4Ezs9KUVnpGhvzPna/IM7HRTF4/oExhh0QiLPU48El4YOB2phhusD7+MCIx5Xxh6IWs5JBzjEPzKKJDF/C3A/e21XGoB8HTEh6MWaa3e3426rxX8w8w57onAVUg15Cpu1O2wTdsLWYOQn/8s/CTtd5H04LxE1nKhgw8iiKC4bs5N7yNhLPf1t4uieCS8CiIw7gcsk3PTX8CDyEL/tWKro3RV3+5Ia/BS+vBLiP/ip8XOG0A56myknX48HQSxtGmB7tAHVAdxvI60eX2EiDcT2vl55tfPeSQi8kxGKi3ilQoZMlQP8Uj4TOSCMAPsGUskH+7s/spR6yHn8axNQQp5Lc/xfotHwk8D2yFtpXuWfeIGQ4HolugDgFdiiWRJ53JD70ILy6cj/thQhsRoAC9kDUE6C07IHgL2t1Leh6WM21tQjloQWYvupQ99jFQvFu2RWN/Y3LAofz102YAbB21W62YPvwocgp3+pqQJG3qeflodZqhy7GAUuB0JkF22P1TRGmHRCIsVIx4JLwY0ImLEQH34eURgfDPfcbyQVYcEQ4xCgjmyF6MTkSqzm4F321ZMKUetjwhEyyLtKxchPi4F+61oHzAXqcQ82o26YzqYay2SqHwBfovxl4jA+FBPVnXpCr2jkZbn+fXh6UgV53XAO/m0qfdl9IXCeojAGAEWzrn5J8Q77l7gw2J+V17IGopciJyOVIjOQn7351kpb3wxc9ai4ZuIL+mTQLitaKgcdSrSqtyhD6iuwHga8Xn6GWkznaNVWr+eD0dEo2wS/P3AKVbK+7GY+Rv6Hvp9dD1i9TAV2DqWSL7e2WOUo84DbP3tMW7U/b82Y+6AvL6nAyvHEklzMWgwGCpOPBLeG6nSHoR0BexUSmJ0Fi9kbYdcpC6C2LWcjWzelVQV2VtQjtob+RyZH/EfvxC4tNgwxvrG5m0h89h+tS8OPrfujlmDAzNqkU3RU4ExpnqxF+H72d2AnT6q0tMxGICs7+cPSMfXPtjpRIVn1O0YYdEIixUnHgkvCZyJCFxZf8GngfNiieQ7hYzlhaxFgCgiMi6fc9OniMB4l5XyZu9kKUeNQFo3D9KH3kSqF7/L9zmVo2qAF4F/6a/btK2s0RVqDchO9qr68C/IhfNtVsrrEfPoeCRcA2yDVCeGkUAEkBPfGOCWWCI5tifm0tuIR8J1wOZIJeMe+MnYIOLwPcC9xSR86tCeOLIwAmntPwO4Nd8E9FzatDkf5kbdW3NuCyHVh4Pa3pZFC0G3I++LicAmsURyjuoAL2RtjLx31tSHPkUqLl8qdL6Gvo9+/zyMJOP+DWwUSyQ79LVSjhqA+JYtBGzlRt1Jbcb6BKmk/U8skTy1O+duMBgMhRCPhDdErBwWpEyJ0QBeyFoA8QrPrhX+BxyUT5BhX0A5amGkNTr783+IVC+6HT+qY+obm7cAkksExg69fsDV41er+W6kvukF4FDsdL/4vfZq7OCySIBbAFgFO218bA3Vgx20EX/9N9UyS22MXEP+5EbdVyo6r27CCItGWKwadAXdWUhrc7bq8AlEYCyo5UMLeZsiAuNe+C3X0xEPpJuBF7OijXLUvoiwNgKp4jrajbr35PNcylHHIr43kwDVVpTUAkwTvu/ceP39f8sR2pEP2lz8YCQUYYWcm55H5t7ckW+eYW7ikfAgYAekknEn/NcXSAv5vUAilkjmnQgO4IWsbRBvppA+9B5wnJXy3i50jspRpwGXAROAVd2o+4O2AXgN2AAR73fsoAX6XOB8pIIyHEskZ3vbeSFrUaTa8QB9KI0EbFzfUwK5oXcSj4SHIpsv6yPpjRvGEsnfihjnGKSy909ghVgiOb6M0zQYDIaSiUfCyyKJ0SFkfRiJJZLNpY6r17eHAlcj3txp4Ggr5fWLFFzlqADih30t0ikxA1mvXFZMx1F9Y/MmwJMBWoefUPvIt6PrHlo0EGAIsnY6CbgVO913LoD7GnbwSsTL+xns9PYVno3BMCd2cBHg+99rawfuvfgir/5dW7sp8A2wmht1e0QD6EmMsGiExaojHgkvh7R4HIT4tYGIgXYskfyk0PF0Gu9+SEXkWjk3tQC3IhWDPylH1QN346cD3wUc60bdDl8fylHLIC3Qw4Dj3ah7bc7zror4zO2kD01FFoKXWSlvXKE/RzHEI+HVkerE/YGh+vA/SDXa9Z1VDBnyIx4JDwd2RXahtsUXxTPAK0gl40OxRDIvzxcvZA1AkqNtJLQC5O/VaKW83/OdlxYRXwU2RATkbZGQmMuR18CqbtSdq105HgkfgAQcARwVSyRv0PMaiKTzngvMo3++W4CzrJRnqlwNeaFDvN5AKso/ADZvz7ezk8ePBL5CvGmPjSWS13fHPA0Gg6FUtE/xg/iJ0SfEEsnryjG2F7KWR9ap6+tDdyMbkePLMX61oxy1CBKOtLM+9B5wsBt1Pyt0rPrG5vWBZ4BgKPD9x08MPGvagEDrevrmJ4HDsdNz+VUbKowdHIHYEg0HdsBOP93FIwyGHkU5KnDc7+k3ng3Ms8HQCQEWGs+sRcZlHr9j69pIsTYO1YwRFo2wWLXEI+EVERFjP/yW3QcQgbGoUncvZK2JCIwH4LeytiLVWzc3rxt4ytm69nT9vDXAd0hr9Fyej3rX9Dkk3fcVYAs36rZ6IWtpZPf0ID3vWYiAeb6V8kr22ekK7Y23OyIobpJz06dIlc9dpZqJG9pHiyZ7Iq/Z3N/9TOQ1di/weD6/f93WfylSaQoiBp6PVLrm9WGkHLUi0vY8BGm1Pg5pgR7lRt1b2pn/5kgq+QDg37FE8nQ9l+0QUXwlfde3geOtlPduPvMwGHLRm0dvIm2CTyNJ43m9puOR8L8RDywPWM1UWhsMhmqmncToq4FYqYnRMNtj/CzgHPwwwoOslPe/UsfuDeh1+P6ILctIpCvpXCBeaPVifWPz2sj6Z75aZr3/7qCjH58vMPFMZM00DtnwvcdUL1YRdjAbmplC2qCNL6ahx9EBW/Vt/02vY8Xpdaw8z9TZORJZPrVSnurJOfYURlg0wmLVE4+EV0YWChF9KIMINBcUW3GnTwJ7IK3S/8q5aSzg3L5VzYdPrldzKRKwMgsRdC5xo+7shaBy1BHIbukUYLX7L505HlngHYMfRvMgcLaV8rq9MjAeCS8OHKH/LaIPz0R8za4DXu3vYSw9STwSXgpp19kXWCPnpsnA40gl4zOxRHJ6Z+N4IWsDZNG8TvYQcKKV8p7LZx45aeVZngW2b9sCHY+EQ4jYMxIR8PfZ8eNv6pHk6l303cYiQTN3FOP9aDBkiUfC6yFJ6EORjZdRXZ2fdGuhh5xfd4wlkk91+0QNBoOhRLRvcSPSxQJi87NfuTZ5vZC1IVK9uCyyRr4MCYHrdH3RV1COWgxZj4f1oXeQ6kWvkHHqG5tXRzo8FgA+uWXAv4/Zqvajq/DXX48AR2On8+4eMXQTdrAW8TdfFjgKO31DhWdk6KNozWBp2hEP9b+F23tcLjPrMpmh88wMBOCraeMHPGSlvDO6Z7aVxQiLRljsNcQjYYW0h+6uD7UiC6kLSkkE9ULWCshO8sH4ghwza3jj/k1rap5aJ7DBtIEBkLbSA7RX3VJIBeDweSdkTr/h2lmDkCqabOvqi0jrardWdOnF6r+Q6sTd8Ntwf0UMvm+MJZKmfaPCxCNhCxEY9wOWy7lpHCI+3wu80lEFgxeyapDX6KXIghdkgXuylfJaOntuHS70ErAZOX6Lbea3EPAWsAzw5oq//hVefuz40cBp+GnV1yBVt+n8fmqDoXPikXAYCTioAc6PJZJ2F/d/AKkIfhbY3myUGAyG3kQ8Eo4ADn5idLhcazQvZA0HrkS6ctDj72+lvILEtd6Krl48CKkIDQLTEFulK3OLArqivrF5FSS8ZWHg85UCP2z3zKDGg5EChwGIt+/R2OkHy/sTGDrFDg5D/iaL6K/rIWL9OGAJ7HSf86sz9AxaOFyKOcXCZShAOESCLr+bNIg/3l8hEPpu4cBiY4MwYWjgg5GTMkfcOOCnpQM1PAT8BSyJnZ5S9h+kCjDCohEWex3xSHhNRGDM+qrMQjzoLoolki3Fjqu97XZAqhgb0P6OM2uY8vJqgbrn16gZ8O0ipAkEjgQOqZ2V2W6XtzLfRl5pHRbwTzofIh90z1kpr9veMNrX7wBEUFwl56ZXkOrER/JtLTT0HFoIXgcRGCPAojk3/wIkkErG99sTTbyQNS/y2j8WEZGnIpUJl1kpr8MPKS2EXwnc5kbdZJs5DUGEx/XJZL7d6OufLx45edp5yIcsyAL7BCvlmaQ9Q9mJR8JHIsFZIFWLc7Xo6/ttipzfWoHVY4nkpz00RYPBYCgbOjH6cWST8CdEXPy4XON7IWt34CYk2GQqcAoSrtZ3LuI6QTlqCeTnzwZ5vIlUL36Z7xj1jc0rIQUCiyFVcVu2DN5vQUQUXk3f7T7gOOx0Xv7Zhnawg0OZUyzM/X/bY8M6GOUy7HRj90/W0FvxQtZgOq84XKS9x7VhImKP1tLev8aDa//5dtHAScAFSKDnJKQ4Y4wbdVt1he3X+vkOx07fXNpPVZ0YYdEIi72WeCS8DtKivKM+NBMJk7g4lkjOFUpRCF7IWhyIIju/y2aPtywEL6xew+TBsPerrZmFx8/2fvwG2Rm9vztbRHW76rF6btnqyMlI2MZ1sUTS7a7nNpSXeCRci1QR7odUYY3MuflrRGC8N5ZIpto+1gtZCqkg3Fwf+h4JZnm4kIuHeCRcA9wP7EEm88/GX/30eXDK9A30zT8AJxc6psFQKPFI+CLERmIW4rf4ZJvbaxBfz3WAG2KJ5FE9P0uDwWAoD20SoyciidFPdv6o/PFC1mLAbUhoG0gAyaGFBMD1ZnT14iGIDcxwRGA9E7gm3+rF+sbm5RBxcSlkjb9ly+D9fkMqFxuRzd3fgCOw00+U+2fotfhiYVuhsL3/z1Pg6FOA3/W/3xChx8ZOm06afowWDttWHOb+W7S9x7VhEh0Lh98B4zq6FlKOWhWx9FlXH3oOOMKNui1z3NEOxoD/IB2Pq/VFv1YjLBphsdejd3/PB7bRh6Yju5WXlNpioltQ/wWMysAeAWlfyeV3/dw35xuoUSjxSLgOSZY+FgmKyfIlUp3oxBJJ86Hai4lHwoOA7RCRcWckbCXLh0ir9H25grkXsgKIIBkHltSHC6oujEfClwOnBDKZWet98wvzT5pai7QPZasgTWuJodvRlby3I21sk4F/xRLJ93JuzyaVTwBWiCWS/eLi2GAw9F10YvRDwBZIJfbx5Uy51+vX44B/I2vXP4BRVsp7vFzPUe3obo2b8a8PXgMOcaPu1/k8vr6xeWmko2MZZAN3y5amhm+xg+si1YuWvqsDjMZOjy/j9KsHOziE/ITChfGLHvJlKr5Q+HsX/5/QF8UYQ+d4IWsQvnCY26Kc/VeqcNgC/F1oEYVy1EBkk+FsxCYhDZwE3N7Wxx4AOzgSERUTwNl9sR3aCItGWOwz6Fa585FFGohA8n/AZbFE8rdSx9dtqPtPHcDxgQwL1s3iitoMV1opb1KpY7eH9r0bBRyFLxy1Iqbf1wEvxBJJE6DRx4hHwvMgYSn7ImJjXc7NryKVjA/GEsk/AbyQNQwJVMn1Q/wvYHfmhxjfu+EYAoHrAFb//ncWHz8R4FHEt/G7Mv9YBkOn6OTUJHIBOBbYMJZIfhuPhIcCXwBLAI2xRPKyCk7TYDAYyoY+741BqutAKuxOKUdidBYvZK2CrBuyLbw3Ip/z3bJ2rTZ09eLhyCbsPEjVWyNwrRt1u1xD1zc2L4FULq6AtK5v2dLU8BV2cDBwIdItEtC3jcJOP9MtP0i5kfnnIxQuDIwocPRp5CcU/oYRC/s9bYTD9v4tlscwk+lcOPyrnN1XylFrI1WK2fPq48DRbtTtvKDJDtZhpwtKrO9NGGHRCIt9jngkvAXicbCJPjQFEeL+HUsk/6jYxPJAV+5sgFQn7oWfLv0nsus6JpZIfl+h6Rl6mHgkPD9Slbgvc6aXz0QCLO4FHoslkhO8kLUscyc4NwJO2/b8e7bdfPSvI4ddSSDAir/+xfJjx3+BVDo+280/ksHQIfFIeATwPyRF/StgI+Bo5HzeAlixRHJqpeZnMBgM5Uav+84ALtaHHkcSo8sm/OkL94vwRbCvkGCXbg0YrCaUo5ZGhIAt9aFXkOrFb7t6bH1j86JIR4iFiGFbtjQ1SCiOHdwYqbhfXt/9RuAU7PSEcs4/L+zgIPITCxehOLEwH6Hwd+AfIxYasujzz5J0LhwG2nloLpOZuz059/uyCocdoRw1GDgPCWytRcJYjgMS7VYp9jOMsGiExT6JXqhtjewmrq8PT0J86eKxRLKqzJZ1gMa+iKC4Vs5N7wDXAg+YC+r+TTwSXgIJfNmPOV8jU5Aq1nuAp3f8+JstkFTEFfXt7wDHWynvHS9kLfTH8CE3fLD0IrvOqq1h8b8nzFztx7FnBOAaK+VN78Efx2Bol3gkvBhitr8U8C4STjUU8SC7v5JzMxgMhu6iTWL0B8BO5UqMzuKFrC31cyyBbFCeDzRZKa/PVtDkohxVAxwJXI6EgUxCOj7+r6vqxfrG5oWA5wGFtJVv1dLUIL7mklh8KXC8vnsLcAh2+uWSJ+2Lhfm0IgcLHH06+bchp41YaGgPL2QNxBcO22tVLkY4bPvvz0r7vStHbYRsTqykDyWAE9yoO7Zys6oujLBohMU+jRYYt0cqXtbRhycg7SZXxBLJ8ZWZmRCPhJdDKnIOBebVh6chlWjX5fqMGQxZ4pHwSogQvS++gAgwHniobtasB7b+rGW1mgzn4ptjPzplQN2Wb6yw+IhpA+oYPmXab2t8//t66338SUlBRwZDuYlHwhbwBn6g0ZvAxu0lpRsMBkNfIR4JbwQ8hp8Y3RBLJD8p53NoW58xwN760OvAgf3JAkU5ahlEINhcH3oJOHSusIU21Dc2z48EM6yJVCpt09LU8OHsO9jBLZDQnKX1kf8CjdjpOf2qRSxciPyqC0cW+OPNIH+xcLwRCw1d0UY4bO/f4nQtHE6h/VCU7P8rLhx2hHLUMKTi+0Tk5/wNaXt+tJLzqkaMsGiExX6BFhh3QgTG1fXhNOK5cnUskeyx14BOON0eqU7cAf9k3IJ4Qt6a9c8zGDpDv67XQgTGfZAP9yy/DZg564nVfhy7xEL/TN5hZk2At5ZfnAlDBlE7q/W7WbU1a1VaWDcYOkJ75j6HVO9sEEsk367wlAwGg6Hb0RvOzUhVzERgr1gi+XQ5n0OHv+2P2ASNQDbcrwQ85GL/O+CPar3QLwe6evEYJKxuKPK7PgW4sbOWxvrG5nmBp4H1kM3c7VqaGt6ZfQc7OBxJfj1CH/kaeJ85RcN5KYysWJhPK7IRCw1F44WsJYA9gLXxKxCLFQ5z//XK84ly1JZIIOyy+tDtwMlu1B1XsUlVMUZYNMJiv0KLersi7R+r6sPjkLaI/8YSyYnd+NzzIQbdx+CfoEAWKNcBT5XTsNvQv9Cv7U2RVuk9gfmyt9W0tv48eMasoZMHDZiXTOY3AoENjFenodqJR8JrAMFYIvm/Ss/FYDAYegqdGP0wUlHXChwXSyT/r9zP44WseuBOfE/yXCbhVxV9iy84fgd8Z6W8nvcQ7AaUo5ZDqgw31YeeB0a5UbfDNVJ9Y/MI4CnEB3gCsH1LU8Mbc9zJDm4H3MKcG765zCR/z8JxRiw0dBdeyFoSuW7YC9iwg7tNpXPhcGxvFA47QjkqCPwbf4PgR+BwN+r2jnCmCmGERSMs9ku0CLMnYCNmzCABKf9GWpAnd/DQYp5rTaQ6cX9gsD48HlnI/F8skfyqXM9lMMDspMltkUrGXZHdeBAPk3+ZFnuDwWAwGKoX/Tl+A3CwPnQFcFq5N6C9kFULjEJEsmXIv0LpL9qIjTn/vrdS3rRyzrM70dWLxyM+iUMQsfBk4JaOqhfrG5vnAZJIsN4koKGlqWHOTTA7OBKIIr/LtqLhOOx0l6nUBkN30ImYmEHsEZ5Gqm1b6IPCYWcoR+2InHuX0If+D2h0o67Ri7rACItGWOzXxCPhWqSF9DxgBX34d6AJuCGWSE4pctxByAn7WOY8YX+EVCfeW87EP4OhI+KR8DDEBmA74M5YIvlihadkMBgMBoOhC7TdyZmIvxeI/+L+3b1+1CmuS+MLjW3/zd/FEBngZzoWHn+xUl7VdegoR62IbPpvpA89g1Qv/tTe/esbm4cif5OtkVbQnVuaGp6PR8JDgXX1ONmwvYmIAJn9OinPY5ONv7ChHHghayl8MXGDnJsywGvAA8BDVsora2hUb0E5aj7EEuIgfegb5P3/cqXm1NswwqIRFg1APBKuQyoKz8VvU/4VuAS4KZZI5rXzGo+El0QS5w5HjJlBvFEeRATFN8wCwWAwGAwGg8GQD/FIeB/E22sQ4te3UyyR/LVS8/FC1gh8/7VlmVt4HNrhg4UZwPe002Kt//1Vqeoo5ahaJKThEuT3/Q8wGri9verFVU9JDB7QOuPJBab/ucWi036btdLEr74d3DptGaCujNNqKzp2JUrmJVrGEskZZZyjoQrxQtbS+GLi+jk3ZYBXETHx4f4qJmZRjtoduB7xQM0gAuM5btQtWwdjf8AIi0ZYNOQQj4QHIG0L5wBL6cM/ARcjoSrT23lMANgCqU7cBajVN/2MJO/dHEskf+vmqRsMBoPBYDAY+iDxSHhj4FEkMfpHIFzuxOhyoINhFmRusTErQC5F16LbRDqudvzOSnnd5oeeRTkqhIi5WTHmSeCIg59c+g9gDaQaMfuvPR/FX5CW0rcRf7p5gGE5X4d1cWxY+X+quZhB8ZWUnR2bYoooKkeeYuJDVsqr2OZEtaActTCS3r6XPuQhCfFvVW5WvRcjLBph0dAO2tvmUOBs/AXD98CFwB2xRHJGPBIegZRLH4Pv0wjwElKd+FgskZzZc7M2GAwGg8FgMPRF2iRGTwD2LndidHfjhaw6ZF3dUZv1YnkM8wcdC48/WClvriKAYlCOqh05YcC5IybVnbng+EF1C/89aOYC4wdlaggMaHPXWRn46OthywW/GbrM8r8OXmTmpNph+3532U4PFvvc2gt+CF0LkIUem4fyVlO2RwZfaJxLgMzA5FnUTJkVqJ02s6Zu2ozAgOkzagbMnFYzaMbUmsGzptQOnjmldkjrlJohmUl1QzOTa4cGJtYOY3Lt0JpZNXUDEb/6wfrnmIRUlU7o4uuklqaGviNktEGLiXvpf+vl3JQBXsGvTOz3YiKAclQACbu8Bgm7nIXYoF3oRt1e4w9bbRhh0QiLhk6IR8KDkbbmM4FF9OFvgf8hJ+959LGJwB3A9bFE8rOenqfBYDAYDAaDoW8Tj4TnAx5CEqNnAcd3R2J0pfBC1hA693ect4shWpGOoY7arH+1Ul67oSnad30V5qxGXK7t/abXts6oyfByXWvNS8AbwHuxRHJSfWNzHVLluD/ytzmopanhnrx/+B7inP33Gzi1dnBwas2g+VsDtfNm5Hc6bwCCgUxrsIbMiEAmM7yG1uEBMvPUZFqH1WQywwK0DqnNtA6poXVITWbWoNpM66CazKyBtZlZA2ozrQPqmFXb5ZOXyCxqmF4zgJmBAcysqUVycbQ+ob/4qUOZtt+3BjKZTIBMq/wjE8hkWgPIMeT77O0ZIBMgk70PQPZrJjDnUxX7tbQxMplAAOoCGWr9Kemb5AdoBVoJBAqZT5bfgceBR4AX87UE6w0oRy2OdBSG9aGPgUPcqPth5WbVNzDCohEWDXkQj4SHAEcBjfjeiSAl09choRjmdWQwGAwGg8Fg6DZ0V82NiHUPdFNidDXihawgHXs71iNVfp0xDelA+m5qXe3Pv8w7T2bsiGHBCYMHLjGjtmYVAoHh7TzmswyZNz+vnzDyi6Um7PLPsJkDCDAOSZK+J9d7sb6xuRa4GUnzzgCHtDQ1OG0HrG9sDgDZ6rsh+FV4gzs5Vo77Zo/XdPF7KpxMhgGZmdRlZjCgdQYDMjP11xkMaJ3JgMwM6uY6PqN1YOuM1gGZ6frrjMyA1hmBAZmZ1LXOqKnLzKypy8yqrZlDODP0MBMQK4BHgKd66/WurlI8DIgDI4DpwAXAv92oa/xGy4ARFo2waCgAnbB7JLA8EsjykvERMRgMBoPBYDD0FNrf+yzEogfEf/GA7k6Mrma0v+PCtOPtmIFlJg0asOT4oYNrxw0bxLihg5k4eCAE5tSrame1MmLqtInzTJ3+04gp0z9fYMLkt4dNn/k5uuJx7zPqlgUc/LTnR4Gj3Kj7e3aM+sbmGiQI4kh9KIUEwbQV+qqFaYgPZPbflDbfd9fxaS1NDV1aRunX+kDmbu/OFZEz7X1tJZCZWDts0IQBw4dNqh06ZGrN4GHTagYNnVEzYNiMQN2QWYG6YTNr6obOombYrEDt0NZAzbDWQM3QVmqGZQgMaw3UDM0QGJYJBIZlCAzLEJhDkM0E5tY7/YvCQLvft7lfJgCTIDMpQGZiACYGMpmJgez3mczEpf/5NbDpz+6Sob++X3G+6RNnWwVkMrROGTDok/GDhz7z/XzzJScNy/xQx6wOfxed/Z7afA0AqwG7AbsCi+Y8fjrwAiIyPh5LJH+nF6ActQyyGbO1PvQO4qVougzLiBEWjbBoMBgMBoOhD3DdUS/WIn5BCyEBCtmvC7Y5tgDwF/A58FnO19+PHbNl31nsGQx9nHgkvC/SfjsQeA/YuZKJ0dVCPBIeCqyD39K8IXLem4NBM2ZODE6eNmX+iVMGzT9xyojhU6e32xeaw9gMfPfNogxx6wOr/j4yUPPXCP4ZMJOz93u5dcw2r3szYHZF4tVIVWNXZOheMa+z+05vaWpotzXcMCf6bzoEqXYbnsfXru7TYdXowpP+YtNfPmHTnz9mxfE/zT4+iwDuAsvy2uKr8/qiivGD5yiwzSDVhV35TeZzn0ktTQ0Z7fW5LiIy7gas2Ob53kBExkdiieS3+fweexLlqBokXPVSRIyeimzIXO1G3T5f4d3TGGHRCIsGg8FgMBiqkOuOerEGEQo7Ewlzv85PaS1u45hbbPwc+NUIjgZDdaITox9D3v8/Ag2xRNKt7Kx6lngkvCRzeiOuwdwhJdOAd4E3EUHkzdyKKy9kDUXaqTvydwx2NgdtwPdTTYZvgO8y8J07/7Iz313Y+vXp+vW/nDhw6CTaF/lm9OVgEcPctCdSbvP9Oytu+eMH29X/8+tmI6dPWiZ731bIfD9i0d/eWHTV355Zer30H0PnHUwBImWR/A7cCdzS0tSQgtmVoyF8kXGdNo/5BKngfQT4uNIdfcpRKwK3AJvoQ68Ao9yo+1XlZtW3McKiERYNBoPBYDD0AFooHEl+IuFCiFBQjCH+38BYJD31j5z/Z7/+hbQMrgKsrL8uS8cXJ+MRgTFXbPwc+NkIjgZD5YlHwssjidErIlVHe8USyWcqO6vuQXtMrsGc1YhLtHPXXxABMfvvw1giWXRitBey5qWNt2NrgGUnDGGdIdOYf2Dn9U9TgA+RqtLsvy+tlGeqpvoxXshaFj/Nee2cm1qBl4H7gUeslDe2ozE6qaTMp6oyn0rKNxCB7v6WpoaJ2YNazN8FERn/xZxrlRZEYHwUeL0n/V+Vo+qAkxH/xEFIwOrpwBg36prq3G7ECItGWDQYDAaDwVAE1x31YgARCvMRCbP3KUYoHEfHIuFcouGxY7Ys2Ij8uqNeHIKIErli48qIp3BHguM/zC04fgb8ZARHg6Fn0YnRjwCbIanEx8YSyRsqO6vSiUfCCyHiYVZEXJe5PQpnAR8xp5D4Y09VTa1986prjZjMXfNPwFpofIaVfsq4m32a+XTwDJZERNB52nnYROAD4H18sfHrjlKrDX0DL2Qthy8mrpVzUyvwEvAAXYiJ3YUWKYciXoSHATvir1kmAvchIuPbuVW28Uh4fiRleVdgO+b0v/wDP2H6hVgiObW75q8cpYBb8aspnwWOcKPu9931nAYfIywaYdFgMBgMBgOzhcIR5CcSZr0KBxTxVGnyEwnHAn8WIxSWi+uOenEwIjjmio0rAyvQsUg6AfCYu6X6x2PHbGkumg2GbiIeCQ8CbgIOzB5CEqN7xfsuHgnXIueZrIi4EbK50Za/mVNEfK/SwTXKUQOBc4AzkHPjWOCo+y+d+Rhyvlwn599aiIDTln+YU2h8D/jOSnl95yK8H9KFmPgivpj4RwWm1yH1jc2LAQchImPu+/BzRGC8s6WpYY4566DTbZFKxjAwb87NE4GnEJHxyVgimS7HPPV7rxE4G1mTjUeqFm/PTW03dC9GWDTCosFQFejQgWWRXa5/sv+OHbNll4lxBoPB0B5aKJyH/ETCbEXhwCKeagL5iYR/IELhtKJ/qCrhuqNeHIRcLLcVHFdkbm+zLJNov6X6eyM4GgzlQXuhnY20AoJcxB8QSyQnV25W7ROPhIPA+vhtzRsgLZlt+Qzti6i/fllpD7eOUI5aBwnUWUUf+gapTPww+/X+S2f+hfjV5YqNa9B+WvQ45hQa3wN+NGJjdeOFrOXxxcQ1c26axZyViVUlJraHrmTcDBEY98SvSJyBVCPeAjzb0tQwR8tzPBIeoB+XTZhePOfmGYio+gjwWCyR/K2YuSlHrQ3cBih96DHgGDfq/lLMeIbiMcKiERYNhh7nuqNeXBD5AFgt5+sqzFk6n2Uy8l79J+frP3key36daC5aDYbejxYKh5F/ReGCiMdOoUwkP5HwD+CPY8ds2W2tPb2N6456cSBS2ZArNq6CCI4dVXdOZs4Kx6zw2GLO3QZDccQj4f2QC+6BSGjJzsVevJdpPgHk3JAbsrIKzBXEPBF4G78a8e1YIjmuB6daMspRg4DzgNNov7L7Z9qIjVfcOPPXJf5iZeYUG1en/fPmH7QRG62UZ4SUCuOFrBXwxcQ1cm6axZyViX/2/OzKQ31jcxDYFxEZcwNcfkLON7e1NDV81/ZxOmF6bfzwl1DOzRngLfyE6a+7mody1GDABk5B3mN/AscB95sqxcpghEUjLBoM3YZuoVuZuUXEhTt4yFRECBxB+7u2xZJBKooKFSTbHptifMMMhu7luqNenBfx0FoPqYhrW1HY3gZEV0wmP5FwLCIUTintpzC05bqjXhyAiAq5YuPKwEp0XCU6BUgxd0v1d8eO2dKEHhgMXRCPhDdBAhTmB35AEqM/7aHnHooID7khKwu0c9dvmbOt+dOeDHvoTpSj5kdaX9fM+bpiB3f/izZi48XOzB9W+IVV8IXGtZG1dHtV4b8xt9j4ezv3M5SRPMTE+4FHe7OY2BH1jc2rA4cCBwDz5dz0AlLF+EhLU0O7G6/xSDiEVDHuhqz3cvkUP2H6w7bVycpRG+vxV9KH7gNOcKNu1Vd/9mWMsGiERYOhZHTS6dLMLSB25sH1DeACn+R8/SZ7sairXkYAQf019/9tv3Z0W7CT5y+GmeS0aZO/IDnHbX2hDdJgKAe6nXZ1ZFG5vv7a0UVXLlMREbBLkRARCivqvWXomOuOerEOWI45xcZVkGqGjgTHqYjg2Lal+hsjOBoMc6ITo59E1mT/IInRz3bD8yzJnCLimswtgE1DRK+siPhmLJHsV+KXctRw5HNvLXyxcRXaX69OREJpZguORydnfbuFm2lb2bgK7Yds/cScYuP7fVHg6mm8kLUivpi4es5NsxBR7QH6qJjYHvWNzYORhOhRSPBLlnHA3cDNLU0NH3f0+HgkvIR+/K7A5sx53vgeERkffWa93z/4dYGpFwAnIJXOvwFHu1H30TL9KIYSMMKiERYNhoK47qgXRzK3gLgq7XvigBhs54qHLvDZsWO2nNgDcw0glY/5CpEd3TaCuVt1SmEapVdPTjD+k4behH4/Lo8vIK6P7O63Jx59DbyDnC/aExAnmerhvo0WHJdh7pbqEB1XtE8DvmDulupvzPnS0J/Rqa0P4ydGHxNLJG8sYbyByPk7G7CyEbBEO3f99f/bu/Pwuspy/ePfJ0lnaEspU5nKTIGAMskoUETAFhCVScAioFSrHhWH+vPIwRmPBxW1nuJRsTKLIkiLoBJBQGYZAhTKVOZSoDN0TJ7fH+/aZCXZaZM2z17Zyf25rn0l2Wvt9u3dlbXXftY7AHfSMj/ig+dePV03V9vIhnXuRuvejbtT/ly3nPTe+E6x8dR/ND193N3eds7GnSl/7Tqb1sXGf495YmZVDTUvwhqKiX+npZj4ZgHN6zFGT54xGvh49tgyt+kBUi/DK2dfMG5BR6+/8KTxG5AWfTkeOIrcKJXl/ZqaX9hkac3zm7zNayOW/W5lP/9844RGHbs9hAqLKiyKlJUNW9uJ1gXEelq/SeStJH2Ia9sL8dVqLwBkPTKH0LXekuW2Denmpr1F5+ecXEgq1szUfHBSCdlcqvmeiPvSenXAkjdJ82ndm329b9LUsX36wlw6li30tQ3th1SPoeNh8itIBce2C8c8XeSK2yKVlK0Y/SvSsEWAHwKTO7Ni9IUnjd+I1kXEfWhf9Goi9a7LL7LyQk9dZKWnq59WX0cqDuaHUb+bdE3ZVhNpntp3hlEf/6/mp0+5rXk7Whcbd+jgr3uarEcjLcXGPv/5eObOY3aipZi4e27TKlr3TNQ1SxujJ8+oJfVePIvUE7E0V+gy4A+kIuNtsy8Y1+H54cKTxg9eMnDVcYuGrDx/xKL+Ow5c2apT71vATaTh0jPOvXr6gm7/R0iXqLCowqL0cVkvos1p3wtxZzqeaP8F2hcQZ+kD2uplPXDWZ+17TZa+X5f5J5uAp0jzlzTmHs9qkQRZW1MmNgwiffDJFxK3KbPrctKHnnwh8blqv/kgxcsKjlvTfkj1GGBwBy9bCcyi/ZDqpyZNHbsius0ilZYtoPIN4JvZU9cCp+dXjL7wpPG1pN+f/CIr25f54+bRUkD8F3DfuVdP17QTgeqn1dcA29K62Lgnaf7hclqtSP2B+5qfOePvzVvSuti4bQevfZLWPRsfHPPEzF7//ztz5zE701JMrM9tWkXrnonzCmheVRo9ecZGpBsaZ9GyWjqk4/M3wG9nXzCu3eJD9dPqxwEXA5tbM2z7ypDr9390xJy65poP0LqjyyrSStulFaa1kFEBVFhUYVH6kCkTG9YjDbVo2wuxXC8iSAuetC0gPjpp6tgF4Y2VDq3l/JMjSMXiEWX+SEiLWzxGS6HxUaBx0tSxfWruI1mzrAfvzrQe0rw75eeHmklLAfFe0jGlgo1UTHa8bkX7IdW70HEv8lWkGzBth1Q/pTlypTe48KTxp5I+0JdWjP42aWGQA0jn9HK94h6n9SIrs9QbsXj10+oNGEX7RWK26uAlrVakPuLfzc+d9dfmTWq8VbGx3GubSe/p+WLjw2OemFn1i52toZj4N1Ix8XoVE9fN6MkzjHTdeBZpZen1sk3NpHlgfw3MWH/M5KHAj4HTs+3PAGc1Tmi8Dd65QbInLStM79Lmr7qbbPGXc6+ePivq3yOtqbCowqL0QlnPje1pX0Ds6K5kE+nOZKmoVCokPq+eRL1H1jt1M9KxkH/sAgzo4GWv07pnYyPweCXmyJSeYcrEhlG07om4D+XnVJ1D656I90+aOnZhpdop0hVZwXFL2hcbd6HjOYNLPb7bDqmepSkmpNpceNL4g0kfvsvdcFxCOo+Xioj3nHv1dM1lVkXqp9WPJM2DmS84dmpF6sMebn7+Ezc1j6hrZi9aio2jyryuiXQjOl9sbBzzxMwefwNm5s5jxtBSTNwtt0nFxAoYPXnGEFL2ZwMHlp6vG/rQgoGbXtvfalcMJhUcfwyc1zih8e3yfxJceNL4HWlZYXq/Npsfp2WF6Qd0MySOCosqLEqVmzKxYWPaFxB3pePhsnNIhcN8L8Qn9KGo78qtytq24Lgd5Sf+duA52hccn9ICCdUt69W8N60LieUm5H+b9AEiX0h8STcipNplN2C2oH2xcVfK9+KC9OHnaVoKjs+SFkh4HnhRvRylp7rwpPE7kHoJjSINay4NbX703Kun6/28i7IbFkOB4dljGOk6qolUsGoq8/3qtrXbb13eZ9usSF0qNu5C+9W7oc2K1Ic93Pzix//WvP7Albyb1Lt1H2DjMq9bSbomzBcbHx3zxMzCp0taTTFxJa2Lib2uiJ4dm7VreJT2WQa8MWnq2KZKtG305Bk71/Sf+5n+G990dr/1Hx8A0LR8Y5bPOeaRprd3+Anw+9kXjOvUMPwLTxo/ipYVpsfS+th+iZYi4z91juteVV9YNLNJwJeBTYGHgc+6+72deJ0Ki1JVsjnMdqH9XIjl3tQBlpLuIrZakXnS1LFvxLdWeoMpExuGkI653WhdcNykg5esIA2TaVtwfFkFp54nKyjvSushzbuQLizzmknnkvyQ5sdVRJa+JCs4jqJ9sXFXUvGgIw68Qioyzqal4Fj6/gXd2BPpGbLf88GkouAGtBQI89+vblupkBjJWcfiZP77Zpp9Rd3SQcvr3h6yvHbp0BV1S4euqF02rNmaatyaaaYZt+wBTbXNdW/2bxo4d8Cqwa9t8Fb/hRstXFkzaNmikf1XLN6s38olm9U0rxps3ozRjHkzeDPmvqqptv+Lq+oGzV7Rf+izbw/a+OlFQ7d+0Wv6rVyHtjex5kJZ7UavP7TN8AWzDh2wfMEhNc2rtnarAauh2WpWrey3fuOSIaPufWNk/YMrBgxf1pk/j9YFuO7cN+LPzO/bVU3AXNLK7vnHK21+fm1dprjJhvKfClwEjHCneeWCfZ9Z/tqx2+F1pevRxcBVpJsg965uwZe8C08aPxwYR+rJeDSt51ueB9xAKjT+NT/PrKydqi4smtlJwO+AiaQPO58n3YHYyd3nruG1KixKj5TdURpN+wLiDrT/wA/pAuMZ2hQQSYtxVOROk/Qt2Wq/+ULjbtmjo/nKFpCbt7H0vebqrJzsw9JWtO6JuBflF7V4kdY9Ef+toe8i5eWmmCgVG8eQ3sO3zr52tFJ13hzaFxxL3z8/aepYfeAR6aRsHurhdFz8W13BcDgdL1zYFctI1z4LSdfp+UJPXQff53+OLk6KtJUv2A6ka8fgG7QvQLZ7tH0vq59WvwUwlVT8g9RD9szGCY0Pjp48YxQwgTQf43a5lz1GKjBeOvuCcZ3uLHPhSeMHkVapPh44Ftgwt/lt4GZaVpjW8Pe1UO2FxXuA+9z9M9nPNaQPRD9z9wva7DuA1nOIrU/qDqvCohRmysSGEbQUZ0pFxN1omcy2rTdpX0B8bNLUsb1+lTbp2doUxPOPHen4TumLtFkshjQsX8MG19GUiQ3DScOU8oXEcj1NF5Em7n+nN+KkqWNfrVAzRXq1rOi4ES1FxtIj/3NHN2TyXqd8b8fnSYXHxd3VZpGiZfOED6NzhcBy2zpTzF+TJmA+qThYeszv4Pt2P69rL+QOhq12piDZXdva7ec01y0ZsGDDxf3nbbGs35JRy+uWbrayZvkmGIPNDfMaarwGowbzGvo19V88oGnw/AErBy8curT/8vWXUtd/5Yqhtc0rhtc0rRyGWa2b4dTgVnrUNjfV9l/aVDtgWXNt/+VNNf1XuNU6ZuXaXEMaUdEENFlzk9U2Lx9Yu2r5oBpf1S/XW9KbavstbqodOH9V3eB5XlO7gtZFtLaP5jVs7+p+PX7fSVPHNrc5/upII+I2W8NjU7pWiF8EvOr4q/MGvzr45aFPvWvJgPn9l/ZbtKp/06Bpe7105E8Grxz6IrCoNNIpW/DlvaS5GD9Cy1RfK4HrgV8Bf599wbhOd6a58KTxdaR5HUuLv+QXK2oCbiUVGa879+rpL3fh39enVW1h0cz6k6rLH3H363LPTwOGu/txbfY/H/ivMn+UCosSLrt7ujPteyFu3sFLVpDmacoXEB8B5mhIqVSTKRMbBtBy7Ocf5ebtgzTMZRath1I/Csxue+EjSXZ+2Z3WQ5p3KrPrKtKUIfkhzU8qV5FiZIXHEZQvOG4NbEPHC8nkvUnHQ62f1yJKUknZcb0eXestmP++o7lMu2ohay4CdrTtLV1vr9narkhd0+wPHvSYzzn2nuZ+W77ONpbmdt6T8qMoFgEP0HrOxufGPDHTZ+48ZlfgRNKIxTG516wA/kqaM/HPY56YuWDd/qVSTlYAH0HrYuMoyhchu1LwX0qZHo9LzBc+OGDVzs/XNR2+oMZ3WWqU+lW+CFwCXDL7gnGzu/JvyFaYfhctRcbd2uxyH6nI+Kdzr57+RFf+7L6mmguLo0gnpwPc/a7c8/8NHOLu72mzv3osSrjcpO9tC4g7U35iZEgfAErFw1IB8alJU8cWPsmxSJQpExs2oGUIdb7g2NFcZUtIwx/yBcc+N2dodo7ZjtY9Ed9N+VW9n6WliHgP8NCkqWOXVqipIrKOst/34bQvOOa/36ATf9QCOh5qPZvUw6rnXORL4aZMbBjI2s8zOJy1m9OtrbdZ+16DizQdUHHqp9VvSOtC456kKZ3KDa99E/h3bZM/dNBj/tpRDzTXbjuHLbNi47sovxjlfNIcefkhsitIw1lLxUTdUOkhpkxssCX95w+7fZtrzl1Vu/JLg1asP3DIimGrtli40x1bLNzpVcM2paUAubo5i1tpxpvfMlhS4zVLzHmrxmmGZwc5t4xeVfuXQW4vkIqSczs7L/iFJ43fnlRg/CCwP62P2SfJiozA/edePV035nP6TGGxzOs1x6KskykTG9YnFUXarsg8vIOXLKL9MOZH1ZNAJGlTmC9NC1BPugvdv4OXvUb7xWIe7y1zkk2Z2DCSVDzMFxJHlNl1HqmIWCok3jdp6tjXK9VOESnGlIkNw0gFxo6KjxuWf2Uri1l94fFNFR6rR1YUHEr6gD4s932550rfD6d1kbDczaquWklLsa+rBcKF67IghPQ8a7Midb+V/tABM33uEQ8212z3KqNqnT1Jn7dK14QqJlaB+mn1O5HmRTwwe+o24OzGCY1Pt913ysSGwax5CPZmwMguNMEpvxBNuXkg35mO6cKTxm9KywrTh9N62PfLpIVfrgNuO/fq6X2+Q1A1Fxa7NBS6zOtVWJQuyYoe+wJnAkeQhiiV0wQ8QfthzC/qwlyk66ZMbOhHutPddjh1R7+DDjxN68ViGoGne3IPhmzl93fRekjztmV2XQE8SOsFVp7R+UVE2poysWE9WgqN5YqPG3fij3mb8gXH0s9zdf5Zd9mwwvXpXCFwdd93dCOuq5pJn5XWttfgUh0Xsjr10+oHkm4i53s37kH5XorLgcb+K/3h/Wf6a+961t98cSP74zd/+djzlWuxdEX9tPo64Fzgm6SbFUuArwAXN05oXKfeftk0QJuQKzYusuYxC2r9oCbYZZDbwCHNxhCHmq6thTSfMgXH5qZ581ctvX2b5lUv7YMvP5jW6yHMB6aTiow3n3v19D659kHVFhbhncVb7nX3z2Y/1wAvAD9vu3hLmdeqsCidMmViw8bAaaSC4q5tNr9C+wKiFp8QqYDsA/OutC84dnQXcxktc5fmi46vVvrDT/YBcida90Tcg/J37p+k9byID6snh4h0h6x3yFZ0PNR6s078MUvJFpKhfM/HOb19LtdsPuG1LQSWvl+f7l0NeDHps85C0qiZNX3ftmC4pLf/v0nPkxWjdiIVGkvFxnfT8dybbwBPkebnzn99qnFCY58s8PQE9dPq60nzHu6VPXUzcE7jhMbwQvDoyTNqSZ2AzjLnuMFOvyHNxnpuyzdtqvn3titrH9+0yZYb1rYXZKduyrivonnl80ubVj65snnlc4Pw5bmejLYCG3K/1aw/o6Zui6v7DT742b5yg6XaC4snAdOAc0gftj5PmsB1Z3d/bQ2vVWFROpSthnUUqZh4DC0f9pcBfwAuJw01fLOYFopIOVnP4k1oP3fjrnQ8cfQ82i8W8+ikqWO77b1hysSGTWndE3Efyl8kz6V1T8T7J00dO7+72iEi0hXZsNqt6Hio9SjWXAxbQevC4+w2379aVG/y7CbPeqx9UbD0tTuGDpespGsFwXLfL1ZRUHqL+mn1NaRRKvlh1Luz5hsfr1C+6PhM44RGdQIJUD+tvj/w/7JHP9KNii8A0xonNFa8mDR68oyNSB2EziYNvS95GvgNMG32BeNeyT4/bMCah2CPAoaU/hD3ZnzVKzStfJrmlU/jzfmPDkZN3ebNNf22WVDTb/vZNbUbPE9aNPFrYf/gAlV1YRHAzD4DfJm03PlDwOfc/Z5OvE6FRWlnysSGHYGPAxNo/WZ1H2luiKs0J6JI9ZkysaGWNKy47fyNOwA1HbzsedrP3zhrTb0Fs56Ue9K6kLhlmV2XklY6zBcSX+grdzZFpPplw9G2pOOh1lvQ8Tm2ZBVpxNFsyhcfXy438X72d69tIbD0/VC6t5fgEta9KLhc7wMia1Y/rX49YHtgR9L1XP7r6uaXbSadc9r1cgRmN05o7NRCH9Ja/bT6vUnFuvrsqeuBTzVOaHy1uFYloyfPMNL1+FnAybQMZW4CbiR9zr9x9gXj1jhXYrbOQruio7tv5qte3qFp5TPbNq+cPcKb32y1iJXVbkJNv61ea1p235a9cU7Gqi8sri0VFqUkKwKcQOqdeFBu0xvApcAlk6aObSyibSISK5vXcAytezfuRrojWc5K0tDkfLFxDq3nRtyN9h+knbSqdX5I86OdXaVORKQaZXPkbk753o6jSUXJNa0g3AS8RFo9dn1aioLl5mFbW6vonl6CPXYeX5G+pH5a/QhSkbFtwXEH0nmkI6uAZ2lfdJwFvLyucwP2RvXT6gcB/0Xq7FVD+gz9GeD3RfRSXJPRk2eUPvufRcuCMpAWhJwG/Hr2BeNmrevf86NTPjYGmk51XzYeX747YNiAOfjyUedePb3H5bKuVFhUYbFPyro7708qJp5Ey12LZuAvpLst0zWPmUjfNGViw4a0H069G6u/GM17mdY9ER+YNHXs4oCmiohUrWzqmVF03ONxK1qvxFnOW6x7UXCZegmK9H710+qNtGhVuV6O27P6GxbLSENoyxUd5/bEIlq0+mn1B5I+N++YPXUV8LnGCY2vF9eqzhs9ecbOpHrABFovZnYH8CvgD7MvGLfOc3VeeNL4TYBjgRXnXj192rr+eT2RCosqLPYp2TxnHyOdQHbKbSrNs/C7SVPHvlxE20SkZ8tuSGxF+8ViNiMt3FQqJN6r84iIyLrLprHYlFRkHE5LITDfS1A9v0VknWVzOW5B64Jj6fttKb/AXsliWg+pfqfo2DihsdfNlZ0NQ/8u8FnSdBKvkoY9X19ow9bS6Mkz+gHjSHMxHk3LyKPFwJWkodL3zb5gXO8piHUzFRZVWOz1smE4HyAVE8fRMuTmbeD3pILiHbpTLSIiIiIiInnZatWjKT+0emtWP1frm5Tv5fh044TGJXGtjlE/rf5wUm++0dlTlwDn9pYC6ujJMzYn9WA8E9gut+lRUoHxstkXjHujiLb1ZCosqrDYa02Z2DCGdEL4GK27Nt9FKib+vjtXfRUREREREZG+o35a/UBSj8a2vRx3oOM5u0tepXzRscetXF0/rX4Y8EPgE9lTLwCfbJzQeHNxrYozevKMGuC9pLkYP0LLMPkVpIVpfg38ffYF4zS3LiosqrDYy0yZ2DAUOJFUUNw/t2ku8DvgN5Omjp1ZRNtERERERESkb1iHlasdeJ72BcdCVq6un1Y/DriYtBgXwC+AyY0TGvvE/OGjJ88YDnyUVGTcM7fpBVKPzUtmXzDu+QKa1mOosKjCYtXL5j07iPSLfgIwONvUBMwg9U68cdLUsb1uWXcRERERERGpLvXT6jeg/NDqHencytXlio4vdefK1fXT6jcEfgKclj31NHB244TG27rr76g2oyfPeBep7nAaae5fSIXgv5N6MV43+4JxPaq3aSWosKjCYtWaMrFhc1oWYtk+t+lJ0i/1pZOmjp1TRNtEREREREREumI1K1eXHp1Zubpc0fG1rqxcXT+t/iPAlKwtzcCPgfMaJzS+3cV/Uq80evKMgcDxpAVfxuY2zQMuA349+4JxjxTRtiKosKjCYlWZMrGhPzCedJfgKFpWbFoCXE3qnXiXFmIRERERERGR3iJbuXpzyvdy7MzK1eUKjk81Tmicl/s7NgV+Dnw4e+px4MzGCY33dOs/phcZPXnGtsDHgTNIK4uX3Efq8HTV7AvGLSygaRWjwqIKi1VhysSG3Ug9E08HRuY23UH6Zf3DpKljq25VLREREREREZF10cHK1aXvO7Ny9VPAM8DRwAjStGLfB77T0xaS6alGT55RC7yf1AnqWKBftmkpcA2pbnH77AvG9Z7CWkaFRRUWe6wpExuGASeTCor75ja9CkwDLpk0deysItomIiIiIiIi0tPlVq4uN6djuZWrHyL1UnywUm3sbUZPnrERqVPUWcAu2dNvApv3xjkYVVhUYbFHmTKxoQY4hFRMzC/rvgq4gVTlv3nS1LEVXQlLREREREREpDfJrVxdKja+BkxrnNCohU+7wejJMwx4D2kuxldnXzDuGwU3KYQKiyos9ghTJjZsCUwgzU2wbW7T46Ri4mWTpo6dW0TbRERERERERESkva7U11Y3EahIl02Z2DAAOI7UO/H9tMz7sBi4krQQy71aiEVEREREREREpLqpsCjdYsrEhj1IxcTTSBPDltxKKib+cdLUsVrGXkRERERERESkl1BhUdbalIkNGwAfJRUU98xtehn4LWkhlmcKaJqIiIiIiIiIiARTYVG6JFuIZSypmPghYEC2aSVwHal34t8mTR3bVEgDRURERERERESkIlRYlE6ZMrFha9IiLGcAW+c2NZIWYrl80tSxbxTQNBERERERERERKYAKi9KhKRMbBgLHk3onHk7LQiwLgctJvRP/rYVYRERERERERET6HhUWpZUpExsMeDepmHgqMDy3+RZSMfFPk6aOXVr51omIiIiIiIiISE+hwqIAMGViw4akQuKZwB65TS8AlwDTJk0d+1wRbRMRERERERERkZ5HhcU+bMrEhlrgfcBZwHFA/2zTcuBPpN6Jt0yaOra5mBaKiIiIiIiIiEhPpcJiHzRlYsO2tCzEskVu04OkhViunDR17LwCmiYiIiIiIiIiIlVChcU+YsrEhsHAh0i9Ew/NbZoPXAZcMmnq2AcLaJqIiIiIiIiIiFQhFRZ7sWwhln1I8yaeAgzNNjnwN1LvxD9Pmjp2WTEtFBERERERERGRaqXCYi80ZWLDRsBppILibrlNs0nzJk6bNHXsCwU0TUREREREREREegkVFnuJKRMb6oAjScXEY2n5v10G/JHUO/E2LcQiIiIiIiIiIiLdQYXFKjdlYsMOpIVYJgCjcpvuI/VOvGrS1LELCmiaiIiIiIiIiIj0YiosVqEpExuGACeQeicenNv0JnAp8JtJU8c2FtE2ERERERERERHpG1RYrCJTJjbsC3wCOBlYL3u6GbiJ1DvxhklTx64oqHkiIiIiIiIiItKHqLBYXc7OHgDP0LIQy8vFNUlERERERERERPoiFRary6+A/qSC4u2Tpo71gtsjIiIiIiIiIiJ9lLn3ntqUmQ0FFgLD3H1R0e0RERERERERERGpJl2pr9VUpkkiIiIiIiIiIiLSm6iwKCIiIiIiIiIiIl2mwqKIiIiIiIiIiIh0mQqLIiIiIiIiIiIi0mUqLIqIiIiIiIiIiEiXqbAoIiIiIiIiIiIiXabCooiIiIiIiIiIiHSZCosiIiIiIiIiIiLSZSosioiIiIiIiIiISJepsCgiIiIiIiIiIiJdpsKiiIiIiIiIiIiIdJkKiyIiIiIiIiIiItJlKiyKiIiIiIiIiIhIl6mwKCIiIiIiIiIiIl2mwqKIiIiIiIiIiIh0mQqLIiIiIiIiIiIi0mUqLIqIiIiIiIiIiEiXqbAoIiIiIiIiIiIiXabCooiIiIiIiIiIiHSZCosiIiIiIiIiIiLSZSosioiIiIiIiIiISJepsCgiIiIiIiIiIiJdpsKiiIiIiIiIiIiIdJkKiyIiIiIiIiIiItJlKiyKiIiIiIiIiIhIl9UV3YAg65tZ0W0QERERERERERGpNut3dsfeVlgs/cNfKrQVIiIiIiIiIiIi1W19YNHqdjB3r1Bb4lnqpjgKWFx0WwKtTyqcbkHv/ndWmnKNo2zjKNsYyjWOso2jbOMo2xjKNY6yjaNsYyjXOMo2Tl/Idn3gFV9D4bBX9VjM/rEvF92OSLkh3ovdfbVVY+k85RpH2cZRtjGUaxxlG0fZxlG2MZRrHGUbR9nGUK5xlG2cPpJtp/5dWrxFREREREREREREukyFRREREREREREREekyFRarz3Lgm9lX6T7KNY6yjaNsYyjXOMo2jrKNo2xjKNc4yjaOso2hXOMo2zjKNtOrFm8RERERERERERGRylCPRREREREREREREekyFRZFRERERERERESky1RYFBERERERERERkS5TYVFERERERERERES6TIVFERERERERERER6TIVFkVERERERERERLqJmY0ws7qi21EJKiyKrCMzs6LbINIVZlaT+17Hr1QFHbdSbXTMSjXSsSrVRsdsDDPrV3QbqpWZ1Wbfng982cw2KLA5FaHCoshayL+BubsX2RaRzmhzzDaX7p7p+JWeTMetVBsds1KNdF0r1UbHbJxcD7svm9nZZrZeoQ2qQu7elOU2EVgMLCm4SeH6RLfMvi67Y27u3lR0W3qL0huYmZ0CbAvMBu539yeLbFdvUrrTo+O2e7i7ZxdhXwBGA3PN7G53/3uxLes9dMx2Px23sXTMdj8ds/F0Xdv9dF0bS8ds99MxG8fdV2Xfngf8BriiwOZUs0HALcBr7r7SzGrcvbnoRkVRYbEXMjPLLmyHA03uvji3rZZ0Lu7woC69vgJNrTq5bDcB/h/wWWAVqffvi2Y22d2vVoZdl8t2Q9JxuyC3rY503HZ4QabMy8vlujnwfeA0YA4wElhkZue7+8/X9PoKNbeq6JiNo+M2ho7ZODpm4+i6No6ua2PomI2jY7YysnxvBR5x97d7e1GsO+WOvYOAjbKv12SjGGogjWgoso0RNBS6dyr9v14AvG5mvzSzIyD1SigdyGZWm+9GbmaDs310Eu5YKdsvAceTPjzsDxwNvAxcbGbvzvVYAFp1KZeOlbL9GTDPzGaY2Ucg3Tkrfdg1szprPW/V0GwfHbfllbI6l3SsfhXYG9gNaAB+bGbHQOthJWbWH5TrGuiYjaPjNoaO2Tg6ZuPoujaOrmtj6JiNo2M2UO69f0ugCdgeWgphlimoeVUhO/a2AH4PbAacaGafNbPB7t7c5ve/19TjTOet3svMXgSGAm9nX2cD04Er3f2hNvuOAM4B6tz925VtafUxsznAr4FveMscSmOAm4AngWPc/a1s3/7AMcAwd/9NUW2uFmb2NOl4fQvYGlgKXAtMdfc72+w7EvgasJ67n1PptlYTM3sN+CVwvqd5P2qBzYHrgAHAYe4+N9u3P6m3zRbu/q2Cmlw1dMzG0XEbQ8dsHB2zcXRdG0fXtTF0zMbRMRvHzAYA84BmYAjpGuD3wOx80Vu9QjuWXTtNIt1gPBAYDjxDOj7/6O63Fta4IL2mQiqtmdlupKHu1wIfAaYAi4BPALeZ2Z1m9gUz2zp7yUbA54Fh2et1bLRRujtjZgeR7uDcm72RWdbToxH4BnAIcELupaVhUbtkr1e2HTCzXYCBwM3AkcBngBuBo4DbzexlM7vAzHbIXjIM+Cjpgi2/ApfkmNn+wArg4VKPpOyO+Quki4WdgDNzL9kc+AowInu9jtkO6JiNo+M2ho7ZODpm4+i6tvvpujaWjtnup2O2Yow0zLyBlPP3SXMtft7MDrA0nYp61q6Gu7/h7t9092OA8cD3gLnAycC12e//98xsu0Ib2o3UJbj32oA0YejDWe+DO81sI+BQ4AhSl/FvAf/PzO4C5pPe0HQXpwO5k+coUlH+rTK7XUK6ePiimV0BrATqSd3If1uBZla7IaTz0mPuPguYZWaXAXuQ7vYcAXwO+IqZPQrMAjYB/i97vd7gyhtJKiSUCgPvzJPi7jeb2W+A/zCz/3X3hcDuwI6kY1lWT8dsHB23MXTMxtExG0fXtd1M17XhdMx2Mx2zleHuy4CLzOynwA7AScApwIWk4tjfzew24A53n1lcS6uDu/8L+JelVaIPBT4AvAeYDDxO6slY9VSt771mk4bi/A3eubh93d2vcfdPkuak+DJppaLdgNOBRnd/PLvr0+smFO1Gz5OGMy2DVquS1Wbf/4zUK2FC9vMHgWfd/VFlu0bPAt8m3d0tHbeL3P12d78AOBU4kTRnTRPwIdKkwjpuV282aThDqwmDc3dsf0m6Q/7Z7Odj0THbWTpm48xGx20EHbNxZqNjNspsdF0bRde1MWajYzaKjtkK8GRWNjR/V9LNxz8ABwMXk+a1lEypR232/cFmdo6ZfcvMJpnZKHdf4u7T3f3TwHGkEQzXFNbgbqY5Fnu5/N3y7GBvdzI1s4nAL4AvuPtFZlbnLcvMSxlmNhqYn/U4aLutP/AnUi+Es4DLSPNWfU/Zdo61WXms7c/Zc6cD04AvuvtPlO3qZR9sB3k230yZ7b8hfcg9g3Q+0DHbBTpmY+i4jaNjNoaO2Vi6ro2h69o4OmZj6JjtXlnBtVSg3Y40nHwxaQ7mWcBTue3rkaZPucPd55S7fujLzOw7pJsGzcBCYGPSEP3/IVvB3N1XFtfCGOqx2EuV7o7nf8mzuw6t7p5nb3CbZLtcnn1tqmBTq5K7zybNk1Ju2wrSXBTbkU4iW9AyhEzZrkbpTk/bN6c2F2Slr6X5vy7LvirbDpTe8Dv6oJv5AWli8a+T5qLRMdsJOmbj6LiNoWM2jo7ZOLqujaXr2u6nYzaWjtnulSsafgr4B/BT0nv/n0m96wbk9l3i7n9w9znZz32+qGjZ/NNm9kHS3NW/AdYDPkmaQuZ+YIWn+Zc/ZWbbF9TUMCos9lLlPiBYbsL13AlgKGlYzo3u/kauC7l0UttsAdz9DtIcH4cDDe7+evaBQ9muxpryyW0fTLrjc72O2zVb0xt+dmw+CfyINOfHrTpmO0fHbBwdtzF0zMbRMRtH17WVo+va7qFjtnJ0zK6bXJH7XcB3gAdI84AenO3yBul6ADM7PuuxKK2VjquJwF3A97Ii4j6kKWgecXe3tFjTl0nDynsVLd7SB5jZSHd/g/J3aBaTVilblv2sk20XlMs215X8p8A2wE+yTTWkLtGyBmY2GNjQ3V8st93d3zKzi/JPVaZl1a2jXHMXt1NJd3enZT/rmO0kHbNxdNzG0DEbR8dsLF3XxtF1bQwds3F0zHaL0tyAnwZeBP6fu8/Mei++Cdzu7qssrQZ9JWnBoR+rSNvC0+rkA0i9j2/Nvf9/nPRe/0b284akhZo2qHwrY2mOxV6oNBTHzD5AWsXpANJJ9AbSBKH36kSwdrqarZlt6O5vFtPa6pLdoW0ysxNIk9keSFrtrYHUDf9fwBzvhXNSRFKucZRtHGUbQ7nGUbZxdF0bR9e1MXTMxtExG8fMbifNp/gFd19kZvcBM4Fz3H2pme0I/Aq4092/livgCu/M7XkFsIW772dmY4G/Age7+13ZPh8ELgUOc/f7C2tsABUWeykzGwg8DfQH/gnUAnsCW5KWNb8CuNrde8Xy5pWkbONk2b4ILCFNulxL6oa/B/Ay6aLhWuBR4PU1DTuTpAu5Pga8pouEztMxG0fHbQwds3F0zMbRtVccZRtDucZRtt0vGw79K2BXd3+PmW1Oej87HrghK+YeBvwe+IS7X2d9fNEWM6sDmtoUsj9OWqTlY6TVyLcHxmejQEaQFml6j7tvU0CTQ2kodC+T+wU/BRgEnOTuf88O5M1I4/zHA18CzjOzJ4Ej3H1uYY2uEmuR7SxStq8V1ugqkcv2RNIQkNPd/Y6sS/l6QD3p5Hwc8AlgLrA/6Q1POrAWub4O7IdyXSMds3F03MbQMRtHx2wcXdfG0XVtDB2zcXTMdq98YTArHN4JnGFmE4AxwGzglmzbENJK0AOA60uvKablPYO3WV3czAz4A3Ao6UYiwAxgq6xQ+yXSjcZvV7CZFaPCYi+T+wXfGGgk3RXH3ecB88zscdKBvh1wGLCP3sg6Zy2z1RtZJ+SyHQA8BTyfPb8cWA7camZ3AD8kDXk4tKN5waSFco2jbOMo2xjKNY6yjaPr2ji6ro2hYzaOjtnuUZq6I18YzJ77tZntRVrAZSRwB7CXmT0HnEu6efa/7u6lP6OQf0APYGa/B14FvgqszPJ0YLGZfZp0fI4nLYLzWPayl4CvAVcV0ORwKiz2IqV5DiytinUDcCTQL9uW76r7JvCmmf2bdLcnP8mtlKFs4+SyHQA8mT09uO1+2V2hl4FrzOza/Gsr19rqoVzjKNs4yjaGco2jbOPo2iuOso2hXOMo2271eTPbDPixu78MkCsSXgC8DZxFWlF7L9LK5TWknnY/z/brs3lmvTc3IeXzdXdfZmYnAn9y95Xu/hbwP2Z2E7ALKauVwGPu/lRhDQ9WU3QDpFuVVnT6GmlupIOAb5jZUHdflZ2MLTshkz23OPu+z54cOknZdrOsu3je54FbSUPvfmFmu1ma76Od0pufsm1PucZRtnGUbQzlGkfZVoSuveIo2xjKNY6y7QbZ+9LHgC+Q5qbEzD5oZvUA7v6Cu3+JtHrxycDFwKdI8wL+l7u/nu3Xl4dBDwc+CbzX3ZeY2R6kXoiLzex6MzsawN0fdfffu/s17n5dby4qghZv6ZUsrUj4EWBn0rw+zwGXA5e5+6zcfn16wtW1oWzjmNlBwLGkO2MHAgtoWeHtPnefX1zrqpdyjaNs4yjbGMo1jrKNo2uvOMo2hnKNo2zXjZkNc/eFZraXuz9gZqNIGT4K3A3cCdzt7s+WeW2fHv5cYmYvAP9JOuaasxEL40jF7qOBnUjXANcAv3D3h4tqayWpsFjlzGwnYCDwaP4X3cw2JnW93Ys0tv9AYAhwL3AJqauu5vNYDWUbx8z2AUYA/yDNS+HZ80OBLUj5Hgm8n7TC25Okk/NNwD16UytPucZRtnGUbQzlGkfZxtG1VxxlG0O5xlG23c/M/gXc5O7fyn6uAyaQFhd7D2nY7hPAXaQ5Fu929zcLam6PY2kOyruBY9z9puy5E4BrSUPztwf2Bt4HjAU2BWYBfyTNs7ywt/agVWGxypnZo8Ao4CB3f9zMRniawDa/z5akOzoHkC5y98o2DfU0B4CUoWzjWFp1bG/gQHe/39JKWa/kT7SWVnjbmpTpONIKW8OAYaWhDdKaco2jbOMo2xjKNY6yjaNrrzjKNoZyjaNsu5eZbUqa6/c04A/uvtLMDnL3O7LtWwMnAR8CdgQWAw8CDwDXuXtjMS3vOczsY8CPgM+6+5VmdjJwEfC+fD5mNozUq3Y/0lyM40nFyBkFNLsiVFiscmZ2KvAhd/9w9vMNwD3A7cDM/N0aM+sHbEM6wIe6+8/VpbljyjaOmY0DjnL3z2Y//5O0kuYttOl+n82VshHp5LyRu1+jbMtTrnGUbRxlG0O5xlG2cXTtFUfZxlCucZRt9zKzD5B6dJ7j7tdlve9vAD5I6k2fvzm2F3AqqefdbsBp7n6FWd9eCCcrZN8DvA58izQkei5wqru/0cFrNgV2dvdbK9XOIqiw2Itkdxn+BWwGzAduA/4G3AfMcvdFuX11ou0CZRvH0tweV5MuBvqRuovfBfyT9Cb3em7fPv1m1hXKNY6yjaNsYyjXOMo2jq694ijbGMo1jrJdd2a2PfAXYDAwkVQ43IG0CMlbZjaQtNbN8javGwf8w93f1vsYmNkRwDdIvWSdVGj8GelYnOPubxfYvMKosNhLWG6CWjMbDZxDWvFpM+AF4K+kuYAeBp529xUFNbXqKNs4+Tf+bCjZicCHgTHAW0AjaX6PO4H7++qJuquUaxxlG0fZxlCucZRtHF17xVG2MZRrHGXbfczs/cD5wL6AATOB/3T369rsN4BUZFyR/dznC4ptmdkvgTNIvRc3I91YnAHcDDwGzHX3lYU1sNLcXY8qfADvBR4H/gMYtZr99gemAUuAlcBLwIlFt78nP5RtaLbvA5YD3wVGr2a/PYDvk1YomwvMAz5VdPt76kO5KttqfChb5VptD2Ubmq2uvZRtVT2Uq7KtxgdQB2wA/ApYAbwKNANzgF8Ae7XZv5asM1pffpCKsBu1ee6nwH+TFhI6HrgKeCPL9S5gMmlhoQ2Kbn8lHjVItdqS1PX2K8C/zex6MzvFzAbld3L3u9x9gruvR7qTPod00sXM9P9fnrKNY6SeG2cDz5rZQ2Y2yczWy+/k7g+7+9fcfTfgFKCBtNKbsi1PucZRtnGUbQzlGkfZxtG1VxxlG0O5xlG2Qdx9lbvPB5YC9wOfJOX8EHAycJ+ZzTSz/zSzrd29ybMqWh93MnCzmR2be+5LwHnu/jhwHena4CDgc6RRC18jzQd6VGWbWgwNha5iZrYN6U7NIaTl4bcEFpEuYK9w91sKbF5VU7ZxzGwk6c7OgcCRpJz7keZJmerufyqweVVLucZRtnGUbQzlGkfZxtG1VxxlG0O5xlG23cfMDib1tD/PcwuImNkQz1bOzt7b9iHlfSjpfW490jDp71W6zT2NmX0SmAqc6e6/NbMPA0OAu4HZnht+b2nRtvWB7UkL4/zM3V+rfKsrS4XFXsDMDKgnVcjfC+xJWoHwJdJKT1e6lodfK8o2lqWVtfYgZXskKeu3gD8Cv3D3ewtsXtVSrnGUbRxlG0O5xlG2MXTtFUfZxlCucZTtujOzE4BLge+4+3eyQmONu9/Wwf5bk4q5xwE/dPeH8vNc9mWluSbN7EnSwjcPk+b4vB14xN1faLN/nbuvKqCpFafCYhXLTrSW/yU3s8GkE+57gYNJy8MPJk0gOh34H50U1kzZxsmyJd+t3sz6AdsCewFjgSNIdyZfJH1A+7JrdbfVUq5xlG0cZRtDucZRtnF07RVH2cZQrnGUbfextNrzFsArnlZ2vg44lrTA2FXANe7+dJnXacGWjJn1c/eV+UzM7Djg06T3/JWkeRVvJq1e/ri7v15YgwugwmIvkc0j4W0udEeS7jYcTBrb/6a7H15QE6uWso1T7g0rm6tqJ2Bv4EPAQHc/RG9unadc4yjbOMo2hnKNo2zj6NorjrKNoVzjKNvuZWZ7AO8GjgEOIw3bvYPUq/GGvlYQW1fZ+/4ZpDkWdwfmk3ow3kyaIqVPvPersNgLleuqbGY7kP6/Z5lZre6crx1lG6eDD2ibkrrqv6Js145yjaNs4yjbGMo1jrKNo2uvOMo2hnKNo2y7R9YjdASwHWmY+bHAfqQVjf9Cmsfy+uJa2HOZ2Sh3fyX7vtXxZmbbAmcBXwT+7u7HFNTMilNhsRfT3fE4ylZERESkcnTtFUfZxlCucZTt2jGzrYBVpcJY9lw/YDNgR9LiLacC8919r2Ja2fOUCohm9l7g18Dt7n5mtq0072J/b72IyzB3X1hUmytNhcVeztIy8c8X3Y7eSNnGMbPdgbnuPqfotvQmyjWOso2jbGMo1zjKNo6uveIo2xjKNY6y7ZxSL08z2w64gDTX4n90sO8Q0nyMK9z9OfUATXKFxRuAQcB/ufud2ba9SMPxa4CbvY8u3FZTdANk3ZlZTdadue3zGwC3m1mzme1SQNOqnrKNk82XUu75YcA1wCtm9q6KNqoXUK5xlG0cZRtDucZRtnF07RVH2cZQrnGUbbcovV99nrTgzc2lDWa2uZn9h5lNMrMR7v6Wuz/p7s8BqKiYZEXFYcDhpEXZ7gEws8OAa4H/BM4DrshuLvY5KixWqfwJ1t2bO+gK3h+4G5jl7o9XrHFVTtnGaZttB7vVAdeT5qV4qBLtqnbKNY6yjaNsYyjXOMo2jq694ijbGMo1jrLtXu6+Kvv2FOBK4J8AZrYraVXoHwE/AxrN7OBCGtmD5Y7HI4HFwFPuvsrMRgHnA8uBfYC9gFGk4mOfo6HQVczMNid1ux0C/M3dZ3aw30h3f8PKTHYr5SnbGNmJeSfgZNKHrzuAx4E5+Tkpsn2HufvC0rwVlW9t9VCucZRtHGUbQ7nGUbaxdO0VR9nGUK5xlG33KL0HmdlBwAzgdHf/s5kNBK4ADgXOBJqA3wE/d/dvFNbgHszMDgX+DJwDXA1cAowFvuTuV5vZJtnzr7r7KUW1sygqLFYZaxnfPx74KWkOhCZgAPAM6WC+0t0fK7CZVUnZxjGzuuzOzoeAqcD6pDs+GwBvAjeSupU/AMxr+wFNylOucZRtHGUbQ7nGUbZxdO0VR9nGUK5xlG0cMzsE+APwHXe/yMy+AnwJ+J67/8TM+pN6M/b3PrSScVeY2Qjgr8AuwCvAtsBngGnu/paZ7UaaCuUKd/92cS0thgqLVcZaJl+9j3S3/AekA3s08H7gCGAkqWv4NaST72sFNbeqKNs4uWwfAJYC3wWeInUX/wBwPLA98CRwE3C5uz9QVHurhXKNo2zjKNsYyjWOso2ja684yjaGco2jbONkhcNrgb2BOcDuwIXAD7Ien9sClwFPuPuZpkVbyjKzkcAnSe/5D7v7RdnzBnwR+Bawi/fFRYXcXY8qewAbk06yZ7V5fgNgT2ASMB1oBs4vur3V9FC2odmOAGYBn2zzfC2wKTAO+GWW7beybVZ0u3v6Q7kq22p8KFvlWm0PZRuara69lG1VPZSrsq3GB7Av8BvgBuCbbbZ9AlgCHJz9XFN0e3vSAxgMDM2+ryuz/TjgDeB3Rbe1qEcdUo0WALeQ7uS8023c3ecD883sIVJX512Bf2f7aN6JzlmAsu1WufmllpNW0Bqef97T3bA5wAwz+xvp7mTp7qMB6lZdhnKNo2zjKNsYyjWOsq2IBejaK8oClG2EBSjXKAtQtt2qNJ2Hu98L3Gtm67n7ktz2/YBPA3e7++2w2gXK+oxcD9odSKs+30eag3JVmWNuGGmqlMuKaGtPoMJidfoGsDXQ38x+7+7zs+63NUBzdpC/RsuFrU4Onadsu0Hugxilr6QPW9sBo8zsT8DTbV/naV6qZ3I/K9sc5RpH2cZRtjGUaxxlW3G69oqjbGMo1zjKthuU3sfMbAPge2a2DPhyVmBc0mb3vYCXSO9z7xRzK9zknqi0GvQXgQNIU52UjDCzPUjH6l+BS4HB7v5WZZvYc2iOxR7O0gpOS4EHs4r51sATwEpSl9zLgZ+4+4O519SQ/m91QlgNZRvHzMaRhofd5O4rzGwz4C7ShPcbAH8j3dW53d3fKK6l1UW5xlG2cZRtDOUaR9nG0bVXHGUbQ7nGUbZxrGXRscmkVZ9/6u4/z7YNBHYD+pPmVJxnZgOAFbmbaZIxs0XA94GL3P1tS/NR/hY4iLS40I3AOe4+p7hWFq+m6AbIGl1HmhR8IICniUDfA/y/bNt44AEze9DMvmhmo9y9WSfbTrkOZRvlEmB/oB+Au79Kmiz448BPgG1IK2jeY2YXmtkBZrZ+QW2tJso1jrKNo2xjKNc4yjbOdejaK8p1KNsI16Fco1yHsg3h7quybz8B/J204jNmNgqYAtwL3Ab8zsy2dPflKiq2yArYmNlRwDLgnqyoOIy0gFs98BHgXOAY0nHct3kPmOhRj/IP0lLmi4DxueemAptl328KHA6cB9xBmv9nKWkOoEOLbn9Pfijb0Gx3BuYDH8w9dwOwQ/b9+qR5UT5GepObSzphPwWcUHT7e+pDuSrbanwoW+VabQ9lG5qtrr2UbVU9lKuyrcYHLaNSd88y/nBu24+At0mrF59D6nH31aLb3FMfwIeBecBp2c9fIs2r/OXcPv8Cflt0W4t+qMdizzaSdLF6GICZfYS0vPlWAO4+x91vAb4DnAacRLoDMZqWycX1f1yeso2zHukN60QzG5hlO460yhvuvtjdH3P335FWdhtHOkkvIv2fKNvylGscZRtH2cZQrnGUbRxde8VRtjGUaxxlG8SzahewIbCCbK5AMzsROAOY6u7nAVcAtwL7mZnW3iivAVgInJvNr/zfpNx+C2BmO5LWLVlYVAN7Cs2x2MOZ2XTgKNJd8X2AN4HT3f3ZDvYfCGzj7jMr18rqpGzjmNkvgAmk1dq2IPXo+Li7P97B/nXASO/jc1OsiXKNo2zjKNsYyjWOso2ja684yjaGco2jbGOZ2UhSb7r+pJ73HyUVyia7+zPZ/MG/At5y9xNNq2uXZWaHAN8EtgV+D3zd3Zdn2yaQetq+193vK66VxVNhsYcys+GkOwx1wGdIXZU3J3XF/TNp4vBHgOfcfVlBzaxKyjaOmW0CNANvAaeQenHsQJqE+Q7Sqln/Ah5x98VFtbPaKNc4yjaOso2hXOMo2zi69oqjbGMo1zjKtnLMbB/g26T3speAk0o3wczsA6Ted+e4+9Wm1aBbMUsra+d+7gfUufvS7Of3Av8LzHX3wwpqZo+hwmIPZWY/AWaRuio3m9kk0oThfyNNKD4UaCQte/5P4FHgJd1lWDNlG8fMfg28AHzP3VdmXe6vAK4C3kcaSjaX1O2+gbTK5hPuvrKYFlcH5RpH2cZRtjGUaxxlG0fXXnGUbQzlGkfZxssXxcxsNGmOyjm55zYHrgGGuvtuhTW0SpjZgFIvxexnAz4NnAB8y90bCmtcD6F5CXogS8u9f470/zOg9DRwOmnVoa1J8yPMBb4I/IG0guH/M7N9K93eaqJs42TZfpw0jKFf9vQq4Bh3P83dNwXGAv8AjiN1G78GuNjMjimgyVVBucZRtnGUbQzlGkfZxtG1VxxlG0O5xlG2leHuXpo30d1nu/urAGbWP9vlA6Ri43ey52sLaWgPYy2rQW9kZp8ys9uzIftfNLP3m9nmZlbnyRTgaNJ1QZ+nwmLPdDDwBvCyuy81sy2An5ImBXV3X+Tul7r7+4GdSKtlrU9a3el98E4VXdpTtnH2BV4DFrr729m8HX8AarKLCNz9Vnc/BRgMnAq8SLp42BeUbQeUaxxlG0fZxlCucZRtHF17xVG2MZRrHGUbJFcUG2xmxwL/bWZ/NrPzzGyrrBi2Itt9OmkY+rXZz+oNCuR6xf6c1IvWSTcbvwtcBlwKfMbM9jezjd19aX64dF+modA9kJltA/wFmA98hbQS1uGkSUFfyU6mNUBzm3H/+wJPu/s80+SrZSnbOGa2KWli4I1IFwGHkS4eDnD3udmbXenO2Yrc60YCK919obJtT7nGUbZxlG0M5RpH2cbRtVccZRtDucZRtnHM0vBnM/sB8FnSfMFPAAdmuzxEmhPwcnd/u5hW9lyl48rS3Il/JS3Y8kPSdcELpKLibsDewExgDml+yqcLanKPosJiD2VmXwS+BgwnDcV5iFQpv8PdF+T2K3vylY4p2ziW5qP6KmmC4P7As8CPgRnu/kpuvxrS3Z8md19VeiMsos3VQLnGUbZxlG0M5RpH2cbRtVccZRtDucZRtt0vV1QcDTwJ/MbdP2VmWwIPA3cDW5AKYyuBx4DT3P3xotrc01i2eI2l+ZZ3BM7wtHr2l0jD8vcGBgK/A7YhDdc/wLPFXPo6FRZ7MEvzIvwCODt7aglpVcJbsq+PuvtbBTWvqinbWGb2Q+BcoLRq5rPAncDNpIuG+bl99YGsk5RrHGUbR9nGUK5xlG0MXXvFUbYxlGscZdu9ckWxb5Cm6jjJ3R+2NCT6KmA/0rDe/yEVGGuAo919tt7HWjOzW0g9FD/n7ovN7AHSAkKT3H2JmZ1JmlvxdNeq5e+oK7oB0l7p7kx2F/wx0gn2h6RJVk8DjgJeBf5hZg2kOxBPupaHXyNlGyfL1rKhCbNIXci/T3ojOwGYAJwMPGZmt5FWfrvbtZrmainXOMo2jrKNoVzjKNs4uvaKo2xjKNc4yjZGLp93A3cBpV72Z5IKtbPdfZGZ/R/wPVLhcXb2WhUVM2a2HqmIOCArKg4HRgG/dfcl2W6LgL1IvRofKaShPZB6LPZg2Yl3B9L/05O5548AJpJWzqojdcP9prv/byENrULKNk6W7TBgoLvPyT2/P+lD2QeAjUnDyH7g7t8spKFVRrnGUbZxlG0M5RpH2cbRtVccZRtDucZRtusuy/CdwqCZDSL1At3N3ffJnnuO1GPxW54WyzkUuAg4293vK6LdPVmW6b5Af3e/3dJCbteTejCeCGxIGtFwtruPLK6lPY8Ki1XC0nw+Ne6+KvdcP9JF7jeAr7r7n0yT2XaZso2TZWv5u4zZ0IejgUnAT9z9plL3/aLaWW2UaxxlG0fZxlCucZRtHF17xVG2MZRrHGW7brJiWG3WC3RT4N3u/hcz2wi4Gljo7sdn+34J+A6wibsvLK7VxctuGL4HmAG82NGwZjO7GPgEqUC7MbA/MMXdv1KptlYDFRarkJnVQqsuz9JNlG2cch/QZN0p1zjKNo6yjaFc4yjbOLr2iqNsYyjXOMq2c8xse+AjwO88t7hYbntpMZfzgfOAG4ClpKHmf3X3E/v6TTEz+z5pwba5QAPwB+Be4HV3X95m36+QeixuClxIyv3Nyra4Z1NhUURERERERESkCpjZ54EfAS8D/yb1TPyTt1mh2MxKQ3ePBjYgFRh/7O7PqrBoQ4GdSFOcfBjYlTTk+XrgOqARWJSfS9nM6vI9a6WFCos9TOnuQvZ9h929s4lEDwWedvdHK9fC6qVsi2dmI0l3ex51938W3Z7eQrnGUbZxlG3X5N/D1rCfcu0iZVs8XXvFUbZd09nhtsq165Rt9zGzrUgZHUBaZGxL0qIiDcDl7t6Q27cW2I5UJJvT/k/r27J8NgDeRSowjiMt2PIIqRfjX0iLui3ry4XYNVFhsQfp6MK2XJdwMzsFuBy4vjRngnRM2fYMZnYycAVpJc0Dim5Pb6Fc4yjbOMq26zpTAFOua0fZFkvXXnGUbQzlGkfZdl42v2I98F7gIGBPYCPgJVLvxKvd/eHiWtiz5YaMDwaWZt9vRSrWngC8DxhIWln7GuA2zy02JC3qim6AtLKZmb0XWA9YH3gK+Ht+ItHcnZ6HgN8B92TPq1vu6inbIFlx1js5mfLfgG+Supkr29VQrnHMbAPSBcMi4I01XCAo2y5QtjHMbFfSvEjNZna3u9+VPd+qJz7gKNcuUbbdK/chbStgM2CWu89f0/7o2muNlG2MXK5HAGOB77v7ojXtj3JdI2UbJysoWvY54RHgETO7BHg3qch4MHA6cI6ZzST1vPuDu79UVJt7otwNxf8B9jOz8e7+AvCCmd0AbAUcTurJOBW4iTR0WtpQj8WClYpZZnY68DVSN+V+pMlVVwIrgFuAX7r7P9q8th/Q1MnCQ5+jbOPkLhRavdF3sRgmbSjXOLnzwUHA+aQLXEgFgovc/ceFNa7KKdsYuVxPJRWzRgOrgAXAx939L9l+67n7ksIaWoWUbZxctjcCe5BW22wAHgBedve32+6b+1nXXquhbGPkcv0nMI90DpifbetH+uwwgpTfq21eq1xXQ9lWhqWVoJvc/fXccxuRVjw+JPu6JzDT3fcpppU9j2VzTJrZwaTC68Xufl6Z/WqAWmBv0nDoByvc1KqgwmIPYGni0FmkiVd/lH3dk3Tw7kM6GawH/BX4obvfV1BTq46yjWNm65PukN0IXOnud7TZXgs053t86OJgzZRrHDNbD7gdGAT8H/AKcAxwMnCuCmBrT9nGyM4H/ya9j30TeJvUa64BuIjUG2FbYDHwR+DP3mYlQylP2cYxswHAq8Bw0nC8LYBnSIWwm4DH3P1FM7sIWAh823OT40vHlG0MMxsGzAfOAX6TFRt2Jy168T5gOfAc8HfStdnsotpabZRtjFxnhI2AC4DBwGnkPiPk9t0WOAJ41d3/rB6gSa6weAXp/f4kd38+l22pMD6UdKz+WbmthrvrUdADqMm+for0Iay+zD6DSb0/fknqaXcfMCb/ej2UbUHZngU0A28CS4AHSb2Vdm6zf132dS/gP4Eti/439MSHcq1Itp8lrZ73vuznWtKHsutJxYP9s+dLN91GAR8FNi7639BTH8o2PNf/yN7D9svl+t0s03tJ8/3cCywD5gLH5nPWQ9kWkG/pd/wQ0oqaXyOtRnol8AZpxMg9wLeAt4BfAUOKbnc1PJRtSKal88G5wGvAntnPo4HHsxyvI90we5Z0fXYjsHX+/0QPZVtAvqXPAeeRbi6c2CZ3U4adzvJ+4FJgQJvnS+fccdk59vii29qTHzVIYbyll9FIoIk0BAczqzOz2qxa/ra7N7j7J0lFsA1IhbD866UNZRsnl81+pAuF84FfkC4IPg/cZWb/MLNPmdkm3nJn5zhgMtn/hbSmXEOV7tyOI/WqewjSok2e5pqZROrZ8flsP8vmrhkH/JTUk0nKU7YxSrkeB9xGmhcYTwuNrUf6ff+Bu5/g7vsC+5IKuxeb2QDProSlLGUbyD318iBNdH818GnShPinAPtnP88DvgL0B3YBPmZmexTU5KqhbEOdDVzn7v/Ofv5P0hDdj7r7B939E+6+LanDwlHAd6DV/GzSMWUbIPc54OPAdFKPZWh5jyv1utvPzD5uZoMq3sgqkA25f4HUCWl57nnL7baMNIXavAo3r6qosNgz/A3YHDg5u2hdlX0oc0tqsy7Ld5EKX7uY2X7FNrlqKNsA2ZvTIKDW3X/m7l8hfUj7DKmH0mbAD4GHzexKM/sUqZDwb3dfnA3nlTaUa4zs930oMID0IeyN0jYz65cVwH4IjDOzw7Mi78bAscBT7r5E2ZanbGNkuY4kFbqedfc3c5snku6s3wBgZv3d/RHSasUDSXOvSQeUbTx3b86utb5Dug67zMwOdPengN8CHyT1rHuJdO6YAny5oOZWFWXbvTwNc9wa2AnYw8wmWFoddhxpSoSbIb2fZZ8XLgb+BOxrZpsX1vAqoGzjmdkOwDDgJc8WxSkVZHMdFvYmDZEeVUgjezhPU0XcBexuZl81s+HZ855dL6xPOmYHuPttBTa1x9Oq0D3DvaQ3/vOBoWZ2KekDl2cnh6Y2+xppGG+rVQulLGUb5wFSt/DSam0vAZeRLnLHkOaiOBw4ABgPDCGtqCWrp1xjGGlxhm2gZW5Kb5l76krSXfWvkxZ12hI4LHtOVk/ZxuhHGu64EN65e74haejYH919BUDpKzCHdEe9X2l/vYd1SNkGy2V0NnA5cL6ZfSi7CbYZaZ7rb5De33YnzRv4zpxXRbW7GijbbrcR8E9SR4SLgB+Qenze7+7L4J3iQ8l9wIGkUVEvV7apVUfZxlpOmr9yq3Ibsxu3A0nF3TkVbFe1+TFpiolvkwqMNwJPk86dnwPOIBvVKB3T4i09hJltRZp49WTSgXwF8GdS19zl2cVCf+BC4HR3H15UW6uNso1jZsPdfUH2fWkuj+Y2+xxOyn9nd1+/8q2sPso1hqXJqzd297s72P4J4GLSuWJz4HvurqEjnaBs45jZEHd/q1wxq/ScmQ0kTYnwH+6+QTEtrT7KNpa1THw/BriWdGP3WDP7OPAT4L3u/nChjaxSyrb7mdm7gA+QbuBuBHze3W/Jnx+ykSVfAya6+8aFNbbKKNs4lhYeGQ98xN3/mj1Xev/aAfhf0oIu79fNhfZyWW1FOv5OI3XaWEjqDQppAdj/dve5BTWzKqiw2MOY2VjSUJz3k4ZENpImuB0AvJs0D+BP3f3bOjl0jbKtHEtzANW4+yoz25606vad7n66aSWytaZc193qfrezITq3ke6mLyUNLfmIsu0cZdu9rBMrvueKC7sDvwYed/cJeg9bPWVbeWZ2EKlH6BXAwcDzwBmlm2iy9iS35ygAABS+SURBVJTtumn7O21pzrUDgQfdfWH+Bq+Z7QJMA57Irr10PlgNZRvPzA4grQq/jPRedTWwiPS59nzSKKdT3H26Ml0zM9uQVAA/iHQuvdvd7yi2VdVBhcUeIn+Ra2YjgJ1JcyIcTBrSsIxUBPsVcIu7L9dQnM5RtsUys6OB3wPj3f02val1D+Uaw8w+SOr9AXCAu9+tbLuHso1jZrcA2wMfcvcHOlM4k85Rtt3HzI4krQA7ijS07HJda3UPZbvuspu3q13A0cymkz47jHf3+3Q+6BxlGyvrufxN0irxg0iLkI0AlgBfd/efFdc66StUWOwhyp082xTERnpuUnzpPGUbpzMFWDPbFNjT3W+sULOqnnKNs6ZszWwYaQL8Hdx9t4o1rBdQtjE6keu2pAVy/uXuF1auZdVP2cZpm23WM6mOVPTaEbjY3Z8uqHlVTdnG6MT5YEfSMPMH3P0bFWtYL6Bs4+R6128GvIs0n+LGwFvAdNeUCFIhKiz2cG3mntCQsW6kbEWkHEsrwg1399nqUde9lG33y3qC1JHmUFqlHvfdR9nG0XVXHGUbw8wGkOZeW+bub+t80H2UbfdZXXbKVSKpsFig3B2GI4EF7n5P0W3qLZRtHGUbQ7nGUbZxlG0M5RpH2cZZU7b5+dSKaWH1UrYxdD6Io2wrq02HGQ0jl4qrKboBfVnuF/4i4AQzG1puPzM7xsy+YmajKte66lYm22Hl9lO2XafjNoZyjdPFbL9qZptXrnXVTdnGWItcdT7oJGUbZ03ZetKs97GuW9N1rbJdO3oPi9PFz2LKdh3leyKWKyqa2b5mtl9lWyV9SV3RDejrsjklRpLmlFhUZvtA4L+APYEXgKsq28Lq1SbbhWW2K9u1pOM2hnKN08Vsn0fZdpqyjaFc4yjbOHofi6Pr2hg6H8Tp4jGrbAPkejJeCDxiZveqN6NEUI/FgljL6lizgD8CQ7Pn++X3c/dlwGnAj4Absn2soo2tMso2jrKNoVzjKNs4yjaGco2jbOMo2zjKNoZyjaNsew53dzPbDjgQ+JuKihJFcywWzMzuAbYFHgBOdfc3s+drs12aNcnq2lG2cZRtDOUaR9nGUbYxlGscZRtH2cZRtjGUaxxlW6xSb0UzOx/4GLBP6f9ApLupx2KBzGxnYANgEfB+4B9m9gkzG+TuTdnDzWyg7t50jbKNo2xjKNc4yjaOso2hXOMo2zjKNo6yjaFc4yjb7tfVnHJF29OB64H53d4okYx6LBbMzLYH9gPeCxwKbA8sAW4CfuPuNxXXuuqmbOMo2xjKNY6yjaNsYyjXOMo2jrKNo2xjKNc4yrb7mdkAd1+efV/r7k1r2H8/4E7gve5+ZyXaKH2TCos9RDYXxR7AAcAh2ddNAANOd/crC2xeVVO2cZRtDOUaR9nGUbYxlGscZRtH2cZRtjGUaxxlu/Zyw5kHkYqzpwO7A43AzcAf3X1xtm8t2fDy3Ot+CexNKiwuKeZfIX2BCosFM7MNgA3c/dncc4NJq2MdDBwPTHT3f5tZjWvC1U5TtnGUbQzlGkfZxlG2MZRrHGUbR9nGUbYxlGscZbvuSr0Szew84HOk4cx3AacCdwMfdvc5Hby2P/AK8D/AD3JDo0W6nQqLFZa7e7At8G3SibWONN/lZODafJdmMxvh7vOKaW11UbZxlG0M5RpH2cZRtjGUaxxlG0fZxlG2MZRrHGUbw8zWB+YAvwW+AiwHngWmAd9z96VmNgV4Hfiuu6/MXrcPaW7F97v7o0W0XfoOLd5SQbmT7RakX/KjgAbgDmAbYFS2m5lZvZnV6WTbOco2jrKNoVzjKNs4yjaGco2jbOMo2zjKNoZyjaNsu5+lIeQAJwELgN+6+1vAe0h5znD3pdk+6wH7A0NKr3f3+4Bdgccr1Wbpu1RYrKza7OtnSb/0p7n7JNLJdzHQ4O6rgIHAD4EDC2lldVK2cZRtDOUaR9nGUbYxlGscZRtH2cZRtjGUaxxl281yQ8M3Ad6mZVXnTwH3AU8CmNmGpLpOnbsvKL0+K/bO1xBzqQQVFisoO5kCHA38nTQvAsCngduB57KfdyStmrVnRRtYxZRtHGUbQ7nGUbZxlG0M5RpH2cZRtnGUbQzlGkfZhroN2A4Ynv18DHAl8Fb28yjS6tv/gncWccFdc95J5aiwWGFmNhSYS7qjMD+7w3AocBXpTgSkrsx1wGvZa/T/1AnKNo6yjaFc4yjbOMo2hnKNo2zjKNs4yjaGco2jbLtfViR8ALgJ+I2ZXURaTfs2d1+R7fZxYFPgkuxn9VCUitMvcoW5+yLgCeBIMxsCfJQ0Z8Jd7t5sZgNIS8JvCtyQvUYnh05QtnGUbQzlGkfZxlG2MZRrHGUbR9nGUbYxlGscZRvieGAkaTEcIw01HwB8wsy+b2Y3AxOBX7j7s6W5LotrrvRVKiwW41ekOzV/BD4PTAdezLaNBSYB0919cakrs3Saso2jbGMo1zjKNo6yjaFc4yjbOMo2jrKNoVzjKNt1VOrFaWaHAFcDu7r7XcDuwFmkHoyfBM4hDYM+Bziv9PKKN1gEMBW045W7c2BmY0kT1+4MLAFuJJ0YjiDNS/Fld3/YzGrdvanSba4WyjaOso2hXOMo2zjKNoZyjaNs4yjbOMo2hnKNo2zjmNnZpELiGe7+ZJttw4Gt3P2RItom0pYKixVQOmma2U+AO4Brs+7g7wYOI62KtTOpB+kVwC/d/bXCGlxFlG0cZRtDucZRtnGUbQzlGkfZxlG2cZRtDOUaR9nGMbOjSD1AD3L32fkenqWCrIY+S0+hwmKFmFk/4H7ShLWfcfe/5LaNABZCy0lCOk/ZxlG2MZRrHGUbR9nGUK5xlG0cZRtH2cZQrnGUbffJFWqPBL4DbAhcCvzE3efn9yMt/Kw5KqVH0ByLFeLuK0nzH7wG/MnMvmtmI7Nt89IXnWzXhrKNo2xjKNc4yjaOso2hXOMo2zjKNo6yjaFc4yjb7pPLaTSwV/b1G8DvzewcM9vVzOrcvUlFRelJ1GOxwsxsGGnOiZOAn7v71wtuUq+hbOMo2xjKNY6yjaNsYyjXOMo2jrKNo2xjKNc4yrb7mdlBwJmkFbb7A08BfwMagIfd/ZkCmyfyDvVYrCAz6+fuC4GvAv8LfM3MGsxsn2x7jZlpJae1oGzjKNsYyjWOso2jbGMo1zjKNo6yjaNsYyjXOMq2e5QyMrNBZjbA3e9w9zOBQcCHgJeBTwNXAtPNbFRxrRVpoR6Lwcw6nlDVzE4Dvg08SZqP4umKNq7KKds4yjaGco2jbOMo2xjKNY6yjaNs4yjbGMo1jrLtXqU8s2LsOcD7gSbgFeBW4HJ3f9zMNiYVFw9298MLa7BIjgqLFWBmmwEjgKHA7Oz7gcCzpK7NPwTmAV8mnTBWrO5ELS2UbRxlG0O5xlG2cZRtDOUaR9nGUbZxlG0M5RpH2XYPM6vxtJr2VsA/gI1IQ57nAYcA2wOvA99295+Xe22l2yySV1d0A3q77I7DPcAiYCXpZLsYWEVaOetVUpfmzYELgVrgVzrZrpmyjaNsYyjXOMo2jrKNoVzjKNs4yjaOso2hXOMo225VGib+aWAAcIK73/zORrO9gf8CfmpmI939/NI2FRWlJ1BhsTI+BSwhLRf/IrAB6YQxh3Q3woCXgOOAi81sDPAlnXQ7RdnGUbYxlGscZRtH2cZQrnGUbRxlG0fZxlCucZRtN/CW1aB3BO4E/gXvzF250t3vN7MzgD8BJ5vZL9x9bjGtFWlPQ6F7EDMbAPyEtOrTh9z9lmJb1Hso2zjKNoZyjaNs4yjbGMo1jrKNo2zjKNsYyjWOsu1YfiizmR0NfM7dj26zT627N5nZZ4EfAB9w91sr31qR8rQqdBCzNa96ZUlt6Xt3Xw78GHgL2C+4iVVL2cZRtjGUaxxlG0fZxlCucZRtHGUbR9nGUK5xlG0MM/slcAVwiJn9Z1aMBVr1aKzLHvcX0ESRDmkodIDs5OlmNgI4BjiS1AX8H8BjwCvuvirrAt4EkO1vwEhgU+DvxbS+Z1O2cZRtDOUaR9nGUbYxlGscZRtH2cZRtjGUaxxl2/28ZY7EOcBMYFvgPGBfM7sEuJe0OM7BwBnAZe6+xLJejAU0WaQdDYUOYmaDgMuBDwKPA4OAbUgni5uBP2fPv5k/IZhZDfA+d/9rpdtcLZRtHGUbQ7nGUbZxlG0M5RpH2cZRtnGUbQzlGkfZxsiKryOA/YFjgcNJuS4gLY7jpDktr/e0gnQd0OQq6EhP4O56dOMDqMu+foZ0EjgX6Ad8iHTX5gbSsvFLSXdrvgMMKvPnWNH/lp72ULbKttoeylXZVuND2SrXansoW2VbjQ9lq1yr7aFsK5p1DbAFMAG4mlSoXQE8BHwN2LroNuqhR/6hHovdLNc9/B7gSdKqV3PN7DJSt+YTSN2Y/xdYDrzk7nsX1+LqoWzjKNsYyjWOso2jbGMo1zjKNo6yjaNsYyjXOMq2GGbWH9gBOJo0/HwfUkH3QeACd7+2wOaJAFq8pVvlTrabAMOARm9ZBn4caXn4V9z9KuCPwFXAYdlr9X+xGso2jrKNoVzjKNs4yjaGco2jbOMo2zjKNoZyjaNsi+PuK9z9MXf/H+ADwFjgh6QejTsW2jiRjH7Ju5G3dP9cD3gFWAVgZvuQsn44OyEb8CLwbsCy1za3/xOlRNnGUbYxlGscZRtH2cZQrnGUbRxlG0fZxlCucZRtz+Dub7n73cDXgXrSStsihVNhcR2Z2QZmNtbS5KklLwGXArdlPw8gzTWxQ/bz5tn3Q9x9UXYCljaUbRxlG0O5xlG2cZRtDOUaR9nGUbZxlG0M5RpH2fZcnrzp7suLbosIoMVb1vUBfBpoBp4AvgvsVmafIaR5KF4GvgJMB5YBZ2fb64r+d/TEh7JVttX2UK7Kthofyla5VttD2SrbanwoW+VabQ9lq4ceenT2ocVb1pGZbQS8jzSZ6pHARsADwGXANe7+SrbfDsAFwEGkOzvfBS5y9xVFtLsaKNs4yjaGco2jbOMo2xjKNY6yjaNs4yjbGMo1jrIVkc5SYbGbWFqtaSvgCOBY0opYtcAtpJPvjUATUAf0c/c3Cmpq1VG2cZRtDOUaR9nGUbYxlGscZRtH2cZRtjGUaxxlKyJrosJiADMbDOxMWrXpWGBPYB4tK2Td7prEdq0o2zjKNoZyjaNs4yjbGMo1jrKNo2zjKNsYyjWOshWRclRYDJRNVjsM2It04j0a2B54xN3fVWDTqp6yjaNsYyjXOMo2jrKNoVzjKNs4yjaOso2hXOMoWxHJU2GxQsysFtiYNE9Frbv/1szq3H1VwU2reso2jrKNoVzjKNs4yjaGco2jbOMo2zjKNoZyjaNsRUSFxQKYmbmCD6Fs4yjbGMo1jrKNo2xjKNc4yjaOso2jbGMo1zjKVqRvUmFRREREREREREREuqym6AaIiIiIiIiIiIhI9VFhUURERERERERERLpMhUURERERERERERHpMhUWRUREREREREREpMtUWBQREREREREREZEuU2FRRERERKqamd1qZrd2Yr9DzczN7NDwRomIiIj0ASosioiIiPQxZnZGVmDbu+i2iIiIiEj1qiu6ASIiIiIi6+j9RTdAREREpC9SYVFEREREejQzqwH6u/uyctvdfUWFmyQiIiIiaCi0iIiIiJRhZv3N7Ftm9oCZLTSzt8zsdjM7LLePmdlsM7u+zOsHZq+7OPfcADP7ppk9bWbLzexFM/tvMxvQ5rVuZj83s1PN7DFgOXDUatrabo5FM9vCzK7L2j3XzH4MDCj/J4iIiIjI2lCPRREREREpZyhwNnAl8H/A+sBZwM1mtq+7P+TubmaXAV8xsxHuPi/3+mOyP+MyeKfX4Z+Bg4BfAjOBeuALwI7AB9v8/WOBE4GfA28AszvbcDMbBNwCbAX8FHgFOD37M0VERESkm6iwKCIiIiLlzAdG54cZm9n/AU8AnyUVGQF+B3ydVAScmnv9aaRi4B3Zzx8F3gcc4u6l5zCzR4GpZnaAu/8r9/qdgHp3f3wt2v5JUrHyRHe/Jtf2h9fizxIRERGRDmgotIiIiIi04+5NpaKimdWY2QjSTen7gT1z+80C7gFOLT2X7Xs0cLm7e/b0CaReik+Y2cjSA2jItr8zxDpz21oWFQE+ALwK/CHXzrdJPSVFREREpJuox6KIiIiIlGVmE4BzgZ2BfrlNz7XZ9XfAz81sa3d/nlRE7AdcmttnB2AM8HoHf93GbX5u+3d0xdbA07miZsmT6/BnioiIiEgbKiyKiIiISDtmdhrwW+A64IfAXKAJ+BqwXZvdrwJ+TOq1+D3SMOj73T1fyKsBGoEvdvBXvtjm56Vr33oRERERqQQVFkVERESknI8AzwIfyvf8M7Nvtt3R3eeZ2QzgVDO7HDgQ+Hyb3Z4B9gBuKdOTsLs9D+xmZtbm79op+O8VERER6VM0x6KIiIiIlNOUfbXSE2b2HmD/Dva/FNiF1LuxidSLMe/3wObAJ9q+0MwGmdmQdW1wzo3AKFJxtPR3DCYt6iIiIiIi3UQ9FkVERET6rjPN7Kgyz18ETAc+BPwp6424DTAReBxYr8xrZgBvkuZX/Iu7z22z/VKylaPN7DDgTqCWNH/jicCRpIVhusP/AZ8Bfmdme5EWcjkdeLub/nwRERERQYVFERERkb7sUx08/9vssSlwDqno9zhp7sQTgEPbvsDdV5jZ1cCnab1oS2l7s5l9EPgC8DHgeFKh71lSIXPWuvxD2vxdb5vZ4cDPgM9mf8/lwF+Am7rr7xERERHp6yx+ihsRERER6QvM7MfAWcCm7q7egSIiIiK9nOZYFBEREZF1ZmYDST0a/6iiooiIiEjfoKHQIiIiIrLWzGxj4H2khVI2JA1rFhEREZE+QIVFEREREVkXu5DmL5wLfM7dHyq2OSIiIiJSKZpjUURERERERERERLpMcyyKiIiIiIiIiIhIl6mwKCIiIiIiIiIiIl2mwqKIiIiIiIiIiIh0mQqLIiIiIiIiIiIi0mUqLIqIiIiIiIiIiEiXqbAoIiIiIiIiIiIiXabCooiIiIiIiIiIiHSZCosiIiIiIiIiIiLSZf8fEK2500T3e+AAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "test_idx = 0\n", + "\n", + "train_idx_to_plot = list(range(len(ekfac_train_influences[0])))\n", + "train_idx_to_plot.pop(3)\n", + "for train_idx in train_idx_to_plot:\n", + " infl_across_layers = []\n", + " idx = (test_idx, train_idx)\n", + " for layer_id, value in influences_by_layer.items():\n", + " infl_across_layers.append(value[idx].item())\n", + " plt.plot(infl_across_layers, label=f\"Train example {train_idx}\")\n", + "plt.legend()\n", + "plt.xticks(\n", + " range(len(influences_by_layer.keys())),\n", + " strip_layer_names(influences_by_layer.keys()),\n", + " rotation=70,\n", + ")\n", + "plt.xlabel(\"Layer id\")\n", + "plt.ylabel(\"Influence value\")\n", + "plt.title(f\"Influence of test example {test_idx} on test examples\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot above shows the influences for test idx 0 and all train idx apart idx=3 (excluded for clarity since it has a very large absolute value). We can see that the scores tend to keep their sign across layers, but in almost all cases tend to decrease when approaching the output layer. This is not always the case, and in fact other test examples show different patterns. Understanding why this happens is an interesting research direction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ekfac is a powerful approximate method for computing the influence function of models that use a cross-entropy loss. In this notebook we applied it to sentiment analysis with BERT on the IMDB dataset. However, this method can be applied to much larger models and problems, e.g. to analyse the influence of entire sentences generated by GPT, Llama or Claude. For more info, you can visit our [paper pill on influence functions for large language models](https://transferlab.ai/pills/2023/llm-influences-with-ekfac/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix: Choosing the Hessian regularization value" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Hessian regularization value impacts a lot the quality of the influence function approximation. In general, the value should be chosen as small as possible so that the results are finite. In practice, even when finite the influence values can be too large and lead to numerical instabilities. In this section we show how to efficiently analyse the impact of the Hessian regularization value with the ekfac method." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a few additional imports." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from scipy.stats import pearsonr, spearmanr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The method `explore_hessian_regularization` will calculate the influence values of the training examples with each other for a range of Hessian regularization values. The method optimises gradient calculation and Hessian inversion to minimise the computation time." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "influences_by_reg_value = ekfac_influence_model.explore_hessian_regularization(\n", + " train_input,\n", + " train_labels,\n", + " regularization_values=[1e-15, 1e-9, 1e-5, 1],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The resulting object, `influences_by_reg_value` is a dictionary that associates to each regularization value the influences for each layer of the neural network. This is a lot of data, so we will first organise it in a pandas dataframe and take the average across training examples." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "cols = [\"reg_value\", \"layer_id\", \"mean_infl\"]\n", + "infl_df = pd.DataFrame(influences_by_reg_value, columns=cols)\n", + "for reg_value in influences_by_reg_value:\n", + " for layer_id, layer_influences in influences_by_reg_value[reg_value].items():\n", + " mean_infl = torch.mean(layer_influences, dim=0).detach().numpy()\n", + " infl_df = pd.concat(\n", + " [infl_df, pd.DataFrame([[reg_value, layer_id, mean_infl]], columns=cols)]\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With this dataframe, we can take contiguous values of regularization and, for each layer, calculate the Pearson and Spearman correlation coefficients. This will give us an idea of how the influence values change with the regularization value." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "result_corr = {}\n", + "for layer_id, group_df in infl_df.groupby(\"layer_id\"):\n", + " result_corr[layer_id + \"_pearson\"] = {}\n", + " result_corr[layer_id + \"_spearman\"] = {}\n", + " for idx, mean_infl in enumerate(group_df[\"mean_infl\"]):\n", + " if idx == 0:\n", + " continue\n", + " reg_value_diff = f\"Reg: {group_df['reg_value'].iloc[idx-1]} -> {group_df['reg_value'].iloc[idx]}\"\n", + " pearson = pearsonr(mean_infl, group_df[\"mean_infl\"].iloc[idx - 1]).statistic\n", + " spearman = spearmanr(mean_infl, group_df[\"mean_infl\"].iloc[idx - 1]).statistic\n", + " result_corr[layer_id + \"_pearson\"].update({f\"{reg_value_diff}\": pearson})\n", + " result_corr[layer_id + \"_spearman\"].update({f\"{reg_value_diff}\": spearman})\n", + "result_df = pd.DataFrame(result_corr).T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot the correlations heatmap. The y-axis reports Spearman and Pearson correlations for each layer, while the x-axis reports pairs of regularization values. High correlations mean that influences are stable across regularization values. " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 6))\n", + "plt.imshow(result_df, cmap=\"coolwarm_r\", aspect=\"auto\")\n", + "plt.xticks(range(result_df.shape[1]), result_df.columns, rotation=45)\n", + "plt.yticks(range(result_df.shape[0]), strip_layer_names(result_df.index))\n", + "plt.colorbar(label=\"Correlation Value\")\n", + "plt.title(\"Correlation Heatmap\")\n", + "plt.xlabel(\"Regularization Values\")\n", + "plt.ylabel(\"Layer ID\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In our case, we can see that for regularization = 1 the spearman correlation becomes very bad. However, for a large range of regularization values smaller than 1 the sample rankings are stable. This is a good indicator that the model is not too sensitive to the regularization value. We therefore chose the value 1e-5 for our analysis." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pydvl_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/influence_wine.ipynb b/notebooks/influence_wine.ipynb index bc4c0e221..a0f46fcae 100644 --- a/notebooks/influence_wine.ipynb +++ b/notebooks/influence_wine.ipynb @@ -1,7 +1,6 @@ { "cells": [ { - "attachments": {}, "cell_type": "markdown", "id": "a75acfec", "metadata": {}, @@ -26,7 +25,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "68ec440b", "metadata": {}, @@ -35,7 +33,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "9eb29a26", "metadata": {}, @@ -48,7 +45,6 @@ "execution_count": 1, "id": "cef17bfc", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -66,13 +62,23 @@ "execution_count": 2, "id": "be813151", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, - "tags": [] + "tags": [ + "hide-output" + ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/fabio/miniconda3/envs/pydvl_env/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], "source": [ "%autoreload\n", "%matplotlib inline\n", @@ -86,11 +92,17 @@ "import torch.nn.functional as F\n", "from support.common import plot_losses\n", "from support.torch import TorchMLP, fit_torch_model\n", - "from pydvl.influence.torch import DirectInfluence, CgInfluence\n", + "from pydvl.influence.torch import (\n", + " DirectInfluence,\n", + " CgInfluence,\n", + " ArnoldiInfluence,\n", + " EkfacInfluence,\n", + ")\n", "from support.shapley import load_wine_dataset\n", "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, f1_score\n", "from torch.optim import Adam, lr_scheduler\n", - "from torch.utils.data import DataLoader, TensorDataset" + "from torch.utils.data import DataLoader, TensorDataset\n", + "from scipy.stats import pearsonr, spearmanr" ] }, { @@ -98,7 +110,6 @@ "execution_count": 3, "id": "02254f9c", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -121,7 +132,6 @@ "execution_count": 4, "id": "a656363e", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -141,7 +151,6 @@ "execution_count": 5, "id": "df5159e6", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -156,7 +165,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "be7ddf7c", "metadata": {}, @@ -169,7 +177,6 @@ "execution_count": 6, "id": "0d3e96ca", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -178,7 +185,7 @@ "outputs": [], "source": [ "training_data, val_data, test_data, feature_names = load_wine_dataset(\n", - " train_size=0.3, test_size=0.6\n", + " train_size=0.6, test_size=0.3\n", ")" ] }, @@ -187,7 +194,6 @@ "execution_count": 7, "id": "cac906e3-aed6-4d11-b563-1b9a91132d29", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -203,7 +209,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "b96a15cc", "metadata": {}, @@ -225,7 +230,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "5de58672", "metadata": {}, @@ -248,7 +252,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "a018e72c", "metadata": {}, @@ -263,7 +266,6 @@ "execution_count": 10, "id": "00dc59af", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -273,18 +275,11 @@ }, "outputs": [ { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7ef3e6e6be3249b28035d8a19f2ea9cf", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Model fitting: 0%| | 0/300 [00:00" ] @@ -355,7 +348,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "b3345522", "metadata": {}, @@ -368,7 +360,6 @@ "execution_count": 12, "id": "08f1cba4", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -380,7 +371,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAysAAAKvCAYAAABqAVAmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBiklEQVR4nO3deZilZ1kn/u/dne7O0p3ORjbCkgQIA8FhiWxGBGMQEQVE1FFk0RmEQYdtmDH+MEJQcBgmgxpGBRWCKAoICEoIsgkoBAiGJSYhkAQI2bdOJ53eqp7fH+c0VKq7uruW95y3Tn8+1/Ve1e/zLs9dlZyk7r6fpVprAQAA6JsV4w4AAABgVyQrAABAL0lWAACAXpKsAAAAvSRZAQAAekmyAgAA9JJkBQAA6CXJCgAA0Ev7jTuApVRVleTYJBvHHQsAAN+zLsk1bR/bjbyq9k+yekzdb22tbR5T30tmopKVDBKVq8cdBAAAOzkuyXfHHcSoVNX+Rx+58q7rbpgaVwjXVdXxyz1hmbRkZWOSfOtL983Ba41wg73x9Ac8ZNwhADDBtmdbPpMPJfveyJfV190wlW9deN8cvG60v5fevnE693nEVUdnUNWRrPTNwWtXjPxfCliu9qtV4w4BgEm2Tw382tnadZW162qkfU5ntP11yW/0AABAL0lWAACAXprIYWAAANAHU206UyMeCjfVpkfbYYdUVgAAgF5SWQEAgI5Mp2V6xKsMjLq/LqmsAAAAvaSyAgAAHZnOdEY9g2T0PXZHZQUAAOglyQoAANBLhoEBAEBHplrLVBvthPdR99cllRUAAKCXVFYAAKAjli5eHJUVAACglyQrAABALxkGBgAAHZlOy5RhYAumsgIAAPSSygoAAHTEBPvFUVkBAAB6SWUFAAA6YlPIxVFZAQAAekmyAgAA9JJhYAAA0JHp4THqPieFygoAAOzDquqMqvpCVW2sqhuq6v1VddKse/avqjdV1c1VdUdV/V1VHbWH91ZVnVVV11bVXVX10aq6/3xik6wAAEBHpoabQo76mKcfSfKmJI9OcnqSVUk+UlUHzbjn/yb5qSTPHN5/bJL37uG9/yPJf0vygiSPSnJnkvOrav+9DcwwMAAA2Ie11p4087yqnpvkhiSPSPKpqlqf5FeT/GJr7ePDe56X5JKqenRr7XOz31lVleQlSX63tfb3w7ZnJ7k+ydOS/M3exKayAgAAk2ldVR0841izl8+tH369Zfj1ERlUWz6644bW2qVJvp3kMXO84/gkR896ZkOSC3bzzE5UVgAAoCNTbXCMus+hq2ddenWSV+3u2apakeSNSf6ltfa1YfPRSba21m6bdfv1w2u7cvSMe/b2mZ1IVgAAYDIdl2TjjPMte/HMm5KcnOTUTiKaJ8kKAAB0ZMxLF29srd2+t89V1TlJnpLkca21mVWZ65KsrqpDZlVXjhpe25XrZtxz7axnLtrbmMxZAQCAfdhwieFzkjw9yY+21q6cdcuFSbYlOW3GMycluXeSz87x2iszSFhmPnNwBquCzfXMTlRWAACgI9OpTKVG3uc8vSnJLyZ5apKNVbVjTsmG1tpdrbUNVfXnSc6uqluS3J7kj5J8duZKYFV1aZIzWmvva621qnpjkldW1eUZJC+vSXJNkvfvbWCSFQAA2Le9cPj1k7Pan5fkbcM/vzSDEWZ/l2RNkvOT/NdZ95+U768kliSvT3JQkjcnOSTJZ5I8qbW2eW8Dk6wAAMA+rLW2x1LMMMF40fDYq/e01lqSM4fHgkhWAACgI9NtcIy6z0lhgj0AANBLKisAANCRqTFMsB91f11SWQEAAHpJsgIAAPSSYWAAANARw8AWR2UFAADoJZUVAADoyHSrTO95G5Ml73NSqKwAAAC9pLICAAAdMWdlcVRWAACAXpKsAAAAvWQYGAAAdGQqKzI14vrA1Eh765bKCgAA0EsqKwAA0JE2hqWLm6WLAQAAuiVZAQAAeskwMAAA6Ih9VhZHZQUAAOgllRUAAOjIVFuRqTbipYvbSLvrlMoKAADQSyorAADQkelUpkdcH5jO5JRWVFYAAIBekqwAAAC9ZBgYAAB0xNLFi6OyAgAA9JLKCgAAdGQ8SxebYA8AANApyQoAANBLhoEBAEBHBvusjHbC+6j765LKCgAA0EsqKwAA0JHprMiUHewXTGUFAADoJckKAADQS4aBAQBAR+yzsjgqKwAAQC+prAAAQEemsyLTJtgvmMoKAADQSyorAADQkalWmWqj3aRx1P11SWUFAADoJckKAADQS4aBAQBAR6bGsIP9lAn2AAAA3VJZAQCAjky3FZke8aaQ0zaFBAAA6JZkBQAA6CXDwAAAoCMm2C+OygoAANBLKisAANCR6Yx+R/npkfbWLZUVAACgl1RWAACgI9NZkekR1wdG3V+XJuc7AQAAJopkBQAA6CXDwAAAoCNTbUWmRryD/aj769LkfCcAAMBEUVkBAICOTKcynVEvXTza/rqksgIAAPSSZAUAAOglw8AAAKAjJtgvjmSFRbvsogPyT+86LF/+17W5/jurc/ChU3ngI+7Mc//HdTnuxC3fu+/Sfzsw//Suw3Lplw7MlZcckKntlfOvuWh8gUMPrVo9nWe/4rqc9oxbs3b9VK685ICc+/qj86VPrRt3aNBLPjMw2SYn7WJs3vWmo/IvHzokDzv1jrzwrO/myc+6OV/73Nq86McfkKsu3f97933hYwfnw399WKqSY+69ZTdvhH3Xy9/4nfzM82/Mx993aP74zHtmejp5zV9ekQc/8o5xhwa95DND301lxViOSVGttXHHsGSq6uAkG279+gk5eN3k/EPqu4u/cGAe8B/vyqrV3/936btXrM6vnfbA/PBP3pb/ec63kyS33rhfDlw7lTUHtJzzW/fMB992D5WVHvjxYx867hAYOumhm/KHH7o8bznrmLznT45MkqxaM503f/yy3HbzfnnpT99/zBFCv/jMLA/b27Z8Mn+fJOtba7ePO55R2fF76Ru+eGoOWDvawUx33bE9//2UzyQT8DPv5W/0VfWiqrqqqjZX1QVV9chxx8TcHvyDm+6WqCTJPU/Ymvs8YHO+ffn3KyuH3mN71hwwOckxLLVTn3JbprYnH3rH4d9r27ZlRT78zsPyoFM25R7Hbh1jdNA/PjMsB9OtxnLMR1U9rqo+WFXXVFWrqqfNut7mOF6xm3e+ahf3Xzrfn1/vkpWq+vkkZyd5dZKHJ/lykvOr6sixBsa8tJbcdtN+WX/Y9nGHAsvG/U6+K1dfsSab7lh5t/bLLjowSXLCg+8aR1jQWz4zsGQOyuB37hfNcf2YWcevJGlJ/m4P77141nOnzjewPk6wf1mSt7TW3pokVfWCJD+ZwQ/l98cZGHvv4+89NDdduzrP/u/XjTsUWDYOO3J7brl+1U7tO9oOP0ryDzP5zMDSaK2dl+S8JKnauSrTWrvbL3RV9dQkn2itXbGHV2+f/ex89SpZqarVSR6R5HU72lpr01X10SSP2cX9a5KsmdFk6Y8e+Pbla3LObx2X//CIO/NjP3fLuMOBZWP1/tPZtnXn/0ls3TJoW7P/9KhDgl7zmWE5mB7DhPfp7/e3blbysaW1tqhVjqrqqAwKCc/Zi9vvX1XXJNmc5LNJzmitfXs+/fVtGNgRSVYmuX5W+/VJjt7F/Wck2TDjuLrT6NijW27YL2c++4QctG4qv/2WK7Ny5Z6fAQa2bl6x0/yvJFm9ZtC2ZXPf/pMN4+UzA3t0de7+u/IZS/DO5yTZmOS9e7jvgiTPTfKkJC9McnyST1fVvIoLvaqsLMDrMpjfssO6SFjG5s7bV+SVv3RC7rh9Zf7P+y7P4Ucrv8N83HLDfjn86G07tR921KDt5uuX+3+yYWn5zLAcTLcVmR7xJo0z+jsug8Rih6XYO+JXkvxVa23z7m4aDi3b4StVdUGSbyX5uSR/vred9e2vHG5KMpXkqFntRyXZabxba21La+32HUfu/g+DEdq6uXLmc07I1VesyVnnXpH7PMA+KjBf37z4gBx3wpYcuHbqbu0PfNimJMkVFx8wjrCgt3xmYI82zvxdeQmGgP1wkpOS/Nl8n22t3Zbk60nuN5/nepWstNa2JrkwyWk72qpqxfD8s+OKi92bmkp+7wX3zSUXHpRXvvmqPOiUTeMOCZalT//D+qzcL3nys27+Xtuq1dN54s/fkksuPDA3XrN6jNFB//jMwMj9apILW2tfnu+DVbU2yYlJrp3Pc32sj56d5Nyq+mKSzyd5SQbLqb11nEExtze/+p753EfW59Gnb8jG2/bLx/7u0LtdP+0ZtyZJrr96VT72nsOSJJd/ZbCs5F+/cVBEO/K4rfmxn711hFFD/1z2bwflUx9Yn+edcW3WH7E911y5Jqf/3C056l5bc/bL7zXu8KB3fGZYDqZSmcr89j1Zij7nY5hIzKx4HF9VD01yy44J8cNNLp+Z5OVzvONjSd7XWjtneP6GJB/MYOjXsRlsSzKV5J3zia13yUpr7W+r6h5JzspgUv1FSZ7UWps96Z6e2FFm/9w/rc/n/mn9Ttd3JCvXfXtNzn39MXe7tuP8Bx5zh2QFkrz+xffOc757XU57xq1Zt34qV16yf8589vH52gVrxx0a9JLPDCyJU5J8Ysb5jjnh52YwST5JfiFJZe5k48QMFsva4bjhvYcnuTHJZ5I8urV243wCq9YmZ0fxYca34davn5CD1/VqhBv01o8f+9BxhwDABNvetuWT+fskWT+cY7xP2PF76asv+LHsv3a09YHNd2zP7zzqo8kE/Mz9Rg8AAPRS74aBAQDApJjK/OeQLEWfk0JlBQAA6CXJCgAA0EuGgQEAQEfGvIP9sjc53wkAADBRVFYAAKAjU21FpkZc6Rh1f12anO8EAACYKJIVAACglwwDAwCAjrRUpke8z0obcX9dUlkBAAB6SWUFAAA6YoL94kzOdwIAAEwUlRUAAOjIdKtMt9HOIRl1f11SWQEAAHpJsgIAAPSSYWAAANCRqazI1IjrA6Pur0uT850AAAATRWUFAAA6YoL94qisAAAAvSRZAQAAeskwMAAA6Mh0VmR6xPWBUffXpcn5TgAAgImisgIAAB2ZapWpEU94H3V/XVJZAQAAekllBQAAOmLp4sVRWQEAAHpJsgIAAPSSYWAAANCR1lZkuo22PtBG3F+XJuc7AQAAJorKCgAAdGQqlamMeOniEffXJZUVAACglyQrAABALxkGBgAAHZluo9/3ZLqNtLtOqawAAAC9pLICAAAdmR7D0sWj7q9Lk/OdAAAAE0WyAgAA9JJhYAAA0JHpVKZHvO/JqPvrksoKAADQSyorAADQkalWmRrx0sWj7q9LKisAAEAvqawAAEBHLF28OJPznQAAABNFsgIAAPSSYWAAANCR6VSmRzzh3dLFAAAAHVNZAQCAjrQxbArZVFYAAAC6JVkBAAB6yTAwAADoyHQbwwR7O9gDAAB0S2UFAAA6Ygf7xZmc7wQAAJgoKisAANARc1YWR2UFAADoJckKAADQS4aBAQBAR6bHsIP9qPvrksoKAADQSyorAADQERPsF0dlBQAA6CXJCgAA0EuSFQAA6MiOYWCjPuajqh5XVR+sqmuqqlXV02Zdf9uwfebx4b1474uq6qqq2lxVF1TVI+f305OsAADAvu6gJF9O8qLd3PPhJMfMOP7T7l5YVT+f5Owkr07y8OH7z6+qI+cTmAn2AADQkeUwwb61dl6S85Kkas5nt7TWrpvHa1+W5C2ttbcO3/uCJD+Z5FeS/P7evkRlBQAA2JPHV9UNVXVZVf1xVR0+141VtTrJI5J8dEdba216eP6Y+XSqsgIAAB0Zc2Vl3axKyZbW2pYFvPLDSd6b5MokJyZ5bZLzquoxrbWpXdx/RJKVSa6f1X59kgfOp2PJCgAATKarZ52/Osmr5vuS1trfzDj9alV9Jck3kzw+yccWGtzekKwAAMBkOi7JxhnnC6mq7KS1dkVV3ZTkftl1snJTkqkkR81qPyrJfOa9mLMCAABdaUmmUyM92ve739hau33GsSTJSlUdl+TwJNfu8ntubWuSC5OcNuOZFcPzz86nL5UVAADYh1XV2gyqJDscX1UPTXLL8PidJH+XQVXkxCSvT/KNJOfPeMfHkryvtXbOsOnsJOdW1ReTfD7JSzJYIvmt84lNsgIAAB1ZDksXJzklySdmnJ89/Hpukhcm+YEkz0lySJJrknwkyW/PqtScmMHE+iRJa+1vq+oeSc5KcnSSi5I8qbU2e9L9bklWAABgH9Za+2SS3WU4P74X77jvLtrOSXLOznfvPXNWAACAXlJZAQCAjiyTYWC9pbICAAD0ksoKAAB0RGVlcVRWAACAXlJZAQCAjqisLI7KCgAA0EuSFQAAoJcMAwMAgI60VmkjHpY16v66pLICAAD0ksoKAAB0ZDqV6Yx4gv2I++uSygoAANBLkhUAAKCXDAMDAICO2GdlcVRWAACAXlJZAQCAjli6eHFUVgAAgF5SWQEAgI6Ys7I4KisAAEAvSVYAAIBeMgwMAAA6YoL94qisAAAAvaSyAgAAHWljmGA/SZWViUxWnv6Ah2S/WjXuMGBZ+KVLrx53CLDs/O1P/NC4Q4DlY3pLctW4g2C5MgwMAADopYmsrAAAQB+0JK2Nvs9JobICAAD0ksoKAAB0ZDqVyoh3sB9xf11SWQEAAHpJZQUAADpiU8jFUVkBAAB6SbICAAD0kmFgAADQkelWqREPy5o2DAwAAKBbKisAANCR1sawKeQE7QqpsgIAAPSSZAUAAOglw8AAAKAj9llZHJUVAACgl1RWAACgIyori6OyAgAA9JJkBQAA6CXDwAAAoCN2sF8clRUAAKCXVFYAAKAjdrBfHJUVAACgl1RWAACgI4PKyqiXLh5pd51SWQEAAHpJsgIAAPSSYWAAANARO9gvjsoKAADQSyorAADQkTY8Rt3npFBZAQAAekmyAgAA9JJhYAAA0BET7BdHZQUAAOgllRUAAOiKGfaLorICAAD0ksoKAAB0ZQxzVmLOCgAAQLckKwAAQC8ZBgYAAB1pbXCMus9JobICAAD0kmQFAAA6smNTyFEf81FVj6uqD1bVNVXVquppM66tqqr/VVVfrao7h/e8vaqO3cM7XzV818zj0vn+/CQrAACwbzsoyZeTvGgX1w5M8vAkrxl+/ZkkJyX5wF689+Ikx8w4Tp1vYOasAADAPqy1dl6S85KkqmZf25Dk9JltVfXrST5fVfdurX17N6/e3lq7bjGxSVYAAKArrUa/78n3+1s3K/nY0lrbsgQ9rE/Skty2h/vuX1XXJNmc5LNJzthDcrMTw8AAAGAyXZ1kw4zjjMW+sKr2T/K/kryztXb7bm69IMlzkzwpyQuTHJ/k01W1bj79qawAAEBHxrx08XFJNs64tKiqSlWtSvKuJJVBArKbGNp5M06/UlUXJPlWkp9L8ud726dkBQAAJtPGPVQ/9tqMROU+SX50vu9trd1WVV9Pcr/5PGcYGAAAdKWN6VhCMxKV+yf5sdbazQt4x9okJya5dj7PSVYAAGAfVlVrq+qhVfXQYdPxw/N7DxOV9yQ5JckvJVlZVUcPj9Uz3vGx4SphO87fUFU/UlX3rarHJnlfkqkk75xPbIaBAQDAvu2UJJ+YcX728Ou5SV6V5KeH5xfNeu4JST45/POJSY6Yce24DBKTw5PcmOQzSR7dWrtxPoFJVgAAoCML2VF+Kfqc3/3tkxlMmp/LHl/YWrvvrPNfmFcQczAMDAAA6CWVFQAA6NKIly6eJCorAABAL0lWAACAXjIMDAAAOrIcJtj3mcoKAADQSyorAADQlQ52lN+rPieEygoAANBLKisAANCZyl7sqdhBn5NBZQUAAOglyQoAANBLhoEBAEBXTLBfFJUVAACgl/aqslJVj1vIy1trn1rIcwAAMBFUVhZlb4eBfTLz+7ZreP/K+QYEAACQ7H2y8oROowAAAJhlr5KV1to/dx0IAABMnFaDY9R9TohFT7CvqmOq6j9W1UFLERAAAECyiGSlqp5aVZcmuTrJl5I8ath+RFX9W1U9bWlCBACA5am18RyTYkHJSlX9VJL3JrkpyaszmFCfJGmt3ZTku0metxQBAgAA+6aFVlbOTPKp1tqpSd60i+ufTfKwBUcFAACToI3pmBALTVZOTvKu3Vy/PsmRC3w3AADAgpOVTUl2N6H+hCQ3L/DdAAAAC05WPpHkOVW109LHVXV0kv+S5COLCQwAAJa9HUsXj/qYEAtNVv6/JMcl+UKSX8tgZNyPV9XvJvlqBhPuX70kEQIAAPukvd3B/m5aa5dV1alJ/iDJazJITl4xvPzJJC9qrV21FAECAMByVW1wjLrPSbGgZCVJWmsXJ/mxqjo0yf0yqNJc0Vq7camCAwAA9l0LTlZ2aK3dmsFwMAAAgCWzmB3s71FVb6iqf6+qTcPj34dtRy1lkAAAsCzZZ2VRFrqD/YMzmEj/siQbkrx7eGwYtn2lqk5eqiABAIB9z0KHgb0pycokj2qt3W0IWFU9MsmHkvxRkicsLjwAAFjGxrGUsKWL88gkfzA7UUmS1trnM1gl7FGLCQwAANi3LbSyckOSzbu5vnl4DwAA7LvGMYdkX5+zkuSNSV443K3+bqrq2CQvHN4DAACwIHtVWamql+2i+Y4k36iq9yX5xrDt/kmeNjyfnMFyAADAyO3tMLA37ObaL+2i7QeGz/zfeUcEAACTwjCwRdnbZOX4TqMAAACYZa+Sldbat7oOBAAAJo7KyqIseAd7AACALi106eJU1Q8k+Y0kD0+yPjsnPq21duIiYgMAAPZhC6qsVNXjk3w+yVOSXJPkhCRXDP98nwxWCvvUkkQIAADL1Y4d7Ed9TIiFDgM7K4Pk5KQkzxu2vba1dmqSxyY5Lsm7Fh8eAACwr1posvLwJH/eWrs9ydSwbWWStNYuSPKnSV6z+PAAAGD5qjaeY1IsNFnZnmTj8M+3JdmW5MgZ169I8qCFhwUAAOzrFjrB/hsZ7Faf1lqrqkuTPD3JXw2v/2SS6xYfHsvdqtXTefYrrstpz7g1a9dP5cpLDsi5rz86X/rUunGHBmO17c7KJX++Ljd9ZXVu/urqbN2wIo9+7S058Wc27XTvt847IJe8bW1uv2JVakXLIfffngf954255+M3jyFy6I/7P/DWnPbk7+QHHn5zjjp6U27fsDqXXXxo3v6WB+aa76wdd3jAElhoZeVDSf5TVe1Ids5O8jNVdXlVXZ7kpzMYCsY+7uVv/E5+5vk35uPvOzR/fOY9Mz2dvOYvr8iDH3nHuEODsdpy64p89f8dnA1X7JdDT9o6532X/eVB+cxLD8+aQ6bz0JdvyEP+68Zsu6PyyRcckW9/ZP8RRgz987PP+kZ+6EeuzZe/eET+9A9Ozoc/cJ+c/NCb84d/8c+5z/G3jzs8GGhjOibEQisrr0nyBxnOV2mtnVtVU0meMWz7vdba25YkQpatkx66KU942m15y1nH5D1/Mhgl+NH3HJo3f/yy/OdXXpuX/vT9xxwhjM8BR07lZz59TQ64x3Ru/uqqfPiZu048LnvH2hz+kK15/J/cnBou7nLiM+7Mex93TK58/0G59xNVV9h3vf9vTsz/ftUjsn379//u9dMfOzZvevsn88xfvjxvOOsRY4wOWAoLqqy01ra11m5urbUZbe9orT29tfazC01UqupxVfXBqrqmqlpVPW0h76EfTn3KbZnannzoHYd/r23blhX58DsPy4NO2ZR7HDv33ybDpFu5OjngHtN7vG/bnSuy5rCp7yUqSbJqbct+B7Ws3H+C/uoMFuCSrx12t0QlSa65em2+feW63Os+KvgwCfq2g/1BSb6c5EXjDoTFu9/Jd+XqK9Zk0x0r79Z+2UUHJklOePBd4wgLlpWjHrkl135m/1z2lwfljqtXZsMV++XzZx2SbRsrJ/2yX8ZgZy2HHLYlGzasHncgwBLYq2FgVfXxBby7tdZOm+cD5yU5b9jnArqkTw47cntuuX7VTu072g4/avuoQ4Jl55T/77ZsuXVFvvh7h+aLvzdoW3PoVE576025x8NUJ2G2Jzzx6hxx5Oa8488eOO5QIElSGf1SwpP0W/TezllZkflP1ZmknxMLsHr/6WzbuvO/Blu3DNrW7L/nITCwr1u5f8u647fnwKPuzD0fvznb7qxceu7afOq/HZ4nvuOGrLvP1J5fAvuI4+69MS98+VdzyVcPzcfOu9e4wwGWwF4lK621x3ccx4JU1Zoka2Y0WQ+3R7ZuXpFVq3fOcVevGbRt2dy3UYjQP59+yeFZsbLl8X9y8/fajjvtrnzgx4/ORW9cnx/+v7eMMTroj0MP25xXveGC3HnHqrz2lT+Y6Wl/ZwqTYLn/tnhGkg0zjqvHGw4z3XLDfjnsqG07te9ou/n6hS5GB/uGjd9ZmWs/vX+O+9G7r/i15pCWIx+xNTd+yZh8SJIDD9qWV/+fz+Wgtdty5ssfnVtusqw3PdJqPMeEWO7JyuuSrJ9xHDfecJjpmxcfkONO2JID1959mMoDHzbY9O6Kiw8YR1iwbGy+abA4xfQuRkxOb0/a1OT8zwgWatXqqfzO6y/IPe91Z179ikflO1cZZAGTZFknK621La2123ccSTaOOya+79P/sD4r90ue/KzvD19ZtXo6T/z5W3LJhQfmxmv8rTDszrr7bE+taPn2hw5ImzGictN1K3PDF9fk0P+wc+US9iUrVrT85lkX5oEn35rX/fYpufTiw8YdEuzMppCL0qtxOFW1Nsn9ZjQdX1UPTXJLa+3b44mKhbrs3w7Kpz6wPs8749qsP2J7rrlyTU7/uVty1L225uyXm/gIl73joGzduCJ33TCooHz3E/tn0/WDP5/0rDuy/2HTOeEZd+ab716bjz33iNzr9Luy7c4VufydB2VqS+XBz7dDN/u2X/2Ni/PoH74uF3zmqKxbtzVPeOJ37nb9Ex/x/xpY7nqVrCQ5JcknZpyfPfx6bpLnjjwaFu31L753nvPd63LaM27NuvVTufKS/XPms4/P1y5YO+7QYOwu+Yt1ufOa7/9n+Dv/dGC+80+DPx//U5uyet1UHvk7t+XQk7blm393UC46e32S5PCHbM1jfv/WHPWDli5m33bC/TYkSR516vV51KnX73RdsgLLX6+SldbaJ2PJ44mybcuK/Nlrjs2fvebYcYcCvfO0j1+3x3tW7Jec9Kw7c9Kz7hxBRLC8nPEbPzTuEGDPxjEsyzCwgaq6Z5LHJTkyyd+11q6uqpUZTHbf0FqzAQAAALAgC0pWarC9/P9J8uvDd7QkX81g6eC1Sa5KcmaSNy5FkAAAsBxVG8MO9hNUWVnoamCvSPLiJG9IcnpmDN1qrW1I8t4kz1h0dAAAwD5rocPA/kuSt7fWfquqDt/F9a8k+YmFhwUAABPAnJVFWWhl5V5J/nU31+9McvAC3w0AAIxIVT2uqj5YVddUVauqp826XlV1VlVdW1V3VdVHq+r+e/HeF1XVVVW1uaouqKpHzje2hSYrN2SQsMzlEUnsiwIAAP13UJIvJ3nRHNf/R5L/luQFSR6VQWHi/Kraf64XVtXPZ7ANyauTPHz4/vOr6sj5BLbQZOW9SV5QVSfMaGvDwJ6YwZ4o717guwEAYDIsgx3sW2vntdZe2Vp73+xrw4W1XpLkd1trf99a+0qSZyc5NsnTdvPalyV5S2vtra21f88g0dmU5FfmE9tCk5XfSXJtkouSvD2DH8n/rKrPJDkvgzkrr13guwEAgMVbV1UHzzjWLOAdxyc5OslHdzQMF9S6IMljdvVAVa3OYKTVzGemh+e7fGYuC0pWhgE+Osnrk9wzyeYkP5LkkAxKPT/cWtu0kHcDAMCk2LF08aiPoauTbJhxnLGAb+Ho4dfrZ7VfP+PabEckWTnPZ3ZpwZtCttbuSvK7wwMAAOiX45JsnHG+ZVyBLNRCh4EBAAD9trG1dvuMYyHJynXDr0fNaj9qxrXZbkoyNc9ndmmhO9j/xV7c1lprv7qQ9wMAwERoNThG3efSuTKDBOO0DOarp6oOzmBVsD/eZfetba2qC4fPvH/4zIrh+Tnz6Xyhw8B+NDuvM7AyyTHDrzdmsKQZAADQY1W1Nsn9ZjQdX1UPTXJLa+3bVfXGJK+sqsszSF5ek+SaDBOR4Ts+luR9rbUdycjZSc6tqi8m+XwGK4odlOSt84ltQclKa+2+u2qvqlVJfm0YzOkLeTcAAEyM5bGD/SlJPjHj/Ozh13Mz2JLk9RkkGm/OYEGtzyR5Umtt84xnTsxgYv0ghNb+tqrukeSsDCbVXzR8Zvak+91a8AT7XWmtbUtyTlU9KIMSz08u5fsBAICl1Vr7ZJI5x4611lqSM4fHXPfcdxdt52Sew75mW9JkZYYvJ/nljt4NAADLwqylhEfW56ToajWw0zPYoRIAAGBBFroa2FwloEOSPC7Jw5P8/gJjAgAAWPAwsFfN0X5rkm8meUGStyzw3QAAMBmWxwT73lroamA2kwQAADo176Sjqg6oqrOr6qe6CAgAACZG+/4k+1Edk1RZmXey0lq7K4O9VI5a+nAAAAAGFjqc68IkJy9lIAAAADMtdIL9S5J8qKq+luRtrbXtSxcSAABMCBPsF2Wvk5WqelySS1prNyY5N8l0kj9N8odV9d0kd816pLXW/uOSRQoAAOxT5lNZ+USSZyV5Z5Kbk9yU5LIuggIAgImgsrIo80lWaniktfb4TqIBAAAYWuicFQAAYA++t5zwiPucFPNdDWyCvnUAAKDP5pusvKOqpvbysEIYAACwYPMdBvbRJF/vIhAAAICZ5pusnNta++tOIgEAAJjBBHsAAOiKpYsXZb5zVgAAAEZCsgIAAPTSXg8Da61JbAAAYB7ss7I4EhAAAKCXTLAHAIAuTVClY9RUVgAAgF5SWQEAgK5YunhRVFYAAIBekqwAAAC9ZBgYAAB0xNLFi6OyAgAA9JLKCgAAdMUE+0VRWQEAAHpJsgIAAPSSYWAAANARE+wXR2UFAADoJZUVAADoign2i6KyAgAA9JLKCgAAdEVlZVFUVgAAgF6SrAAAAL1kGBgAAHTE0sWLo7ICAAD0ksoKAAB0xQT7RVFZAQAAekmyAgAA9JJhYAAA0BXDwBZFZQUAAOgllRUAAOiIpYsXR2UFAADoJckKAADQS4aBAQBAV0ywXxSVFQAAoJdUVgAAoCMm2C+OygoAANBLKisAANAVc1YWRWUFAADoJckKAADQS4aBAQBAVwwDWxSVFQAAoJdUVgAAoCM1PEbd56RQWQEAAHpJsgIAAPSSYWAAANAVE+wXRWUFAAD2YVV1VVW1XRxvmuP+5+7i3s1dxKayAgAAHak2OEbd5zz9YJKVM85PTvJPSd69m2duT3LSjPNOvkvJCgAA7MNaazfOPK+q30zyzST/vPvH2nWdBhbDwAAAoDttTMcCVdXqJM9K8hettd29aW1VfauqvlNVf19VD154r3OTrAAAwGRaV1UHzzjW7MUzT0tySJK37eaey5L8SpKnZpDYrEjyr1V13OLC3ZlkBQAAJtPVSTbMOM7Yi2d+Ncl5rbVr5rqhtfbZ1trbW2sXtdb+OcnPJLkxya8tQcx3Y84KAAB0aXxLCR+XZOOM8y27u7mq7pPkxzJIPvZaa21bVf1bkvvNO8I9UFkBAIDJtLG1dvuMY7fJSpLnJbkhyT/Op5OqWpnkIUmuXWCcc1JZAQCAjiyTpYtTVSsySFbOba1tn3Xt7Um+21o7Y3h+ZpLPJflGBvNbXpHkPkn+bDFx74pkBQAA+LEk907yF7u4du8k0zPOD03yliRHJ7k1yYVJHtta+/elDkqyAgAA+7jW2keS1BzXHj/r/KVJXjqCsCQrAADQmUXue7LgPieECfYAAEAvqawAAEBHlssE+75SWQEAAHpJZQUAALpizsqiqKwAAAC9JFkBAAB6yTAwAADoiAn2iyNZgX3cXz3wuHGHAMvOt9998LhDgGVjatPm5NnjjoLlSrICAABdMcF+UcxZAQAAekmyAgAA9JJhYAAA0BXDwBZFZQUAAOgllRUAAOiIpYsXR2UFAADoJZUVAADoijkri6KyAgAA9JJkBQAA6CXDwAAAoCPVWqqNdlzWqPvrksoKAADQSyorAADQFRPsF0VlBQAA6CXJCgAA0EuGgQEAQEfsYL84KisAAEAvqawAAEBXTLBfFJUVAACgl1RWAACgI+asLI7KCgAA0EuSFQAAoJcMAwMAgK6YYL8oKisAAEAvqawAAEBHTLBfHJUVAACglyQrAABALxkGBgAAXTHBflFUVgAAgF5SWQEAgA5N0oT3UVNZAQAAekllBQAAutLa4Bh1nxNCZQUAAOglyQoAANBLhoEBAEBH7GC/OCorAABAL6msAABAV2wKuSgqKwAAQC9JVgAAgF4yDAwAADpS04Nj1H1OCpUVAACgl1RWAACgKybYL4rKCgAA0EuSFQAAoJcMAwMAgI7YwX5xVFYAAIBeUlkBAICutDY4Rt3nhFBZAQAAekllBQAAOmLOyuKorAAAAL0kWQEAAHrJMDAAAOiKHewXRWUFAADoJZUVAADoiAn2i6OyAgAA+7CqelVVtVnHpXt45plVdWlVba6qr1bVk7uITbICAABcnOSYGcepc91YVY9N8s4kf57kYUnen+T9VXXyUgdlGBgAAHRl+exgv721dt1e3vviJB9urf3v4flvV9XpSX49yQsW0vlcVFYAAGAyrauqg2cca3Zz7/2r6pqquqKq/qqq7r2bex+T5KOz2s4fti8pyQoAAHRkxwT7UR9DVyfZMOM4Y44wL0jy3CRPSvLCJMcn+XRVrZvj/qOTXD+r7fph+5IyDAwAACbTcUk2zjjfsqubWmvnzTj9SlVdkORbSX4ug3kpYyNZAQCArox3U8iNrbXb5/14a7dV1deT3G+OW65LctSstqOG7UvKMDAAAOB7qmptkhOTXDvHLZ9NctqsttOH7UtKsgIAAPuwqnpDVf1IVd13uCzx+5JMZbA8carq7VX1uhmP/EGSJ1XVy6vqgVX1qiSnJDlnqWMzDAwAADqyTHawPy6DxOTwJDcm+UySR7fWbhxev3eS6R03t9b+tap+McnvJnltksuTPK219rXFRb4zyQoAAOzDWmu/sIfrj99F27uTvLurmHaQrAAAQFem2+AYdZ8TwpwVAACglyQrAABALxkGBgAAXRnvPivLnsoKAADQSyorAADQkcoYli4ebXedUlkBAAB6SWUFAAC60trgGHWfE0JlBQAA6CXJCgAA0EuGgQEAQEeqjWGC/eSMAlNZAQAA+kllBQAAumJTyEVRWQEAAHpJsgIAAPSSYWAAANCRai014n1PRt1fl1RWAACAXlJZAQCArkwPj1H3OSFUVgAAgF5SWQEAgI6Ys7I4KisAAEAvSVYAAIBeMgwMAAC6Ygf7RVFZAQAAekllBQAAutLa4Bh1nxNCZQUAAOglyQoAANBLhoEBAEBHqg2OUfc5KVRWAACAXlJZoVOrVk/n2a+4Lqc949asXT+VKy85IOe+/uh86VPrxh0a9JLPDMyt7prKwR+4Kasv35TV37grK++cys3/9bjc+YRD73bfQR+9JQd96rasumZLVtw5lalD98vmB6/NhmcemakjV48pevZZJtgvisoKnXr5G7+Tn3n+jfn4+w7NH595z0xPJ6/5yyvy4EfeMe7QoJd8ZmBuKzZOZf17bsiq727JtvvuP+d9q6+8K9uPXJXbn3pEbvkvx+bOxx2SA/5tY47+zW9k5S3bRhgxsFgqK3TmpIduyhOedlvectYxec+fHJkk+eh7Ds2bP35Z/vMrr81Lf/r+Y44Q+sVnBnZv6tD9cvWbH5jpQ1dl9Tc35ejf/OYu77v1v9xzp7ZNP7g+x/zmN3LQP9+a259+ZNehwvfU9OAYdZ+TQmWFzpz6lNsytT350DsO/17bti0r8uF3HpYHnbIp9zh26xijg/7xmYE9WLUi04euWtCjU0cOnqs7J+i3ONgH9CpZqaozquoLVbWxqm6oqvdX1UnjjouFud/Jd+XqK9Zk0x0r79Z+2UUHJklOePBd4wgLestnBpbWio3bs2LD9qz+5qYc9qarkyRbHnLQmKMC5qNvw8B+JMmbknwhg9hem+QjVfWg1tqdY42MeTvsyO255fqd/wZsR9vhR20fdUjQaz4zsLTu+WuXprYNJhpPrVuZW37lmGz+jxarYMRMsF+UXiUrrbUnzTyvqucmuSHJI5J8ahwxsXCr95/Otq21U/vWLYO2NfsrxcNMPjOwtG74rfumtrWsunpzDvr0bVmx2WcIlpteJSu7sH749ZZdXayqNUnWzGjy1yU9snXziqxavXNmv3rNoG3L5l6NQoSx85mBpbXl5LVJks0PW5e7fvDgHP2yyzO9/4rc8RNHjDky9ilteIy6zwnR2//zVdWKJG9M8i+tta/NcdsZSTbMOK4eTXTsjVtu2C+HHbXzEpE72m6+vu+5MoyWzwx0Z/vRa7Lt+ANy0KdvG3cowDz0NlnJYO7KyUl+YTf3vC6D6suO47gRxMVe+ubFB+S4E7bkwLVTd2t/4MM2JUmuuPiAcYQFveUzA92qrdNZsclQMFhOepmsVNU5SZ6S5AmttTmrJa21La2123ccSTaOLEj26NP/sD4r90ue/Kybv9e2avV0nvjzt+SSCw/MjdfYRRhm8pmBJTDVUndM7dS8+vJNWfXtzdl6oqSf0arWxnJMil6NKaiqSvJHSZ6e5PGttSvHHBKLcNm/HZRPfWB9nnfGtVl/xPZcc+WanP5zt+Soe23N2S+/17jDg97xmYE9W3veTVmxafp7O9EfcOHt3/vzxicN9ii65wsuzabHrs+2e61J239FVn1rcw765K2ZPnBlNvysDSFhOelVspLB0K9fTPLUJBur6uhh+4bWmg0GlqHXv/jeec53r8tpz7g169ZP5cpL9s+Zzz4+X7tg7bhDg17ymYHdO/iDN2W/G78/t+vAC27PgRfcniS584cPydSh++WO0w7N/hffmQM/tyG1tWXqsP2y6YcOyYZnHJmpI1UoGTFLFy9KtR59M1U1VzDPa629bS+ePzjJhsfnqdmvFrbDLQDsybff/ZBxhwDLxtSmzfnms1+XJOuHw/b3CTt+L33CI87IfvvtP9K+t2/fnE9cOBk/815VVlprO28wAAAAy1VLMup1HfpTi1i0Xk6wBwAAkKwAAAC91KthYAAAMEnGsZTwJC1drLICAAD0ksoKAAB0pWUMSxePtrsuqawAAAC9JFkBAAB6yTAwAADoih3sF0VlBQAA6CWVFQAA6Mp0khpDnxNCZQUAAOglyQoAANBLhoEBAEBH7GC/OCorAABAL6msAABAVyxdvCgqKwAAQC+prAAAQFdUVhZFZQUAAOglyQoAAOzDquqMqvpCVW2sqhuq6v1VddIennluVbVZx+aljs0wMAAA6MryGAb2I0nelOQLGeQHr03ykap6UGvtzt08d3uSmUnNkn+jkhUAANiHtdaeNPO8qp6b5IYkj0jyqd0/2q7rMDTJCgAAdGY6SY2hz4F1VXfrfEtrbctevGH98Oste7hvbVV9K4OpJV9K8luttYvnEekembMCAACT6eokG2YcZ+zpgapakeSNSf6ltfa13dx6WZJfSfLUJM/KIK/416o6bpEx343KCgAATKbjkmyccb43VZU3JTk5yam7u6m19tkkn91xXlX/muSSJL+W5LfnHekcJCsAANCRai014gn2M/rb2Fq7fa+fqzonyVOSPK61dvV8+mytbauqf0tyv/k8tyeGgQEAwD6sBs5J8vQkP9pau3IB71iZ5CFJrl3K2FRWAACgK8tj6eI3JfnFDOafbKyqo4ftG1prdyVJVb09yXdba2cMz89M8rkk30hySJJXJLlPkj9bbPgzSVYAAGDf9sLh10/Oan9ekrcN/3zvzFxnLDk0yVuSHJ3k1iQXJnlsa+3flzIwyQoAAHRluiU14srK9Pz6a63tcXHl1trjZ52/NMlL59XRApizAgAA9JJkBQAA6CXDwAAAoCvLY4J9b6msAAAAvaSyAgAAnRlDZSUqKwAAAJ2SrAAAAL1kGBgAAHTFBPtFUVkBAAB6SWUFAAC6Mt0y8gnv89zBvs9UVgAAgF5SWQEAgK606cEx6j4nhMoKAADQS5IVAACglwwDAwCArli6eFFUVgAAgF5SWQEAgK5YunhRVFYAAIBekqwAAAC9ZBgYAAB0xQT7RVFZAQAAekllBQAAutIyhsrKaLvrksoKAADQSyorAADQFXNWFkVlBQAA6CXJCgAA0EuGgQEAQFemp5NMj6HPyaCyAgAA9JLKCgAAdMUE+0VRWQEAAHpJsgIAAPSSYWAAANAVw8AWRWUFAADoJZUVAADoynRLMuJKx7TKCgAAQKdUVgAAoCOtTae10W7SOOr+uqSyAgAA9JJkBQAA6CXDwAAAoCutjX7Cu6WLAQAAuqWyAgAAXWljWLpYZQUAAKBbkhUAAKCXDAMDAICuTE8nNeJ9T+yzAgAA0C2VFQAA6IoJ9ouisgIAAPSSygoAAHSkTU+njXjOSjNnBQAAoFuSFQAAoJcMAwMAgK6YYL8oKisAAEAvqawAAEBXpltSKisLpbICAAD0kmQFAADoJcPAAACgK60lGfG+J4aBAQAAdEtlBQAAOtKmW9qIJ9g3lRUAAIBuSVYAAIBeMgwMAAC60qYz+gn2I+6vQyorAABAL0lWAACgI226jeVYiKp6UVVdVVWbq+qCqnrkHu5/ZlVdOrz/q1X15AV1vBuSFQAA2MdV1c8nOTvJq5M8PMmXk5xfVUfOcf9jk7wzyZ8neViS9yd5f1WdvJRxSVYAAKArbXo8x/y9LMlbWmtvba39e5IXJNmU5FfmuP/FST7cWvvfrbVLWmu/neRLSX59IZ3PRbICAAD7sKpaneQRST66o621Nj08f8wcjz1m5v1D5+/m/gWZyNXAtmdbMjl74QDQM1ObNo87BFg2pu/aMu4Qxmocv5duz7Ydf1xXVTMvbWmt7eofyBFJVia5flb79UkeOEc3R89x/9HzCnYPJi1ZWZckn8mHxh0HAJPs2X8/7ghgOVqX5PZxBzFCW5Nc95l8aEl/eZ+HO5JcPavt1UleNfpQFm7SkpVrkhyXZOO4A2En6zL4wPjnA3vHZwbmx2em39Zl8HvaPqO1trmqjk+yetyxzDBXmeumJFNJjprVflSS6+Z45rp53r8gE5WstNZaku+OOw52NqMEubG1ti/9rQosiM8MzI/PTO/tk/9MWmubk/R+3GhrbWtVXZjktAxW9UpVrRienzPHY58dXn/jjLbTh+1LZqKSFQAAYEHOTnJuVX0xyeeTvCTJQUnemiRV9fYk322tnTG8/w+S/HNVvTzJPyb5hSSnJHn+UgYlWQEAgH1ca+1vq+oeSc7KYJL8RUme1FrbMYn+3kmmZ9z/r1X1i0l+N8lrk1ye5Gmtta8tZVw1GDkF3aqqNUnOSPK6OVahAGbwmYH58ZmBySRZAQAAesmmkAAAQC9JVgAAgF6SrAAAAL0kWQEAAHpJskKnqmpNVf2vqrqmqu6qqguq6vRxxwV9VVVrq+rVVfXhqrqlqlpVPXfccUEfVdUPVtU5VXVxVd1ZVd+uqndV1QPGHRuwNCQrdO1tSV6W5K+SvDjJVJIPVdWp4wwKeuyIJGcm+Q9JvjzmWKDv/meSZyT5WAb/j3lzkscl+VJVnTzOwIClYeliOlNVj0xyQZJXtNbeMGzbP8nXktzQWnvsOOODPhruFXFoa+26qjolyReSPK+19rbxRgb9U1WPTfLF1trWGW33T/LVJO9prT1rbMEBS0JlhS79bAaVlDfvaGitbU7y50keU1X3Gldg0FettS2ttevGHQcsB621f52ZqAzbLk9ycQbVSWCZk6zQpYcl+Xpr7fZZ7Z8ffn3oaMMBYNJVVSU5KslN444FWDzJCl06Jsm1u2jf0XbsCGMBYN/wS0numeRvxx0IsHiSFbp0QJItu2jfPOM6ACyJqnpgkjcl+WySc8ccDrAEJCt06a4ka3bRvv+M6wCwaFV1dJJ/TLIhyc+21qbGHBKwBPYbdwBMtGszKMXPdszw6zUjjAWACVVV65Ocl+SQJD/cWvP/F5gQKit06aIkD6iqg2e1P2rGdQBYsOGS+B9M8oAkT2mt/fuYQwKWkGSFLr0nycokz9/RMNxD4nlJLmitfWdcgQGw/FXVygwm0j8myTNba58dc0jAEjMMjM601i6oqncneV1VHZnkG0mek+S+SX51nLFBn1XVr2cwnGXHink/VVXHDf/8R621DWMJDPrn/yT56QwqK4dV1d02gWytvWMsUQFLxg72dGpYnn9NkmclOTTJV5L8dmvt/LEGBj1WVVcluc8cl49vrV01umigv6rqk0l+ZK7rrbUaXTRAFyQrAABAL5mzAgAA9JJkBQAA6CXJCgAA0EuSFQAAoJckKwAAQC9JVgAAgF6SrAAAAL0kWQEAAHpJsgKwl6rqqqp624zzx1dVq6rHjy2oWWbHuJv7WlW9agHvf+7w2VMWEt8c73xVVdmhGICdSFaAZWHGL8k7js1V9fWqOqeqjhp3fPNRVU9eSKIAAPua/cYdAMA8nZnkyiT7Jzk1yQuTPLmqTm6tbRpxLJ9KckCSrfN87slJXpTkVUsdEABMEskKsNyc11r74vDPf1ZVNyd5WZKnJnnnrh6oqoNaa3cudSCttekkm5f6vQDAgGFgwHL38eHX45Okqt5WVXdU1YlV9aGq2pjkr4bXVlTVS6rq4uEwsuur6k+r6tCZL6yBV1bV1VW1qao+UVUPnt3xXHNWqupRw75vrao7q+orVfXiHfFlUFXZMW+kzZyvsdQx7q2quk9V/b+quqyq7qqqm6vq3VV13zkeOXAY181VdXtVvX12jMP3/kRVfXr4c9hYVf+4mDgB2LeorADL3YnDrzfPaNsvyflJPpPkvyfZMTzsT5M8N8lbk/xhBgnOryd5WFX9UGtt2/C+s5K8MsmHhsfDk3wkyeo9BVNVpyf5hyTXJvmDJNcl+Q9JnjI8/9MkxyY5Pckv7+IVncc4hx9M8tgkf5Pk6iT3zWCI3Ser6kG7GGJ3TpLbMhjKdtLw3vtU1eNba234s/jlJOdm8M/ifyY5cHjfZ6rqYa21qxYYKwD7CMkKsNysr6ojMpiz8kMZzGG5K4MEYYc1Sd7dWjtjR0NVnZrkPyf5pdbaX89o/0SSDyd5ZpK/rqp7JPkfSf4xyU/N+MX795L81u4Cq6qVGSQb1yZ5aGvtthnXKklaa5+tqq8nOb219o5Zz3ce4278Y2vtPbPi+WCSzyZ5RpK/nHX/1iSn7UiequpbSV6f5KeSfKCq1maQbP1Za+35M955bpLLhnE+PwCwG4aBAcvNR5PcmOQ7GVQB7kjy9Nbad2fd98ezzp+ZZEOSf6qqI3YcSS4cvuMJw/t+LIPqxB/tSAKG3rgXsT0sg0rIG2cmKkky611zGUWMu9Rau2vHn6tqVVUdnuQbGVRPHr6LR948o8qTDH7e2zNYPCAZVI4OSfLOWd/LVJILZnwvADAnlRVguXlRkq9n8Ivx9UkuG050n2l7BkOZZrp/kvVJbpjjvUcOv95n+PXymRdbazdW1a17iG3HkLSv7eG+uYwixl2qqgOSnJHkeUnumaRmXF6/i0dm931HVV2bwfCxZPC9JN+fUzTb7QuJE4B9i2QFWG4+P2M1sLls2UUCsyKDJOCX5njmxkVHtnjjjPGPMkhU3pjB0K8NSVoG1auFVOF3PPPLGczbmW37At4JwD5GsgLsK76ZwfCpf5k55GkXvjX8ev8kV+xoHM4T2Wm1q130kSQnZzBcbS5zDQkbRYxz+dkk57bWXj7jfftnMJRrV+6f5BMz7l2b5JgMJvsn3/9Z3NBa293PAgDmZM4KsK94V5KVSX579oWq2q+qDhmefjTJtiS/sWNS/NBL9qKPL2WwYeVLZrxvRx8z33XnsO1u94woxrlM5e5Dv5LkN4bx7Mrzq2rVjPMXZvAXYOcNz8/PYKjXb826L8n3EisA2C2VFWCf0Fr756r60yRnVNVDM1jmd1sGFYJnJnlxkvcM5328IYP5G/9QVR/KYOL8TyS5aQ99TFfVC5N8MMlFVfXWDFYGe2CSByf58eGtFw6//mFVnZ9kqrX2N6OIcTf+IckvV9WGJP+e5DEZVHlunuP+1Uk+VlXvymDp4v+awVLRHxj+LG4f/iz+MsmXqupvMhjGdu8kP5nkXzJYkhkA5iRZAfYZrbUXVNWFSX4tyWszmDdxVZJ3ZPDL8w6vzGBn+hdksGrVBUmemMFSwXvq4/yqekKS30ny8gwq2N9M8pYZt703gzkiv5DkWRlUNP5mVDHO4cUZVFd+KYNlof8lg2Tl/Dnu//XhvWclWZXknUn+28zVyVprf11V1yT5zSSvyGBJ6e8m+XQG+8gAwG7V3q2mCQAAMFrmrAAAAL0kWQEAAHpJsgIAAPSSZAUAAOglyQoAANBLkhUAAKCXJCsAAEAvSVYAAIBekqwAAAC9JFkBAAB6SbICAAD0kmQFAADoJckKAADQS/8/OA47EBRXanAAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -401,7 +392,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "cca76db8", "metadata": {}, @@ -418,7 +408,7 @@ { "data": { "text/plain": [ - "0.9906846833902615" + "0.9633110554163186" ] }, "execution_count": 13, @@ -431,7 +421,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "5332e2b4", "metadata": {}, @@ -440,7 +429,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "45dbdd1e", "metadata": {}, @@ -456,7 +444,6 @@ "execution_count": 14, "id": "218d0983", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -474,7 +461,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "ce21c2dc", "metadata": {}, @@ -483,7 +469,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "4153c7db", "metadata": {}, @@ -502,7 +487,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "b5e254ad", "metadata": {}, @@ -515,7 +499,6 @@ "execution_count": 16, "id": "233a57da", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -527,7 +510,7 @@ "outputs": [ { "data": { - "image/png": "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HwEAAACATggfAQAAAIBOCB8BAAAAgE4IHwEAAACATggfAQAAAIBOzJnuAta0qqok2ya5ZrprAQAAAIARNT/Jha21tqJO61z4mF7weMF0FwEAAAAAI+4uSf6yog7rYvg4NuLxLjH6EQAAAABW1fz0BvetNFtbF8PHMde01q6e7iIAAAAAYJT0nmo4OSacAQAAAAA6IXwEAAAAADohfAQAAAAAOiF8BAAAAAA6sS5POAMAAACwTjn99NPnJ9kmBqRxR8uSXJHkqoULFy6bqp1Wa22q9jUSqupOSZYkWWC2awAAAGBdcPrpp89K8rrZs2c/q6rWSzL56YpZZ7TWbmmtXbxs2bJ3JzlheSHkquRrRj4CAAAAzHyvW2+99V689dZb37TxxhtfX1Xr1mg0Vqq1lltuuWXOkiVLdl68ePG/3XzzzfdJ8q+ru18jHwEAAABmsNNPP/1Os2fP/tm222673pZbbnnFdNfD2u+SSy7Z7KKLLrru1ltvfcjChQvvkJ+tSr7m/n4AAACAmW3rqlpv4403vn66C2E0zJs377qqmpdk69Xdl/ARAAAAYGablaTcas1kVd32SNDVzg6FjwAAAABAJ4SPAAAAAEAnhI8AAAAAsBbZa6+9dt1rr712ne46poLwEQAAAADoxJzpLgAAAACA6bHTa09eON01JMmit//16dNdA90w8hEAAAAAlmPZsmW59tpra+U9mYjwEQAAAICR9fKXv3zbqlr461//eu5BBx200/z58+8/f/78+z/lKU/Z6Zprrrkt+7r55pvzqle9apvtt99+t/XXX3/P7bbb7r4vfelLt7vhhhtuFyxut912991///3vfuyxx95pt912u9eGG26453vf+94tTjrppPlVtfCTn/zkJq94xSu22XLLLe+38cYb7/HYxz72rldcccXsG264oZ773Oduv+mmm+6+0UYb7fGUpzxlp/H7/sAHPrDZgx/84Htsuummu6+//vp73u1ud7vPO97xji3W1Gc1Hdx2DQAAAMDIe+pTn3rX7bff/qY3vOENf/nFL36x0Ze+9KXNt9hii5s/+tGP/iVJnv70p+903HHHbfbYxz72qkMPPfSSn/zkJxt/+MMf3vr3v//9Bt/61rfOHdzXH//4xw2e+9zn3vXv/u7vLnv2s5992b3uda+lY+ve8573bLPBBhss+6d/+qeLzznnnLmf/exntzzkkENaVWXJkiWzX/3qV1/44x//eONjjz12s5122mnpu9/97ovGtv3kJz+55a677nrD4x//+MVz5sxpX/3qV+/82te+dodly5bl8MMPv2zNfVprjvARAAAAgJG32267XX/MMcf8eez9lVdeOeeLX/zi5h/96Ef/ctppp2143HHHbfa0pz3t8i9+8YtjfS574QtfeMsnPvGJrU488cT5Bx544DVj25533nlzv/zlL5990EEHXT3WdtJJJ81PkltvvTX/+7//+/u5c+e2JLn88svnnHzyyZvus88+S7773e+eM7bvPfbYY4Ojjz5688Hw8bTTTvvdvHnz2tj7173udZfts88+u3zkIx/ZaqaGj267BgAAAGDkHXroobcL7/7qr/7qmsWLF8+58sorZ51wwgkLkuTVr371JYN9Xv/611+cJCeeeOKCwfbtttvupsHgcdDTnva0K8aCxyTZa6+9rmut5ZBDDrlisN+ee+553cUXX7z+zTfffFvbYPB4xRVXzL7ooovmPPShD73mggsumHvFFVfMXuWTHgFGPgIAAAAw8u5617veNPh+k002uTXpjUz885//vP6sWbNyn/vcZ+lgnx122OGW+fPn33r++eevP9i+/fbb367fuG1ud5wFCxbcmiQ77rjjHdqXLVuWK664YvbWW299a5J885vf3PjII4/c7he/+MXGN9544+0GBV555ZWzN9tss1snf8ajQfgIAAAAwMibM2fimKu12wYbZtasWW3CTuNssMEGy1b1OHPmzJlw3621SpLf/OY3cw888MBdd9555xvf/OY3n7/DDjvcPHfu3GUnnXTSgk996lNbLVu23EOONOEjAAAAADPajjvueNOyZcty5plnbrDnnnveONZ+/vnnz7nmmmtmb7/99jetaPupcOyxxy646aab6sQTTzxnl112ue143/nOd+7U9bGnk2c+AgAAADCjPeEJT1iSJO9+97u3Gmx/61vfulWSHHjggUu6rmH27N4jHQdHYl5xxRWzv/SlL23W9bGnk5GPAAAAAMxoe++99w1PfvKTrzj66KM3X7Jkyex99tnnmp/+9KcbH3fccZs98pGPXDw403VXDjjggCVvetOb7nLAAQfc/TnPec5l11577ezPfe5zm2+66aa3XHbZZet1ffzpYuQjAAAAADPeF7/4xUWveMUrLvzlL3+58Rvf+Mbtf/SjH80/9NBDLz7hhBP+uCaOv/vuuy896qijzq2qvOlNb9r+qKOO2uJZz3rWZS9+8YsvWfnWo6sGh3quC6rqTkmWJFnQWptwynQAABi002tPXmf+07zo7X9d010DAFPr9NNPv+ecOXO+vssuu1y70UYb3bjyLVjXXX/99RucffbZ82655ZbHLly48Hfj169KvmbkIwAAAADQCeEjAAAAANAJ4SMAAAAA0AnhIwAAAADQCeEjAAAAANAJ4SMAAAAA0AnhIwAAAADQCeEjAAAAANAJ4SMAAAAA0AnhIwAAAADQCeEjAAAAANAJ4SMAAAAA0AnhIwAAAACsI6pq4ctf/vJt19Tx5qypAwEAAACwljlywcLpLiFJcuSS06e7hLXJxz72sU0vvfTSOf/yL/9y6XTXsrqMfAQAAACAtciXvvSlTT/+8Y9vNd11TAXhIwAAAABM4Prrr69bb711wnVXX321XG0SfEgAAAAAjLQ//elP6z31qU/dccstt7zf+uuvv+d2221332c+85k73HjjjZUkZ5111vqPe9zj7rpgwYL7b7jhhnvsvvvu9/ziF7+4YHAfJ5100vyqWviJT3xik3/8x3/cdsstt7zfvHnz9rzqqqtmH3TQQTtttNFGe/zmN7+Z+7CHPezuG2+88R5PfvKTd06S7bbb7r4HHXTQTuNr2muvvXbda6+9dh2//3//93/f5KUvfel2m2+++e4bbrjhHg9/+MPvfs4556w3uN2pp5664MILL1y/qhZW1cLtttvuvmPrb7jhhvrnf/7nbXfYYYfd1l9//T233nrr+73oRS+6yw033FCDx7/hhhvqec973vabbLLJ7htvvPEeD3/4w+9+7rnnrpc1zDMfAQAAABhZixYtWu9BD3rQva655prZBx988OX3vOc9b/jLX/6y/oknnrjJtddeO+uyyy6rfffd91433njjrOc+97mXbLbZZrccffTRmz/zmc+8+0033XTus571rMWD+3vnO9+57XrrrdcOPfTQi5cuXTpr7ty5LUluvfXWetzjHrfLAx/4wGuPPPLI8zfaaKNlw9T7rne9a5uqyste9rKLLr300vU+9alPbfXIRz5y11//+te/mTdvXjv88MMvet3rXneXiy++eL1//dd/PT9J5s+fv6xfQx71qEfd/fTTT5938MEHX36ve93rhjPPPHPDT37yk1uec845c7/97W+fO3acZzzjGTsdf/zxmx544IFX7r333teeeuqpd3r84x+/y9Af9JCEjwAAAACMrJe//OXbXXHFFeudcsopv913332vH2t///vff+GyZcvyghe8YPsrrrhizte//vXfP+Yxj7k2SQ477LDL73Of+9zn8MMP3/6Zz3zm4tmzZ9+2v6VLl9YZZ5xx1rx589rgcW666aY68MADr/rwhz/8l9Wpd8mSJXN+97vf/XqTTTZZliQLFy68/nnPe95d3//+92/xhje84dInPelJV3/wgx+86eqrr579kpe85MrBbT/+8Y9vetppp93pq1/96m3nkiS77bbbDa9+9at3/Na3vrXxox71qOtOO+20DY8//vhN/+7v/u6yz33uc+clyeGHH37ZE57whJ3/8Ic/bLg69a8qt10DAAAAMJJuvfXWfOtb37rz/vvvv3gweBwza9asfOc731lw3/ve97rBsG7BggXLnvWsZ1124YUXrv/zn/98g8Ftnva0p10xPngcc9hhh122ujX/7d/+7RVjwWOSHHLIIVdtscUWN3/jG99YsKLtkuTYY4/d5K53veuN97vf/W686KKL5owtj33sY69Jkm9/+9vzk+SEE05YkCSvfOUrLxnc/hWveMUld9xrt4x8BAAAAGAkXXjhhXOuvfba2fe+971vWF6fiy66aP099tjj2vHt9773vW9MknPPPXfuAx/4wBvH2nfeeeelE+1n9uzZ7a53vetNq1vzLrvscuPg+1mzZmWHHXZYesEFF6y/sm0XLVq0wR//+McNtt12290nWn/ppZeulyR//vOf1581a1bufe973+5c7nvf+9440XZdEj4CAAAAQN9GG2004ajH9ddfvw3enr0yt956a1al/2QsW7Ysu+yyyw3vfOc7z59o/c4777za4ehUEz4CAAAAMJK23XbbW+bNm3frWWedtdznGG6zzTY3nXvuuRuMb//tb3+7QZLc7W53m3Ck42QtWLDgliVLltwhZbzwwgvX33777e8QBp599tm3q2XZsmU577zz5u666663jd6sqvGbJUl23HHHpb/97W83esITnnDNrFnLf5rijjvueNOyZcty1llnzd19991vO78zzzzzDp9D1zzzEQAAAICRNHv27DzqUY9afMopp9z5e9/73kbj1y9btiyPeMQjlpx55pkbf/vb3954rP3qq6+e9R//8R+bb7vttjftueeeq3Ur8o477rj0jDPOmHfjjTfelhgeffTRCy6++OIJb6P+r//6r82uuuqq2zK5o446apPLLrtsvUc/+tFLxto22mijZddcc80dAs2DDjroqksvvXS99773vZuPX3fttdfW1VdfPStJDjzwwCVJ8u53v3urwT7vec97thq/XdeMfAQAAABgZL3nPe/5y/e///07PeYxj9n14IMPvvxe97rXDRdddNF6J5xwwqannXba74488siLjj/++E2f9KQn7fK85z3v0k033fSWo48+evO//OUvc4866qhzV/fW6Oc///mXf/3rX99kv/322+XJT37yVeeee+7c4447btPtt99+whGVCxYsuOXBD37wPZ/5zGdefskll6z3qU99aqsddthh6WGHHXb5WJ899tjjupNPPnmT5z//+Xd54AMfeP38+fNvPfjgg5e85CUvueLYY4/d5NWvfvWO3/3ud+fvvffe19566631u9/9boOTTz550xNOOOEP++677/UPechDbjjggAOu/PznP7/F1VdfPXvvvfe+9pRTTrnTokWL5q7WyQ5B+AgAAACwrjpyyenTXcLq2nnnnW/+0Y9+9LvXvOY12/73f//3pp///Odnb7nlljftv//+V8+bN2/Z5ptv3r73ve/99hWveMVdPv3pT2950003zbrHPe5x/Re+8IVznv70py9Z+RFW7KCDDrr6iCOOuOCjH/3oVm984xu332233a477rjjznnFK16x/UT9X/nKV170q1/9aqMPfOAD21x//fWz9t5776s/8YlPnDd//vzbZsB+1ateddkvf/nLjY455pjNP/WpT83edtttbzr44IPPnD17dr7xjW+c+5a3vGXLL33pS5t/85vf3GSDDTZYtv322y99/vOff8luu+122yjOL33pS4sOPfTQW77yla9s+q1vfevOD37wg6/56le/evbd7373+63uOa+Kam3CZ2jOWFV1pyRLkixorV093fUAALD22+m1J68z/2le9Pa/nvghUwCMrNNPP/2ec+bM+fouu+xy7UYbbbTGZzum56STTpp/4IEH3uPTn/70H5/znOdcNd31rMj111+/wdlnnz3vlltueezChQt/N379quRrnvkIAAAAAHRC+AgAAAAAdEL4CAAAAAB0Yq2acKaq9k3yqiQLk2yT5Emtta+M63Ov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", + "image/png": "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b7yxldTXkukwZyUAAAAA3M0rXvGK7atq4W9+85t5hxxyyC7z589/4Pz58x/49Kc/fZfrr7/+ztzrtttuy6tf/ertdtxxxz3nzp27zw477HD/l7/85TvcfPPNd1mJeYcddrj/gQceeK8TTzxxkz333PM+G2ywwT7vfe97tzrllFPmV9XCT33qU5u98pWv3G7rrbd+wEYbbbT3QQcddM+rr7569s0331wveMELdtx888332nDDDfd++tOfvsvovj/wgQ9s8dCHPvQvNt98873mzp27z2677Xa/f/u3f9tqbX1W00WnRlYCAAAAwOp6xjOecc8dd9zx1je+8Y1//uUvf7nhCSecsOVWW21128c+9rE/J8mznvWsXU466aQtDjrooGsPP/zwy3/6059u9JGPfGTb3//+9+t/+9vfvmCwrz/+8Y/rv+AFL7jnc57znCuf97znXXmf+9xn2ci+97znPdutv/76y//xH//xsvPPP3/eZz/72a0PO+ywVlVZunTp7Ne85jWX/uQnP9noxBNP3GKXXXZZ9u53v/vORaE/9alPbb3HHnvc/MQnPnHJnDlz2te+9rVNX/e61+20fPnyHHnkkVeuvU+r24SVAAAAAExre+65501f/OIXLxx5fc0118w5/vjjt/zYxz725zPOOGODk046aYtnPvOZVx1//PEjba588YtffPsnPvGJbb761a/OP/jgg68fOfaiiy6a96Uvfem8Qw455LqRbaeccsr8JLnjjjvy4x//+Pfz5s1rSXLVVVfNOfXUUzd/xCMesfR73/ve+SN977333usfd9xxWw6GlWeccca5g7eTv/71r7/yEY94xO4f/ehHtxFW/i+3gQMAAAAwrR1++OF3Cfv+8i//8volS5bMueaaa2adfPLJC5LkNa95zeWDbd7whjdcliRf/epXFwxu32GHHW4dDCoHPfOZz7x6JKhMkn333ffG1loOO+ywqwfb7bPPPjdedtllc2+77bY7tw0GlVdfffXsxYsXz3n4wx9+/SWXXDLv6quvnr3ab3odZWQlAAAAANPaPe95z1sHX2+22WZ3JL2RjxdeeOHcWbNm5X73u9+ywTY77bTT7fPnz7/j4osvnju4fccdd7xLu1HH3OU8CxYsuCNJdt5557ttX758ea6++urZ22677R1J8q1vfWujo48+eodf/vKXG91yyy13GUB4zTXXzN5iiy3uGP87XncJKwEAAACY1ubMGTviau1/F/GeNWvWuFb0Xn/99Zev7nnmzJkzZt+ttUqS3/72t/MOPvjgPXbddddb3vKWt1y800473TZv3rzlp5xyyoJjjjlmm+XLV3jKGUdYCQAAAMA6a+edd751+fLlOfvss9ffZ599bhnZfvHFF8+5/vrrZ++44463ruz4yXDiiScuuPXWW+urX/3q+bvvvvud5/vud7+7yZo+93RjzkoAAAAA1llPecpTlibJu9/97m0Gt7/tbW/bJkkOPvjgpWu6htmze1NSDo70vPrqq2efcMIJW6zpc083RlYCAAAAsM7ab7/9bn7a05529XHHHbfl0qVLZz/iEY+4/mc/+9lGJ5100haPecxjlgyuBL6mPPnJT1765je/+R5PfvKT7/X85z//yhtuuGH25z73uS0333zz26+88sr11vT5pxMjKwEAAABYpx1//PGLXvnKV176q1/9aqM3velNO/7oRz+af/jhh1928skn/3FtnH+vvfZaduyxx15QVXnzm9+847HHHrvVc5/73Ctf+tKXXr7qo2eWGhx+OhNU1SZJliZZ0Fobcxl6AABg3bHL605dp/7oWfSOJ9VU1wBML2eeeea958yZ843dd9/9hg033PCWVR/BTHfTTTetf9555218++23H7Rw4cJzR+9fk/makZUAAAAAQCcIKwEAAACAThBWAgAAAACdIKwEAAAAADpBWAkAAAAAdIKwEgAAAADoBGElAAAAANAJwkoAAAAAoBOElQAAAABAJwgrAQAAAIBOEFYCAAAAAJ0grAQAAAAAOkFYCQAAAAAzRFUtfMUrXrH9VNexInOmugAAAAAApsjRCxZOdQlJkqOXnjnVJXTJv//7v29+xRVXzPnnf/7nK6a6lrXNyEoAAAAA6JATTjhh849//OPbTHUdU0FYCQAAAABjuOmmm+qOO+4Yc991110nV1sDfKgAAAAATGt/+tOf1nvGM56x89Zbb/2AuXPn7rPDDjvc/9nPfvZOt9xySyXJOeecM/cJT3jCPRcsWPDADTbYYO+99trr3scff/yCwT5OOeWU+VW18BOf+MRm//AP/7D91ltv/YCNN954n2uvvXb2IYccssuGG264929/+9t5j3zkI++10UYb7f20pz1t1yTZYYcd7n/IIYfsMrqmfffdd4999913j9H9f/KTn9zs5S9/+Q5bbrnlXhtssMHej3rUo+51/vnnrzd43Omnn77g0ksvnVtVC6tq4Q477HD/kf0333xz/dM//dP2O+20055z587dZ9ttt33AS17yknvcfPPNNXj+m2++uV74whfuuNlmm+210UYb7f2oRz3qXhdccMF66ThzVgIAAAAwbS1atGi9hzzkIfe5/vrrZx966KFX3fve9775z3/+89yvfvWrm91www2zrrzyytp///3vc8stt8x6wQtecPkWW2xx+3HHHbfls5/97HvdeuutFzz3uc9dMtjfO9/5zu3XW2+9dvjhh1+2bNmyWfPmzWtJcscdd9QTnvCE3R/84AffcPTRR1+84YYbLh+m3ne9613bVVX+/u//fvEVV1yx3jHHHLPNYx7zmD1+85vf/HbjjTduRx555OLXv/7197jsssvW+9d//deLk2T+/PnL+zXksY997L3OPPPMjQ899NCr7nOf+9x89tlnb/CpT31q6/PPP3/ed77znQtGzvO3f/u3u3zlK1/Z/OCDD75mv/32u+H000/f5IlPfOLuQ3/Qa4mwEgAAAIBp6xWveMUOV1999XqnnXba7/bff/+bRra///3vv3T58uX5u7/7ux2vvvrqOd/4xjd+//jHP/6GJDniiCOuut/97ne/I488csdnP/vZS2bPnn1nf8uWLauzzjrrnI033rgNnufWW2+tgw8++NqPfOQjf55IvUuXLp1z7rnn/mazzTZbniQLFy686YUvfOE93//+92/1xje+8YqnPvWp133wgx+89brrrpv9spe97JrBYz/+8Y9vfsYZZ2zyta997c73kiR77rnnza95zWt2/va3v73RYx/72BvPOOOMDb7yla9s/pznPOfKz33ucxclyZFHHnnlU57ylF3/8Ic/bDCR+tc0t4EDAAAAMC3dcccd+fa3v73pgQceuGQwqBwxa9asfPe7311w//vf/8bBcG/BggXLn/vc51556aWXzv3FL36x/uAxz3zmM68eHVSOOOKII66caM1/8zd/c/VIUJkkhx122LVbbbXVbd/85jcXrOy4JDnxxBM3u+c973nLAx7wgFsWL148Z+Rx0EEHXZ8k3/nOd+Ynycknn7wgSV71qlddPnj8K1/5ysvv3mu3GFkJAAAAwLR06aWXzrnhhhtm3/e+9715RW0WL148d++9975h9Pb73ve+tyTJBRdcMO/BD37wLSPbd91112Vj9TN79ux2z3ve89aJ1rz77rvfMvh61qxZ2WmnnZZdcsklc1d17KJFi9b/4x//uP7222+/11j7r7jiivWS5MILL5w7a9as3Pe+973Le7n//e9/y1jHdYmwEgAAAAD6NtxwwzFHVc6dO7cN3i6+KnfccUdWp/14LF++PLvvvvvN73znOy8ea/+uu+464TB1qgkrAQAAAJiWtt9++9s33njjO84555wVzsO43Xbb3XrBBResP3r77373u/WTZLfddhtzJOV4LViw4PalS5feLZW89NJL5+644453Cw/PO++8u9SyfPnyXHTRRfP22GOPO0eHVtXow5IkO++887Lf/e53Gz7lKU+5ftasFc/uuPPOO9+6fPnynHPOOfP22muvO9/f2WeffbfPoWvMWQkAAADAtDR79uw89rGPXXLaaadt+v3vf3/D0fuXL1+eRz/60UvPPvvsjb7zne9sNLL9uuuum/Uf//EfW26//fa37rPPPhO6NXrnnXdedtZZZ218yy233JkwHnfccQsuu+yyMW/r/s///M8trr322jszuWOPPXazK6+8cr3HPe5xS0e2bbjhhsuvv/76uwWghxxyyLVXXHHFeu9973u3HL3vhhtuqOuuu25Wkhx88MFLk+Td7373NoNt3vOe92wz+riuMbISAAAAgGnrPe95z59/8IMfbPL4xz9+j0MPPfSq+9znPjcvXrx4vZNPPnnzM84449yjjz568Ve+8pXNn/rUp+7+whe+8IrNN9/89uOOO27LP//5z/OOPfbYCyZ6q/aLXvSiq77xjW9sdsABB+z+tKc97doLLrhg3kknnbT5jjvuOOaIzQULFtz+0Ic+9N7Pfvazr7r88svXO+aYY7bZaaedlh1xxBFXjbTZe++9bzz11FM3e9GLXnSPBz/4wTfNnz//jkMPPXTpy172sqtPPPHEzV7zmtfs/L3vfW/+fvvtd8Mdd9xR55577vqnnnrq5ieffPIf9t9//5se9rCH3fzkJz/5ms9//vNbXXfddbP322+/G0477bRNFi1aNG9Cb3YtEFYCAAAAzFRHLz1zqkuYqF133fW2H/3oR+e+9rWv3f6//uu/Nv/85z8/e+utt771wAMPvG7jjTdevuWWW7bvf//7v3vlK195j09/+tNb33rrrbP+4i/+4qYvfOEL5z/r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", "text/plain": [ "
" ] @@ -550,7 +533,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "8dd63529", "metadata": {}, @@ -563,7 +545,6 @@ "execution_count": 17, "id": "8bc72789", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -576,8 +557,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Average influence of corrupted points: -0.051440768\n", - "Average influence of other points: 0.033988394\n" + "Average influence of corrupted points: -1.0782924\n", + "Average influence of other points: 0.10896263\n" ] } ], @@ -593,7 +574,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "f1e747b1", "metadata": {}, @@ -602,7 +582,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "b00a6164", "metadata": {}, @@ -615,7 +594,6 @@ "execution_count": 18, "id": "462d545e", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -634,7 +612,6 @@ "execution_count": 19, "id": "1e096222", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -646,7 +623,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -670,7 +647,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "656e14dd", "metadata": {}, @@ -679,7 +655,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "3bf8c4dd", "metadata": {}, @@ -692,7 +667,6 @@ "execution_count": 20, "id": "efdb4050", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -702,18 +676,18 @@ }, "outputs": [ { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "908d881822e94d7e82078457ab81e35d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Conjugate gradient: 0%| | 0/53 [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(mean_train_influences, mean_ekfac_train_influences)\n", + "plt.scatter(\n", + " mean_train_influences[:num_corrupted_idxs],\n", + " mean_ekfac_train_influences[:num_corrupted_idxs],\n", + " facecolors=\"none\",\n", + " edgecolors=\"r\",\n", + " s=60,\n", + ")\n", + "plt.xlabel(\"Direct Influence Score\")\n", + "plt.ylabel(\"EK-FAC Influence Score\")\n", + "plt.title(\"Influence of training points - EK-FAC vs direct method\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "de31676a", + "metadata": {}, + "source": [ + "The above plot shows a good correlation between the EK-FAC and the direct method. Corrupted points have been circled in red, and in both the direct and approximate case they are correcly identified as having negative influence on the model's accuracy. This is confirmed by explicit calculation of the Pearson and Spearman correlation coefficients." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "8537c4b1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pearson Correlation EK-FAC vs direct 0.9608164875442669\n", + "Spearman Correlation EK-FAC vs direct 0.8946217598307178\n" + ] + } + ], + "source": [ + "print(\n", + " f\"Pearson Correlation EK-FAC vs direct\",\n", + " pearsonr(mean_ekfac_train_influences, mean_train_influences).statistic,\n", + ")\n", + "print(\n", + " f\"Spearman Correlation EK-FAC vs direct\",\n", + " spearmanr(mean_ekfac_train_influences, mean_train_influences).statistic,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "3a88b8c5", + "metadata": {}, + "source": [ + "The correlation between the EK-FAC and the direct method is quite good, and it improves significantly if we just keep top-20 highest absolute influences." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "a3256f00", + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pearson Correlation EK-FAC vs direct - top-20 influences 0.9901775015427601\n", + "Spearman Correlation EK-FAC vs direct - top-20 influences 0.9428571428571428\n" + ] + } + ], + "source": [ + "highest_inlfuence_idxs = np.argsort(np.abs(mean_train_influences))[-20:]\n", + "print(\n", + " f\"Pearson Correlation EK-FAC vs direct - top-20 influences\",\n", + " pearsonr(\n", + " mean_ekfac_train_influences[highest_inlfuence_idxs],\n", + " mean_train_influences[highest_inlfuence_idxs],\n", + " ).statistic,\n", + ")\n", + "print(\n", + " f\"Spearman Correlation EK-FAC vs direct - top-20 influences\",\n", + " spearmanr(\n", + " mean_ekfac_train_influences[highest_inlfuence_idxs],\n", + " mean_train_influences[highest_inlfuence_idxs],\n", + " ).statistic,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9a0629d3", + "metadata": {}, + "source": [ + "When we calculate influence scores, typically we are more interested in assessing which training points have the highest or lowest impact on the model rather than having a precise estimate of the influence value. EK-FAC then provides a fast and memory-efficient way to calculate a coarse influence ranking of the training points which scales very well even to the largest neural networks." + ] + }, + { + "cell_type": "markdown", + "id": "03728578", + "metadata": {}, + "source": [ + "## Conclusions" + ] + }, + { "cell_type": "markdown", "id": "9245791c", "metadata": { - "editable": true, "slideshow": { "slide_type": "" }, @@ -799,7 +1029,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.9.16" }, "vscode": { "interpreter": { diff --git a/notebooks/support/torch.py b/notebooks/support/torch.py index d90ea4895..7286dea51 100644 --- a/notebooks/support/torch.py +++ b/notebooks/support/torch.py @@ -74,8 +74,6 @@ def __init__( layers.append(nn.Tanh()) layers.pop() - layers.append(nn.Softmax(dim=-1)) - self.layers = nn.Sequential(*layers) def forward(self, x: torch.Tensor) -> torch.Tensor: @@ -257,6 +255,48 @@ def load(self) -> Losses: return pkl.load(file) +class ImdbDataset(torch.utils.data.Dataset): + """ + A PyTorch Dataset that takes in an HuggingFace Dataset object and tokenizes it. + The objects returned by __getitem__ are PyTorch tensors, with x being a tuple of + (input_ids, attention_mask), ready to be fed into a model, and y being the label. + It also returns the original text, for printing and debugging purposes. + """ + + def __init__(self, dataset, tokenizer): + self.tokenizer = tokenizer + self.tokenized_ds = dataset.map(self.preprocess_function, batched=True) + self.encodings = self.tokenized_ds["input_ids"] + self.attn_mask = self.tokenized_ds["attention_mask"] + self.labels = self.tokenized_ds["label"] + + def preprocess_function(self, examples): + return self.tokenizer(examples["text"], truncation=True, padding=True) + + def __getitem__(self, idx): + x = torch.tensor([self.encodings[idx], self.attn_mask[idx]]) + y = torch.tensor(self.labels[idx]) + text = self.tokenized_ds[idx]["text"] + return x, y, text + + def __len__(self): + return len(self.labels) + + +class ModelLogitsWrapper(torch.nn.Module): + """ + A wrapper around a PyTorch model that returns only the logits and not the loss or + the attention mask. + """ + + def __init__(self, model): + super().__init__() + self.model = model + + def forward(self, x): + return self.model(x[:, 0], x[:, 1]).logits + + def process_imgnet_io( df: pd.DataFrame, labels: dict ) -> Tuple[torch.Tensor, torch.Tensor]: diff --git a/requirements-docs.txt b/requirements-docs.txt index a4e0b016e..ca554638c 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -1,6 +1,6 @@ mike markdown-captions -mkdocs==1.5.2 +mkdocs==1.5.3 mkdocstrings[python]>=0.18 mkdocs-alias-plugin>=0.6.0 mkdocs-autorefs @@ -11,10 +11,9 @@ mkdocs-glightbox mknotebooks>=0.8.0 pygments mkdocs-literate-nav -mkdocs-material +mkdocs-material>=9.5.0 mkdocs-section-index mkdocs-macros-plugin -neoteroi-mkdocs # Needed for card grid on home page pypandoc; sys_platform == 'darwin' pypandoc_binary; sys_platform != 'darwin' GitPython diff --git a/requirements-notebooks.txt b/requirements-notebooks.txt index c45e0a104..11002c375 100644 --- a/requirements-notebooks.txt +++ b/requirements-notebooks.txt @@ -1,4 +1,5 @@ torch==2.0.1 torchvision==0.15.2 datasets==2.14.6 -pillow==9.3.0 +pillow==10.0.1 +transformers==4.35.0 diff --git a/setup.py b/setup.py index c0d6766f6..fd5d22229 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ package_data={"pydvl": ["py.typed"]}, packages=find_packages(where="src"), include_package_data=True, - version="0.8.0", + version="0.8.1", description="The Python Data Valuation Library", install_requires=[ line diff --git a/src/pydvl/__init__.py b/src/pydvl/__init__.py index 84ff4a221..adcd959a3 100644 --- a/src/pydvl/__init__.py +++ b/src/pydvl/__init__.py @@ -7,4 +7,4 @@ The two main modules you will want to look at are [value][pydvl.value] and [influence][pydvl.influence]. """ -__version__ = "0.8.0" +__version__ = "0.8.1" diff --git a/src/pydvl/influence/base_influence_function_model.py b/src/pydvl/influence/base_influence_function_model.py index 18b2ce8ed..0a9a9f33b 100644 --- a/src/pydvl/influence/base_influence_function_model.py +++ b/src/pydvl/influence/base_influence_function_model.py @@ -36,6 +36,12 @@ def __init__(self): ) +class NotImplementedLayerRepresentationException(ValueError): + def __init__(self, module_id: str): + message = f"Only Linear layers are supported, but found module {module_id} requiring grad." + super().__init__(message) + + """Type variable for tensors, i.e. sequences of numbers""" TensorType = TypeVar("TensorType", bound=Collection) DataLoaderType = TypeVar("DataLoaderType", bound=Iterable) diff --git a/src/pydvl/influence/influence_calculator.py b/src/pydvl/influence/influence_calculator.py index 7164edf1d..dd2b4383f 100644 --- a/src/pydvl/influence/influence_calculator.py +++ b/src/pydvl/influence/influence_calculator.py @@ -288,8 +288,8 @@ def func(x_numpy: NDArray, y_numpy: NDArray, model: InfluenceFunctionModel): chunk_shape = (chunk_size, self.n_parameters) chunk_array = da.from_delayed( delayed(func)( - x_chunk.squeeze().tolist(), - y_chunk.squeeze().tolist(), + x_chunk.squeeze()[()], + y_chunk.squeeze()[()], self.influence_function_model, ), dtype=x.dtype, @@ -400,10 +400,10 @@ def func( block_array = da.from_delayed( delayed(func)( - x_test_chunk.squeeze().tolist(), - y_test_chunk.squeeze().tolist(), - x_chunk.squeeze().tolist(), - y_chunk.squeeze().tolist(), + x_test_chunk.squeeze()[()], + y_test_chunk.squeeze()[()], + x_chunk.squeeze()[()], + y_chunk.squeeze()[()], self.influence_function_model, ), shape=block_shape, @@ -506,9 +506,9 @@ def func( block_array = da.from_delayed( delayed(func)( - z_test_chunk.squeeze().tolist(), - x_chunk.squeeze().tolist(), - y_chunk.squeeze().tolist(), + z_test_chunk.squeeze()[()], + x_chunk.squeeze()[()], + y_chunk.squeeze()[()], self.influence_function_model, ), shape=block_shape, diff --git a/src/pydvl/influence/torch/__init__.py b/src/pydvl/influence/torch/__init__.py index 9e90fd9df..6caf74d92 100644 --- a/src/pydvl/influence/torch/__init__.py +++ b/src/pydvl/influence/torch/__init__.py @@ -2,5 +2,6 @@ ArnoldiInfluence, CgInfluence, DirectInfluence, + EkfacInfluence, LissaInfluence, ) diff --git a/src/pydvl/influence/torch/influence_function_model.py b/src/pydvl/influence/torch/influence_function_model.py index 3b7c0a688..287291032 100644 --- a/src/pydvl/influence/torch/influence_function_model.py +++ b/src/pydvl/influence/torch/influence_function_model.py @@ -8,7 +8,7 @@ import logging from abc import ABC, abstractmethod -from typing import Callable, Optional +from typing import Callable, Dict, List, Optional, Tuple import torch from torch import nn as nn @@ -20,6 +20,7 @@ from ..base_influence_function_model import ( InfluenceFunctionModel, InfluenceMode, + NotImplementedLayerRepresentationException, UnsupportedInfluenceModeException, ) from .functional import ( @@ -32,7 +33,11 @@ hessian, model_hessian_low_rank, ) -from .util import flatten_dimensions +from .util import ( + EkfacRepresentation, + empirical_cross_entropy_loss_fn, + flatten_dimensions, +) logger = logging.getLogger(__name__) @@ -87,7 +92,7 @@ def _loss_grad(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: return flatten_dimensions(grads.values(), shape=shape) @log_duration - def _flat_loss_mixed_grad(self, x: torch.Tensor, y: torch.Tensor): + def _flat_loss_mixed_grad(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: mixed_grads = create_per_sample_mixed_derivative_function( self.model, self.loss )(self.model_params, x, y) @@ -187,7 +192,7 @@ def _non_symmetric_values( x: torch.Tensor, y: torch.Tensor, mode: InfluenceMode = InfluenceMode.Up, - ): + ) -> torch.Tensor: if mode == InfluenceMode.Up: if x_test.shape[0] <= x.shape[0]: factor = self.influence_factors(x_test, y_test) @@ -304,6 +309,16 @@ def influences_from_factors( def _solve_hvp(self, rhs: torch.Tensor) -> torch.Tensor: pass + def to(self, device: torch.device): + self.model = self.model.to(device) + self._model_params = { + k: p.detach().to(device) + for k, p in self.model.named_parameters() + if p.requires_grad + } + self._model_device = device + return self + class DirectInfluence(TorchInfluenceFunctionModel): r""" @@ -402,15 +417,9 @@ def _solve_hvp(self, rhs: torch.Tensor) -> torch.Tensor: ).T def to(self, device: torch.device): - self.hessian = self.hessian.to(device) - self.model = self.model.to(device) - self._model_device = device - self._model_params = { - k: p.detach().to(device) - for k, p in self.model.named_parameters() - if p.requires_grad - } - return self + if self.is_fitted: + self.hessian = self.hessian.to(device) + return super().to(device) class CgInfluence(TorchInfluenceFunctionModel): @@ -537,16 +546,6 @@ def reg_hvp(v: torch.Tensor): batch_cg[idx] = batch_result return batch_cg - def to(self, device: torch.device): - self.model = self.model.to(device) - self._model_params = { - k: p.detach().to(device) - for k, p in self.model.named_parameters() - if p.requires_grad - } - self._model_device = device - return self - @staticmethod def _solve_cg( hvp: Callable[[torch.Tensor], torch.Tensor], @@ -873,6 +872,600 @@ def _solve_hvp(self, rhs: torch.Tensor) -> torch.Tensor: return result.t() def to(self, device: torch.device): - return ArnoldiInfluence( - self.model.to(device), self.loss, self.low_rank_representation.to(device) + if self.is_fitted: + self.low_rank_representation = self.low_rank_representation.to(device) + return super().to(device) + + +class EkfacInfluence(TorchInfluenceFunctionModel): + r""" + Approximately solves the linear system Hx = b, where H is the Hessian of a model with the empirical + categorical cross entropy as loss function and b is the given right-hand side vector. + It employs the EK-FAC method [@george2018fast], which is based on the kronecker + factorization of the Hessian first introduced in [@martens2015optimizing]. + Contrary to the other influence function methods, this implementation can only + be used for classification tasks with a cross entropy loss function. However, it + is much faster than the other methods and can be used efficiently for very large + datasets and models. For more information, see [Eigenvalue Corrected K-FAC][ekfac]. + + Args: + model: Instance of [torch.nn.Module][torch.nn.Module]. + update_diagonal: If True, the diagonal values in the ekfac representation are + refitted from the training data after calculating the KFAC blocks. + This provides a more accurate approximation of the Hessian, but it is + computationally more expensive. + hessian_regularization: Regularization of the hessian. + progress: If True, display progress bars. + """ + + ekfac_representation: EkfacRepresentation + + def __init__( + self, + model: nn.Module, + update_diagonal: bool = False, + hessian_regularization: float = 0.0, + progress: bool = False, + ): + + super().__init__(model, torch.nn.functional.cross_entropy) + self.hessian_regularization = hessian_regularization + self.update_diagonal = update_diagonal + self.active_layers = self._parse_active_layers() + self.progress = progress + + @property + def is_fitted(self): + try: + return self.ekfac_representation is not None + except AttributeError: + return False + + def _parse_active_layers(self) -> Dict[str, torch.nn.Module]: + """ + Find all layers of the model that have parameters that require grad + and return them in a dictionary. If a layer has some parameters that require + grad and some that do not, raise an error. + """ + active_layers: Dict[str, torch.nn.Module] = {} + for m_name, module in self.model.named_modules(): + if len(list(module.children())) == 0 and len(list(module.parameters())) > 0: + layer_requires_grad = [ + param.requires_grad for param in module.parameters() + ] + if all(layer_requires_grad): + active_layers[m_name] = module + elif any(layer_requires_grad): + raise ValueError( + f"Layer {m_name} has some parameters that require grad and some that do not." + f"This is not supported. Please set all parameters of the layer to require grad." + ) + return active_layers + + @staticmethod + def _init_layer_kfac_blocks( + module: torch.nn.Module, + ) -> Tuple[torch.Tensor, torch.Tensor]: + """ + Initialize the tensors that will store the cumulative forward and + backward KFAC blocks for the layer. + """ + if isinstance(module, nn.Linear): + with_bias = module.bias is not None + sG = module.out_features + sA = module.in_features + int(with_bias) + forward_x_layer = torch.zeros((sA, sA), device=module.weight.device) + grad_y_layer = torch.zeros((sG, sG), device=module.weight.device) + else: + raise NotImplementedLayerRepresentationException(module_id=str(module)) + return forward_x_layer, grad_y_layer + + @staticmethod + def _get_layer_kfac_hooks( + m_name: str, + module: torch.nn.Module, + forward_x: Dict[str, torch.Tensor], + grad_y: Dict[str, torch.Tensor], + ) -> Tuple[Callable, Callable]: + """ + Create the hooks that will be used to compute the forward and backward KFAC + blocks for the layer. The hooks are registered to the layer and will be called + during the forward and backward passes. At each pass, the hooks will update the + tensors that store the cumulative forward and backward KFAC blocks for the layer. + These tensors are stored in the forward_x and grad_y dictionaries. + """ + if isinstance(module, nn.Linear): + with_bias = module.bias is not None + + def input_hook(m, x, y): + x = x[0].reshape(-1, module.in_features) + if with_bias: + x = torch.cat( + (x, torch.ones((x.shape[0], 1), device=module.weight.device)), + dim=1, + ) + forward_x[m_name] += torch.mm(x.t(), x) + + def grad_hook(m, m_grad, m_out): + m_out = m_out[0].reshape(-1, module.out_features) + grad_y[m_name] += torch.mm(m_out.t(), m_out) + + else: + raise NotImplementedLayerRepresentationException(module_id=str(module)) + return input_hook, grad_hook + + def _get_kfac_blocks( + self, + data: DataLoader, + ) -> Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: + """ + Compute the KFAC blocks for each layer of the model, using the provided data. + Returns the average forward and backward KFAC blocks for each layer in + dictionaries. + """ + forward_x = {} + grad_y = {} + hooks = [] + data_len = 0 + + for m_name, module in self.active_layers.items(): + forward_x[m_name], grad_y[m_name] = self._init_layer_kfac_blocks(module) + layer_input_hook, layer_grad_hook = self._get_layer_kfac_hooks( + m_name, module, forward_x, grad_y + ) + hooks.append(module.register_forward_hook(layer_input_hook)) + hooks.append(module.register_full_backward_hook(layer_grad_hook)) + + for x, *_ in tqdm( + data, disable=not self.progress, desc="K-FAC blocks - batch progress" + ): + data_len += x.shape[0] + pred_y = self.model(x) + loss = empirical_cross_entropy_loss_fn(pred_y) + loss.backward() + + for key in forward_x.keys(): + forward_x[key] /= data_len + grad_y[key] /= data_len + + for hook in hooks: + hook.remove() + + return forward_x, grad_y + + def fit(self, data: DataLoader) -> EkfacInfluence: + """ + Compute the KFAC blocks for each layer of the model, using the provided data. + It then creates an EkfacRepresentation object that stores the KFAC blocks for + each layer, their eigenvalue decomposition and diagonal values. + """ + forward_x, grad_y = self._get_kfac_blocks(data) + layers_evecs_a = {} + layers_evect_g = {} + layers_diags = {} + for key in self.active_layers.keys(): + evals_a, evecs_a = torch.linalg.eigh(forward_x[key]) + evals_g, evecs_g = torch.linalg.eigh(grad_y[key]) + layers_evecs_a[key] = evecs_a + layers_evect_g[key] = evecs_g + layers_diags[key] = torch.kron(evals_g.view(-1, 1), evals_a.view(-1, 1)) + + self.ekfac_representation = EkfacRepresentation( + self.active_layers.keys(), + self.active_layers.values(), + layers_evecs_a.values(), + layers_evect_g.values(), + layers_diags.values(), + ) + if self.update_diagonal: + self._update_diag(data) + return self + + @staticmethod + def _init_layer_diag(module: torch.nn.Module) -> torch.Tensor: + """ + Initialize the tensor that will store the updated diagonal values of the layer. + """ + if isinstance(module, nn.Linear): + with_bias = module.bias is not None + sG = module.out_features + sA = module.in_features + int(with_bias) + layer_diag = torch.zeros((sA * sG), device=module.weight.device) + else: + raise NotImplementedLayerRepresentationException(module_id=str(module)) + return layer_diag + + def _get_layer_diag_hooks( + self, + m_name: str, + module: torch.nn.Module, + last_x_kfe: Dict[str, torch.Tensor], + diags: Dict[str, torch.Tensor], + ) -> Tuple[Callable, Callable]: + """ + Create the hooks that will be used to update the diagonal values of the layer. + The hooks are registered to the layer and will be called during the forward and + backward passes. At each pass, the hooks will update the tensor that stores the + updated diagonal values of the layer. This tensor is stored in the diags + dictionary. + """ + evecs_a, evecs_g = self.ekfac_representation.get_layer_evecs() + if isinstance(module, nn.Linear): + with_bias = module.bias is not None + + def input_hook(m, x, y): + x = x[0].reshape(-1, module.in_features) + if with_bias: + x = torch.cat( + (x, torch.ones((x.shape[0], 1), device=module.weight.device)), + dim=1, + ) + last_x_kfe[m_name] = torch.mm(x, evecs_a[m_name]) + + def grad_hook(m, m_grad, m_out): + m_out = m_out[0].reshape(-1, module.out_features) + gy_kfe = torch.mm(m_out, evecs_g[m_name]) + diags[m_name] += torch.mm( + gy_kfe.t() ** 2, last_x_kfe[m_name] ** 2 + ).view(-1) + + else: + raise NotImplementedLayerRepresentationException(module_id=str(module)) + return input_hook, grad_hook + + def _update_diag( + self, + data: DataLoader, + ) -> EkfacInfluence: + """ + Compute the updated diagonal values for each layer of the model, using the + provided data. It then updates the EkfacRepresentation object that stores the + KFAC blocks for each layer, their eigenvalue decomposition and diagonal values. + """ + if not self.is_fitted: + raise ValueError( + "EkfacInfluence must be fitted before updating the diagonal." + ) + diags = {} + last_x_kfe: Dict[str, torch.Tensor] = {} + hooks = [] + data_len = 0 + + for m_name, module in self.active_layers.items(): + diags[m_name] = self._init_layer_diag(module) + input_hook, grad_hook = self._get_layer_diag_hooks( + m_name, module, last_x_kfe, diags + ) + hooks.append(module.register_forward_hook(input_hook)) + hooks.append(module.register_full_backward_hook(grad_hook)) + + for x, *_ in tqdm( + data, disable=not self.progress, desc="Update Diagonal - batch progress" + ): + data_len += x.shape[0] + pred_y = self.model(x) + loss = empirical_cross_entropy_loss_fn(pred_y) + loss.backward() + + for key in diags.keys(): + diags[key] /= data_len + + for hook in hooks: + hook.remove() + + self.ekfac_representation = EkfacRepresentation( + self.ekfac_representation.layer_names, + self.ekfac_representation.layers_module, + self.ekfac_representation.evecs_a, + self.ekfac_representation.evecs_g, + diags.values(), + ) + + return self + + @staticmethod + def _solve_hvp_by_layer( + rhs: torch.Tensor, + ekfac_representation: EkfacRepresentation, + hessian_regularization: float, + ) -> Dict[str, torch.Tensor]: + """ + Compute the Hessian Vector Product for each layer of the model, using the + provided ekfac representation and hessian regularization. It returns a + dictionary containing the Hessian Vector Product for each layer. + """ + hvp_layers = {} + start_idx = 0 + for layer_id, (_, evecs_a, evecs_g, diag) in ekfac_representation: + end_idx = start_idx + diag.shape[0] + rhs_layer = rhs[:, start_idx : end_idx - evecs_g.shape[0]].reshape( + rhs.shape[0], evecs_g.shape[0], -1 + ) + bias_layer_b = rhs[:, end_idx - evecs_g.shape[0] : end_idx] + rhs_layer = torch.cat([rhs_layer, bias_layer_b.unsqueeze(2)], dim=2) + v_kfe = torch.einsum( + "bij,jk->bik", + torch.einsum("ij,bjk->bik", evecs_g.t(), rhs_layer), + evecs_a, + ) + inv_diag = 1 / (diag.reshape(*v_kfe.shape[1:]) + hessian_regularization) + inv_kfe = torch.einsum("bij,ij->bij", v_kfe, inv_diag) + inv = torch.einsum( + "bij,jk->bik", + torch.einsum("ij,bjk->bik", evecs_g, inv_kfe), + evecs_a.t(), + ) + hvp_layers[layer_id] = torch.cat( + [inv[:, :, :-1].reshape(rhs.shape[0], -1), inv[:, :, -1]], dim=1 + ) + start_idx = end_idx + return hvp_layers + + @log_duration + def _solve_hvp(self, rhs: torch.Tensor) -> torch.Tensor: + x = rhs.clone() + start_idx = 0 + layer_hvp = self._solve_hvp_by_layer( + rhs, self.ekfac_representation, self.hessian_regularization + ) + for hvp in layer_hvp.values(): + end_idx = start_idx + hvp.shape[1] + x[:, start_idx:end_idx] = hvp + start_idx = end_idx + x.detach_() + return x + + def influences_by_layer( + self, + x_test: torch.Tensor, + y_test: torch.Tensor, + x: Optional[torch.Tensor] = None, + y: Optional[torch.Tensor] = None, + mode: InfluenceMode = InfluenceMode.Up, + ) -> Dict[str, torch.Tensor]: + """ + Compute the influence of the data on the test data for each layer of the model. + + Args: + x_test: model input to use in the gradient computations of + $H^{-1}\nabla_{\theta} \ell(y_{\text{test}}, + f_{\theta}(x_{\text{test}}))$ + y_test: label tensor to compute gradients + x: optional model input to use in the gradient computations + $\nabla_{\theta}\ell(y, f_{\theta}(x))$, + resp. $\nabla_{x}\nabla_{\theta}\ell(y, f_{\theta}(x))$, + if None, use $x=x_{\text{test}}$ + y: optional label tensor to compute gradients + mode: enum value of [InfluenceType] + [pydvl.influence.base_influence_model.InfluenceType] + + Returns: + A dictionary containing the influence of the data on the test data for each + layer of the model, with the layer name as key. + """ + if not self.is_fitted: + raise ValueError( + "Instance must be fitted before calling influence methods on it" + ) + + if x is None: + + if y is not None: + raise ValueError( + "Providing labels y, without providing model input x " + "is not supported" + ) + + return self._symmetric_values_by_layer( + x_test.to(self.model_device), + y_test.to(self.model_device), + mode, + ) + + if y is None: + raise ValueError( + "Providing model input x without providing labels y is not supported" + ) + + return self._non_symmetric_values_by_layer( + x_test.to(self.model_device), + y_test.to(self.model_device), + x.to(self.model_device), + y.to(self.model_device), + mode, + ) + + def influence_factors_by_layer( + self, + x: torch.Tensor, + y: torch.Tensor, + ) -> Dict[str, torch.Tensor]: + """ + Computes the approximation of + + \[H^{-1}\nabla_{\theta} \ell(y, f_{\theta}(x))\] + + for each layer of the model separately. + + Args: + x: model input to use in the gradient computations + y: label tensor to compute gradients + + Returns: + A dictionary containing the influence factors for each layer of the model, + with the layer name as key. + """ + if not self.is_fitted: + raise ValueError( + "Instance must be fitted before calling influence methods on it" + ) + + return self._solve_hvp_by_layer( + self._loss_grad(x.to(self.model_device), y.to(self.model_device)), + self.ekfac_representation, + self.hessian_regularization, + ) + + def influences_from_factors_by_layer( + self, + z_test_factors: Dict[str, torch.Tensor], + x: torch.Tensor, + y: torch.Tensor, + mode: InfluenceMode = InfluenceMode.Up, + ) -> Dict[str, torch.Tensor]: + """ + Computation of + + \[ \langle z_{\text{test_factors}}, + \nabla_{\theta} \ell(y, f_{\theta}(x)) \rangle \] + + for the case of up-weighting influence, resp. + + \[ \langle z_{\text{test_factors}}, + \nabla_{x} \nabla_{\theta} \ell(y, f_{\theta}(x)) \rangle \] + + for the perturbation type influence case for each layer of the model separately. + The gradients are meant to be per sample of the batch $(x, y)$. + + Args: + z_test_factors: pre-computed tensor, approximating + $H^{-1}\nabla_{\theta} \ell(y_{\text{test}}, + f_{\theta}(x_{\text{test}}))$ + x: model input to use in the gradient computations + $\nabla_{\theta}\ell(y, f_{\theta}(x))$, + resp. $\nabla_{x}\nabla_{\theta}\ell(y, f_{\theta}(x))$ + y: label tensor to compute gradients + mode: enum value of [InfluenceType] + [pydvl.influence.twice_differentiable.InfluenceType] + + Returns: + A dictionary containing the influence of the data on the test data for each + layer of the model, with the layer name as key. + """ + if mode == InfluenceMode.Up: + total_grad = self._loss_grad( + x.to(self.model_device), y.to(self.model_device) + ) + start_idx = 0 + influences = {} + for layer_id, layer_z_test in z_test_factors.items(): + end_idx = start_idx + layer_z_test.shape[1] + influences[layer_id] = layer_z_test @ total_grad[:, start_idx:end_idx].T + start_idx = end_idx + return influences + elif mode == InfluenceMode.Perturbation: + total_mixed_grad = self._flat_loss_mixed_grad( + x.to(self.model_device), y.to(self.model_device) + ) + start_idx = 0 + influences = {} + for layer_id, layer_z_test in z_test_factors.items(): + end_idx = start_idx + layer_z_test.shape[1] + influences[layer_id] = torch.einsum( + "ia,j...a->ij...", + layer_z_test, + total_mixed_grad[:, start_idx:end_idx], + ) + start_idx = end_idx + return influences + else: + raise UnsupportedInfluenceModeException(mode) + + def _non_symmetric_values_by_layer( + self, + x_test: torch.Tensor, + y_test: torch.Tensor, + x: torch.Tensor, + y: torch.Tensor, + mode: InfluenceMode = InfluenceMode.Up, + ) -> Dict[str, torch.Tensor]: + """ + Similar to _non_symmetric_values, but computes the influence for each layer + separately. Returns a dictionary containing the influence for each layer, + with the layer name as key. + """ + if mode == InfluenceMode.Up: + if x_test.shape[0] <= x.shape[0]: + fac = self.influence_factors_by_layer(x_test, y_test) + values = self.influences_from_factors_by_layer(fac, x, y, mode=mode) + else: + fac = self.influence_factors_by_layer(x, y) + values = self.influences_from_factors_by_layer( + fac, x_test, y_test, mode=mode + ) + elif mode == InfluenceMode.Perturbation: + fac = self.influence_factors_by_layer(x_test, y_test) + values = self.influences_from_factors_by_layer(fac, x, y, mode=mode) + else: + raise UnsupportedInfluenceModeException(mode) + return values + + def _symmetric_values_by_layer( + self, x: torch.Tensor, y: torch.Tensor, mode: InfluenceMode + ) -> Dict[str, torch.Tensor]: + """ + Similar to _symmetric_values, but computes the influence for each layer + separately. Returns a dictionary containing the influence for each layer, + with the layer name as key. + """ + grad = self._loss_grad(x, y) + fac = self._solve_hvp_by_layer( + grad, self.ekfac_representation, self.hessian_regularization ) + + if mode == InfluenceMode.Up: + values = {} + start_idx = 0 + for layer_id, layer_fac in fac.items(): + end_idx = start_idx + layer_fac.shape[1] + values[layer_id] = layer_fac @ grad[:, start_idx:end_idx].T + start_idx = end_idx + elif mode == InfluenceMode.Perturbation: + values = self.influences_from_factors_by_layer(fac, x, y, mode=mode) + else: + raise UnsupportedInfluenceModeException(mode) + return values + + def explore_hessian_regularization( + self, + x: torch.Tensor, + y: torch.Tensor, + regularization_values: List[float], + ) -> Dict[float, Dict[str, torch.Tensor]]: + """ + Efficiently computes the influence for input x and label y for each layer of the + model, for different values of the hessian regularization parameter. This is done + by computing the gradient of the loss function for the input x and label y only once + and then solving the Hessian Vector Product for each regularization value. This is + useful for finding the optimal regularization value and for exploring + how robust the influence values are to changes in the regularization value. + + Args: + x: model input to use in the gradient computations + y: label tensor to compute gradients + regularization_values: list of regularization values to use + + Returns: + A dictionary containing with keys being the regularization values and values + being dictionaries containing the influences for each layer of the model, + with the layer name as key. + """ + grad = self._loss_grad(x, y) + influences_by_reg_value = {} + for reg_value in regularization_values: + reg_factors = self._solve_hvp_by_layer( + grad, self.ekfac_representation, reg_value + ) + values = {} + start_idx = 0 + for layer_id, layer_fac in reg_factors.items(): + end_idx = start_idx + layer_fac.shape[1] + values[layer_id] = layer_fac @ grad[:, start_idx:end_idx].T + start_idx = end_idx + influences_by_reg_value[reg_value] = values + return influences_by_reg_value + + def to(self, device: torch.device): + if self.is_fitted: + self.ekfac_representation.to(device) + return super().to(device) diff --git a/src/pydvl/influence/torch/util.py b/src/pydvl/influence/torch/util.py index 757cb7fbb..394cf535a 100644 --- a/src/pydvl/influence/torch/util.py +++ b/src/pydvl/influence/torch/util.py @@ -1,5 +1,6 @@ import logging import math +from dataclasses import dataclass from functools import partial from typing import ( Collection, @@ -453,3 +454,75 @@ def __call__( ) ) ) + + +@dataclass(frozen=True) +class EkfacRepresentation: + r""" + Container class for the EKFAC representation of the Hessian. + It can be iterated over to get the layers names and their corresponding module, + eigenvectors and diagonal elements of the factorized Hessian matrix. + + Args: + layer_names: Names of the layers. + layers_module: The layers. + evecs_a: The a eigenvectors of the ekfac representation. + evecs_g: The g eigenvectors of the ekfac representation. + diags: The diagonal elements of the factorized Hessian matrix. + """ + layer_names: Iterable[str] + layers_module: Iterable[torch.nn.Module] + evecs_a: Iterable[torch.Tensor] + evecs_g: Iterable[torch.Tensor] + diags: Iterable[torch.Tensor] + + def __iter__(self): + return iter( + zip( + self.layer_names, + zip(self.layers_module, self.evecs_a, self.evecs_g, self.diags), + ) + ) + + def get_layer_evecs( + self, + ) -> Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: + """ + It returns two dictionaries, one for the a eigenvectors and one for the g + eigenvectors, with the layer names as keys. The eigenvectors are in the same + order as the layers in the model. + """ + evecs_a_dict = {layer_name: evec_a for layer_name, (_, evec_a, _, _) in self} + evecs_g_dict = {layer_name: evec_g for layer_name, (_, _, evec_g, _) in self} + return evecs_a_dict, evecs_g_dict + + def to(self, device: torch.device) -> "EkfacRepresentation": + return EkfacRepresentation( + self.layer_names, + [layer.to(device) for layer in self.layers_module], + [evec_a.to(device) for evec_a in self.evecs_a], + [evec_g.to(device) for evec_g in self.evecs_g], + [diag.to(device) for diag in self.diags], + ) + + +def empirical_cross_entropy_loss_fn( + model_output: torch.Tensor, *args, **kwargs +) -> torch.Tensor: + """ + Computes the empirical cross entropy loss of the model output. This is the + cross entropy loss of the model output without the labels. The function takes + all the usual arguments and keyword arguments of the cross entropy loss + function, so that it is compatible with the PyTorch cross entropy loss + function. However, it ignores everything except the first argument, which is + the model output. + + Args: + model_output: The output of the model. + """ + probs_ = torch.softmax(model_output, dim=1) + log_probs_ = torch.log(probs_) + log_probs_ = torch.where( + torch.isfinite(log_probs_), log_probs_, torch.zeros_like(log_probs_) + ) + return torch.sum(log_probs_ * probs_.detach() ** 0.5) diff --git a/src/pydvl/parallel/futures/ray.py b/src/pydvl/parallel/futures/ray.py index 1a9658744..b15eef9e0 100644 --- a/src/pydvl/parallel/futures/ray.py +++ b/src/pydvl/parallel/futures/ray.py @@ -9,7 +9,6 @@ from weakref import WeakSet, ref import ray -from deprecate import deprecated from pydvl.parallel.config import ParallelConfig @@ -44,12 +43,6 @@ class RayExecutor(Executor): any. See [CancellationPolicy][pydvl.parallel.backend.CancellationPolicy] """ - @deprecated( - target=True, - deprecated_in="0.7.0", - remove_in="0.8.0", - args_mapping={"cancel_futures_on_exit": "cancel_futures"}, - ) def __init__( self, max_workers: Optional[int] = None, diff --git a/src/pydvl/utils/types.py b/src/pydvl/utils/types.py index 1a915c33c..18a22bd26 100644 --- a/src/pydvl/utils/types.py +++ b/src/pydvl/utils/types.py @@ -23,7 +23,7 @@ ] IndexT = TypeVar("IndexT", bound=np.int_) -NameT = TypeVar("NameT", bound=np.object_) +NameT = TypeVar("NameT", np.object_, np.int_) R = TypeVar("R", covariant=True) Seed = Union[int, Generator] diff --git a/src/pydvl/utils/utility.py b/src/pydvl/utils/utility.py index b975c0ff2..1afbfdeb3 100644 --- a/src/pydvl/utils/utility.py +++ b/src/pydvl/utils/utility.py @@ -38,7 +38,7 @@ from pydvl.utils.score import Scorer from pydvl.utils.types import SupervisedModel -__all__ = ["Utility", "DataUtilityLearning", "MinerGameUtility", "GlovesGameUtility"] +__all__ = ["Utility", "DataUtilityLearning"] logger = logging.getLogger(__name__) @@ -356,120 +356,3 @@ def __call__(self, indices: Iterable[int]) -> float: def data(self) -> Dataset: """Returns the wrapped utility's [Dataset][pydvl.utils.dataset.Dataset].""" return self.utility.data - - -class MinerGameUtility(Utility): - r"""Toy game utility that is used for testing and demonstration purposes. - - Consider a group of n miners, who have discovered large bars of gold. - - If two miners can carry one piece of gold, then the payoff of a - coalition $S$ is: - - $${ - v(S) = \left\{\begin{array}{lll} - \mid S \mid / 2 & \text{, if} & \mid S \mid \text{ is even} \\ - ( \mid S \mid - 1)/2 & \text{, if} & \mid S \mid \text{ is odd} - \end{array}\right. - }$$ - - If there are more than two miners and there is an even number of miners, - then the core consists of the single payoff where each miner gets 1/2. - - If there is an odd number of miners, then the core is empty. - - Taken from [Wikipedia](https://en.wikipedia.org/wiki/Core_(game_theory)) - - Args: - n_miners: Number of miners that participate in the game. - """ - - def __init__(self, n_miners: int, **kwargs): - if n_miners <= 2: - raise ValueError(f"n_miners, {n_miners} should be > 2") - self.n_miners = n_miners - - x = np.arange(n_miners)[..., np.newaxis] - # The y values don't matter here - y = np.zeros_like(x) - - self.data = Dataset(x_train=x, y_train=y, x_test=x, y_test=y) - - def __call__(self, indices: Iterable[int]) -> float: - n = len(tuple(indices)) - if n % 2 == 0: - return n / 2 - else: - return (n - 1) / 2 - - def _initialize_utility_wrapper(self): - pass - - def exact_least_core_values(self) -> Tuple[NDArray[np.float_], float]: - if self.n_miners % 2 == 0: - values = np.array([0.5] * self.n_miners) - subsidy = 0.0 - else: - values = np.array( - [(self.n_miners - 1) / (2 * self.n_miners)] * self.n_miners - ) - subsidy = (self.n_miners - 1) / (2 * self.n_miners) - return values, subsidy - - def __repr__(self) -> str: - return f"{self.__class__.__name__}(n={self.n_miners})" - - -class GlovesGameUtility(Utility): - r"""Toy game utility that is used for testing and demonstration purposes. - - In this game, some players have a left glove and others a right glove. - Single gloves have a worth of zero while pairs have a worth of 1. - - The payoff of a coalition $S$ is: - - $${ - v(S) = \min( \mid S \cap L \mid, \mid S \cap R \mid ) - }$$ - - Where $L$, respectively $R$, is the set of players with left gloves, - respectively right gloves. - - Args: - left: Number of players with a left glove. - right: Number of player with a right glove. - - """ - - def __init__(self, left: int, right: int, **kwargs): - self.left = left - self.right = right - - x = np.empty(left + right)[..., np.newaxis] - # The y values don't matter here - y = np.zeros_like(x) - - self.data = Dataset(x_train=x, y_train=y, x_test=x, y_test=y) - - def __call__(self, indices: Iterable[int]) -> float: - left_sum = float(np.sum(np.asarray(indices) < self.left)) - right_sum = float(np.sum(np.asarray(indices) >= self.left)) - return min(left_sum, right_sum) - - def _initialize_utility_wrapper(self): - pass - - def exact_least_core_values(self) -> Tuple[NDArray[np.float_], float]: - if self.left == self.right: - subsidy = -0.5 - values = np.array([0.5] * (self.left + self.right)) - elif self.left < self.right: - subsidy = 0.0 - values = np.array([1.0] * self.left + [0.0] * self.right) - else: - subsidy = 0.0 - values = np.array([0.0] * self.left + [1.0] * self.right) - return values, subsidy - - def __repr__(self) -> str: - return f"{self.__class__.__name__}(L={self.left}, R={self.right})" diff --git a/src/pydvl/value/games.py b/src/pydvl/value/games.py new file mode 100644 index 000000000..ef942ebcf --- /dev/null +++ b/src/pydvl/value/games.py @@ -0,0 +1,637 @@ +""" +This module provides several predefined games and, depending on the game, +the corresponding Shapley values, Least Core values or both of them, for +benchmarking purposes. + +## References + +[^1]: Castro, J., Gómez, D. and Tejada, J., 2009. + [Polynomial calculation of the Shapley value based on sampling](http://www.sciencedirect.com/science/article/pii/S0305054808000804). + Computers & Operations Research, 36(5), pp.1726-1730. + +""" +from __future__ import annotations + +from abc import ABC, abstractmethod +from functools import lru_cache +from typing import Iterable, Optional, Tuple + +import numpy as np +import scipy as sp +from numpy.typing import NDArray + +from pydvl.utils import Scorer, Status +from pydvl.utils.dataset import Dataset +from pydvl.utils.types import SupervisedModel +from pydvl.utils.utility import Utility +from pydvl.value import ValuationResult + +__all__ = [ + "Game", + "SymmetricVotingGame", + "AsymmetricVotingGame", + "ShoesGame", + "AirportGame", + "MinimumSpanningTreeGame", + "MinerGame", +] + + +class DummyGameDataset(Dataset): + """Dummy game dataset. + + Initializes a dummy game dataset with n_players and an optional + description. + + This class is used internally inside the [Game][pydvl.value.games.Game] + class. + + Args: + n_players: Number of players that participate in the game. + description: Optional description of the dataset. + """ + + def __init__(self, n_players: int, description: Optional[str] = None) -> None: + x = np.arange(0, n_players, 1).reshape(-1, 1) + nil = np.zeros_like(x) + super().__init__( + x, + nil.copy(), + nil.copy(), + nil.copy(), + feature_names=["x"], + target_names=["y"], + description=description, + ) + + def get_test_data( + self, indices: Optional[Iterable[int]] = None + ) -> Tuple[NDArray, NDArray]: + """Returns the subsets of the train set instead of the test set. + + Args: + indices: Indices into the training data. + + Returns: + Subset of the train data. + """ + if indices is None: + return self.x_train, self.y_train + x = self.x_train[indices] + y = self.y_train[indices] + return x, y + + +class DummyModel(SupervisedModel): + """Dummy model class. + + A dummy supervised model used for testing purposes only. + """ + + def __init__(self) -> None: + pass + + def fit(self, x: NDArray, y: NDArray) -> None: + pass + + def predict(self, x: NDArray) -> NDArray: # type: ignore + pass + + def score(self, x: NDArray, y: NDArray) -> float: + # Dummy, will be overriden + return 0 + + +class Game(ABC): + """Base class for games + + Any Game subclass has to implement the abstract `_score` method + to assign a score to each coalition/subset and at least + one of `shapley_values`, `least_core_values`. + + Args: + n_players: Number of players that participate in the game. + score_range: Minimum and maximum values of the `_score` method. + description: Optional string description of the dummy dataset that will be created. + + Attributes: + n_players: Number of players that participate in the game. + data: Dummy dataset object. + u: Utility object with a dummy model and dataset. + """ + + def __init__( + self, + n_players: int, + score_range: Tuple[float, float] = (-np.inf, np.inf), + description: Optional[str] = None, + ): + self.n_players = n_players + self.data = DummyGameDataset(self.n_players, description) + self.u = Utility( + DummyModel(), + self.data, + scorer=Scorer(self._score, range=score_range), + catch_errors=False, + show_warnings=True, + ) + + def shapley_values(self) -> ValuationResult: + raise NotImplementedError( + f"shapley_values method was not implemented for class {self.__class__.__name__}" + ) + + def least_core_values(self) -> ValuationResult: + raise NotImplementedError( + f"least_core_values method was not implemented for class {self.__class__.__name__}" + ) + + @abstractmethod + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + ... + + def __repr__(self) -> str: + return f"{self.__class__.__name__}(n_players={self.n_players})" + + +class SymmetricVotingGame(Game): + r"""Toy game that is used for testing and demonstration purposes. + + A symmetric voting game defined in + (Castro et al., 2009)1 + Section 4.1 + + For this game the utility of a coalition is 1 if its cardinality is + greater than num_samples/2, or 0 otherwise. + + $${ + v(S) = \left\{\begin{array}{ll} + 1, & \text{ if} \quad \mid S \mid > \frac{N}{2} \\ + 0, & \text{ otherwise} + \end{array}\right. + }$$ + + Args: + n_players: Number of players that participate in the game. + """ + + def __init__(self, n_players: int) -> None: + if n_players % 2 != 0: + raise ValueError("n_players must be an even number.") + description = "Dummy data for the symmetric voting game in Castro et al. 2009" + super().__init__( + n_players, + score_range=(0, 1), + description=description, + ) + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + return 1 if len(X) > len(self.data) // 2 else 0 + + @lru_cache + def shapley_values(self) -> ValuationResult: + exact_values = np.ones(self.n_players) / self.n_players + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_shapley", + status=Status.Converged, + indices=self.data.indices, + values=exact_values, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + +class AsymmetricVotingGame(Game): + r"""Toy game that is used for testing and demonstration purposes. + + An asymmetric voting game defined in + (Castro et al., 2009)1 + Section 4.2. + + For this game the player set is $N = \{1,\dots,51\}$ and + the utility of a coalition is given by: + + $${ + v(S) = \left\{\begin{array}{ll} + 1, & \text{ if} \quad \sum\limits_{i \in S} w_i > \sum\limits_{j \in N}\frac{w_j}{2} \\ + 0, & \text{ otherwise} + \end{array}\right. + }$$ + + where $w = [w_1,\dots, w_{51}]$ is a list of weights associated with each player. + + Args: + n_players: Number of players that participate in the game. + """ + + def __init__(self, n_players: int = 51) -> None: + if n_players != 51: + raise ValueError( + f"{self.__class__.__name__} only supports n_players=51 but got {n_players=}." + ) + description = "Dummy data for the asymmetric voting game in Castro et al. 2009" + super().__init__( + n_players, + score_range=(0, 1), + description=description, + ) + + ranges = [ + range(0, 1), + range(1, 2), + range(2, 3), + range(3, 5), + range(5, 6), + range(6, 7), + range(7, 9), + range(9, 10), + range(10, 12), + range(12, 15), + range(15, 16), + range(16, 20), + range(20, 24), + range(24, 26), + range(26, 30), + range(30, 34), + range(34, 35), + range(35, 44), + range(44, 51), + ] + + ranges_weights = [ + 45, + 41, + 27, + 26, + 25, + 21, + 17, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + ] + ranges_values = [ + "0.08831", + "0.07973", + "0.05096", + "0.04898", + "0.047", + "0.03917", + "0.03147", + "0.02577", + "0.02388", + "0.022", + "0.02013", + "0.01827", + "0.01641", + "0.01456", + "0.01272", + "0.01088", + "0.009053", + "0.00723", + "0.005412", + ] + + self.weight_table = np.zeros(self.n_players) + exact_values = np.zeros(self.n_players) + for r, w, v in zip(ranges, ranges_weights, ranges_values): + self.weight_table[r] = w + exact_values[r] = v + + self.exact_values = exact_values + self.threshold = np.sum(self.weight_table) / 2 + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + return 1 if np.sum(self.weight_table[X]) > self.threshold else 0 + + @lru_cache + def shapley_values(self) -> ValuationResult: + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_shapley", + status=Status.Converged, + indices=self.data.indices, + values=self.exact_values, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + +class ShoesGame(Game): + """Toy game that is used for testing and demonstration purposes. + + An shoes game defined in + (Castro et al., 2009)1. + + In this game, some players have a left shoe and others a right shoe. + Single shoes have a worth of zero while pairs have a worth of 1. + + The payoff of a coalition $S$ is: + + $${ + v(S) = \min( \mid S \cap L \mid, \mid S \cap R \mid ) + }$$ + + Where $L$, respectively $R$, is the set of players with left shoes, + respectively right shoes. + + Args: + left: Number of players with a left shoe. + right: Number of players with a right shoe. + """ + + def __init__(self, left: int, right: int) -> None: + self.left = left + self.right = right + n_players = self.left + self.right + description = "Dummy data for the shoe game in Castro et al. 2009" + max_score = n_players // 2 + super().__init__(n_players, score_range=(0, max_score), description=description) + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + left_sum = float(np.sum(np.asarray(X) < self.left)) + right_sum = float(np.sum(np.asarray(X) >= self.left)) + return min(left_sum, right_sum) + + @lru_cache + def shapley_values(self) -> ValuationResult: + if self.left != self.right and (self.left > 4 or self.right > 4): + raise ValueError( + "This class only supports getting exact shapley values " + "for left <= 4 and right <= 4 or left == right" + ) + precomputed_values = np.array( + [ + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.5, 0.667, 0.75, 0.8], + [0.0, 0.167, 0.5, 0.65, 0.733], + [0.0, 0.083, 0.233, 0.5, 0.638], + [0.0, 0.050, 0.133, 0.271, 0.5], + ] + ) + if self.left == self.right: + value_left = value_right = min(self.left, self.right) / ( + self.left + self.right + ) + else: + value_left = precomputed_values[self.left, self.right] + value_right = precomputed_values[self.right, self.left] + exact_values = np.array([value_left] * self.left + [value_right] * self.right) + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_shapley", + status=Status.Converged, + indices=self.data.indices, + values=exact_values, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + @lru_cache + def least_core_values(self) -> ValuationResult: + if self.left == self.right: + subsidy = -0.5 + exact_values = np.array([0.5] * (self.left + self.right)) + elif self.left < self.right: + subsidy = 0.0 + exact_values = np.array([1.0] * self.left + [0.0] * self.right) + else: + subsidy = 0.0 + exact_values = np.array([0.0] * self.left + [1.0] * self.right) + + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_least_core", + status=Status.Converged, + indices=self.data.indices, + values=exact_values, + subsidy=subsidy, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + def __repr__(self) -> str: + return f"{self.__class__.__name__}(L={self.left}, R={self.right})" + + +class AirportGame(Game): + """Toy game that is used for testing and demonstration purposes. + + An airport game defined in + (Castro et al., 2009)1 + Section 4.3 + + Args: + n_players: Number of players that participate in the game. + """ + + def __init__(self, n_players: int = 100) -> None: + if n_players != 100: + raise ValueError( + f"{self.__class__.__name__} only supports n_players=100 but got {n_players=}." + ) + description = "A dummy dataset for the airport game in Castro et al. 2009" + super().__init__(n_players, score_range=(0, 100), description=description) + ranges = [ + range(0, 8), + range(8, 20), + range(20, 26), + range(26, 40), + range(40, 48), + range(48, 57), + range(57, 70), + range(70, 80), + range(80, 90), + range(90, 100), + ] + exact = [ + 0.01, + 0.020869565, + 0.033369565, + 0.046883079, + 0.063549745, + 0.082780515, + 0.106036329, + 0.139369662, + 0.189369662, + 0.289369662, + ] + c = list(range(1, 10)) + score_table = np.zeros(100) + exact_values = np.zeros(100) + + for r, v in zip(ranges, exact): + score_table[r] = c + exact_values[r] = v + + self.exact_values = exact_values + self.score_table = score_table + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + return max(self.score_table[X]) or 0.0 + + @lru_cache + def shapley_values(self) -> ValuationResult: + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_shapley", + status=Status.Converged, + indices=self.data.indices, + values=self.exact_values, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + +class MinimumSpanningTreeGame(Game): + r"""Toy game that is used for testing and demonstration purposes. + + A minimum spanning tree game defined in + (Castro et al., 2009)1. + + Let $G = (N \cup \{0\},E)$ be a valued graph where $N = \{1,\dots,100\}$, + and the cost associated to an edge $(i, j)$ is: + + $${ + c_{ij} = \left\{\begin{array}{lll} + 1, & \text{ if} & i = j + 1 \text{ or } i = j - 1 \\ + & & \text{ or } (i = 1 \text{ and } j = 100) \text{ or } (i = 100 \text{ and } j = 1) \\ + 101, & \text{ if} & i = 0 \text{ or } j = 0 \\ + \infty, & \text{ otherwise} + \end{array}\right. + }$$ + + A minimum spanning tree game $(N, c)$ is a cost game, where for a given coalition + $S \subset N$, $v(S)$ is the sum of the edge cost of the minimum spanning tree, + i.e. $v(S)$ = Minimum Spanning Tree of the graph $G|_{S\cup\{0\}}$, + which is the partial graph restricted to the players $S$ and the source node $0$. + + Args: + n_players: Number of players that participate in the game. + """ + + def __init__(self, n_players: int = 100) -> None: + if n_players != 100: + raise ValueError( + f"{self.__class__.__name__} only supports n_players=100 but got {n_players=}." + ) + description = ( + "A dummy dataset for the minimum spanning tree game in Castro et al. 2009" + ) + super().__init__(n_players, score_range=(0, np.inf), description=description) + + graph = np.zeros(shape=(self.n_players, self.n_players)) + + for i in range(self.n_players): + for j in range(self.n_players): + if ( + i == j + 1 + or i == j - 1 + or (i == 1 and j == self.n_players - 1) + or (i == self.n_players - 1 and j == 1) + ): + graph[i, j] = 1 + elif i == 0 or j == 0: + graph[i, j] = 0 + else: + graph[i, j] = np.inf + assert np.all(graph == graph.T) + + self.graph = graph + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + partial_graph = sp.sparse.csr_array(self.graph[np.ix_(X, X)]) + span_tree = sp.sparse.csgraph.minimum_spanning_tree(partial_graph) + return span_tree.sum() or 0 + + @lru_cache + def shapley_values(self) -> ValuationResult: + exact_values = 2 * np.ones_like(self.data.x_train) + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_shapley", + status=Status.Converged, + indices=self.data.indices, + values=exact_values, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + +class MinerGame(Game): + r"""Toy game that is used for testing and demonstration purposes. + + Consider a group of n miners, who have discovered large bars of gold. + + If two miners can carry one piece of gold, then the payoff of a + coalition $S$ is: + + $${ + v(S) = \left\{\begin{array}{lll} + \mid S \mid / 2, & \text{ if} & \mid S \mid \text{ is even} \\ + ( \mid S \mid - 1)/2, & \text{ otherwise} + \end{array}\right. + }$$ + + If there are more than two miners and there is an even number of miners, + then the core consists of the single payoff where each miner gets 1/2. + + If there is an odd number of miners, then the core is empty. + + Taken from [Wikipedia](https://en.wikipedia.org/wiki/Core_(game_theory)) + + Args: + n_players: Number of miners that participate in the game. + """ + + def __init__(self, n_players: int) -> None: + if n_players <= 2: + raise ValueError(f"n_players, {n_players}, should be > 2") + description = "Dummy data for Miner Game taken from https://en.wikipedia.org/wiki/Core_(game_theory)" + super().__init__( + n_players, + score_range=(0, n_players // 2), + description=description, + ) + + def _score(self, model: SupervisedModel, X: NDArray, y: NDArray) -> float: + n = len(X) + if n % 2 == 0: + return n / 2 + else: + return (n - 1) / 2 + + @lru_cache() + def least_core_values(self) -> ValuationResult: + if self.n_players % 2 == 0: + values = np.array([0.5] * self.n_players) + subsidy = 0.0 + else: + values = np.array( + [(self.n_players - 1) / (2 * self.n_players)] * self.n_players + ) + subsidy = (self.n_players - 1) / (2 * self.n_players) + + result: ValuationResult[np.int_, np.int_] = ValuationResult( + algorithm="exact_least_core", + status=Status.Converged, + indices=self.data.indices, + values=values, + subsidy=subsidy, + variances=np.zeros_like(self.data.x_train), + counts=np.zeros_like(self.data.x_train), + ) + return result + + def __repr__(self) -> str: + return f"{self.__class__.__name__}(n={self.n_players})" diff --git a/src/pydvl/value/least_core/__init__.py b/src/pydvl/value/least_core/__init__.py index abf34c623..39c764fef 100644 --- a/src/pydvl/value/least_core/__init__.py +++ b/src/pydvl/value/least_core/__init__.py @@ -47,6 +47,7 @@ def compute_least_core_values( mode: LeastCoreMode = LeastCoreMode.MonteCarlo, non_negative_subsidy: bool = False, solver_options: Optional[dict] = None, + progress: bool = False, **kwargs, ) -> ValuationResult: """Umbrella method to compute Least Core values with any of the available @@ -80,20 +81,6 @@ def compute_least_core_values( !!! tip "New in version 0.5.0" """ - progress: bool = kwargs.pop("progress", False) - - # TODO: remove this before releasing version 0.7.0 - if kwargs: - warnings.warn( - DeprecationWarning( - "Passing solver options as kwargs was deprecated in 0.6.0, will " - "be removed in 0.7.0. `Use solver_options` instead." - ) - ) - if solver_options is None: - solver_options = kwargs - else: - solver_options.update(kwargs) if mode == LeastCoreMode.MonteCarlo: # TODO fix progress showing in remote case diff --git a/src/pydvl/value/least_core/common.py b/src/pydvl/value/least_core/common.py index 2de8e7e3a..984930217 100644 --- a/src/pydvl/value/least_core/common.py +++ b/src/pydvl/value/least_core/common.py @@ -34,7 +34,6 @@ def lc_solve_problem( algorithm: str, non_negative_subsidy: bool = False, solver_options: Optional[dict] = None, - **options, ) -> ValuationResult: """Solves a linear problem as prepared by [mclc_prepare_problem()][pydvl.value.least_core.montecarlo.mclc_prepare_problem]. @@ -55,20 +54,6 @@ def lc_solve_problem( RuntimeWarning, ) - # TODO: remove this before releasing version 0.7.0 - if options: - warnings.warn( - DeprecationWarning( - "Passing solver options as kwargs was deprecated in " - "0.6.0, will be removed in 0.7.0. `Use solver_options` " - "instead." - ) - ) - if solver_options is None: - solver_options = options - else: - solver_options.update(options) - if solver_options is None: solver_options = {} diff --git a/src/pydvl/value/least_core/montecarlo.py b/src/pydvl/value/least_core/montecarlo.py index 88dc11ded..5a7a3c883 100644 --- a/src/pydvl/value/least_core/montecarlo.py +++ b/src/pydvl/value/least_core/montecarlo.py @@ -27,7 +27,6 @@ def montecarlo_least_core( config: ParallelConfig = ParallelConfig(), non_negative_subsidy: bool = False, solver_options: Optional[dict] = None, - options: Optional[dict] = None, progress: bool = False, seed: Optional[Seed] = None, ) -> ValuationResult: @@ -60,28 +59,12 @@ def montecarlo_least_core( and to configure it. Refer to [cvxpy's documentation](https://www.cvxpy.org/tutorial/advanced/index.html#setting-solver-options) for all possible options. - options: (Deprecated) Dictionary of solver options. Use solver_options - instead. progress: If True, shows a tqdm progress bar seed: Either an instance of a numpy random number generator or a seed for it. Returns: Object with the data values and the least core value. """ - # TODO: remove this before releasing version 0.7.0 - if options: - warnings.warn( - DeprecationWarning( - "Passing solver options as kwargs was deprecated in " - "0.6.0, will be removed in 0.7.0. `Use solver_options` " - "instead." - ) - ) - if solver_options is None: - solver_options = options - else: - solver_options.update(options) - problem = mclc_prepare_problem( u, n_iterations, n_jobs=n_jobs, config=config, progress=progress, seed=seed ) diff --git a/src/pydvl/value/least_core/naive.py b/src/pydvl/value/least_core/naive.py index f97021678..713298234 100644 --- a/src/pydvl/value/least_core/naive.py +++ b/src/pydvl/value/least_core/naive.py @@ -20,7 +20,6 @@ def exact_least_core( *, non_negative_subsidy: bool = False, solver_options: Optional[dict] = None, - options: Optional[dict] = None, progress: bool = True, ) -> ValuationResult: r"""Computes the exact Least Core values. @@ -46,14 +45,12 @@ def exact_least_core( Args: u: Utility object with model, data, and scoring function - non_negative_subsidy: If True, the least core subsidy $e$ is constrained + non_negative_subsidy: If True, the least core subsidy $e$ is constrained to be non-negative. solver_options: Dictionary of options that will be used to select a solver and to configure it. Refer to the [cvxpy's documentation](https://www.cvxpy.org/tutorial/advanced/index.html#setting-solver-options) for all possible options. - options: (Deprecated) Dictionary of solver options. Use `solver_options` - instead. progress: If True, shows a tqdm progress bar Returns: @@ -63,20 +60,6 @@ def exact_least_core( if n > 20: # Arbitrary choice, will depend on time required, caching, etc. warnings.warn(f"Large dataset! Computation requires 2^{n} calls to model.fit()") - # TODO: remove this before releasing version 0.7.0 - if options: - warnings.warn( - DeprecationWarning( - "Passing solver options as kwargs was deprecated in " - "0.6.0, will " - "be removed in 0.7.0. `Use solver_options` instead." - ) - ) - if solver_options is None: - solver_options = options - else: - solver_options.update(options) - problem = lc_prepare_problem(u, progress=progress) return lc_solve_problem( problem=problem, diff --git a/src/pydvl/value/loo/__init__.py b/src/pydvl/value/loo/__init__.py index 6b9e972fc..93b927272 100644 --- a/src/pydvl/value/loo/__init__.py +++ b/src/pydvl/value/loo/__init__.py @@ -1,2 +1 @@ from .loo import * -from .naive import * diff --git a/src/pydvl/value/loo/naive.py b/src/pydvl/value/loo/naive.py deleted file mode 100644 index 82c12c730..000000000 --- a/src/pydvl/value/loo/naive.py +++ /dev/null @@ -1,19 +0,0 @@ -from deprecate import deprecated - -from pydvl.utils import Utility -from pydvl.value.result import ValuationResult - -from .loo import compute_loo - -__all__ = ["naive_loo"] - - -@deprecated( - target=compute_loo, - deprecated_in="0.7.0", - remove_in="0.8.0", - args_extra=dict(n_jobs=1), -) -def naive_loo(u: Utility, *, progress: bool = True, **kwargs) -> ValuationResult: # type: ignore - """Deprecated. Use [compute_loo][pydvl.value.loo.compute_loo] instead.""" - pass diff --git a/src/pydvl/value/result.py b/src/pydvl/value/result.py index 20def1390..2773f9452 100644 --- a/src/pydvl/value/result.py +++ b/src/pydvl/value/result.py @@ -63,7 +63,6 @@ ) import numpy as np -from deprecate import deprecated from numpy.typing import NDArray from pydvl.utils.dataset import Dataset @@ -735,14 +734,6 @@ def from_random( return cls(**options) # type: ignore @classmethod - @deprecated( - target=True, - deprecated_in="0.6.0", - remove_in="0.8.0", - args_mapping=dict(indices=None, data_names=None, n_samples=None), - template_mgs="`%(source_name)s` is deprecated for generating zero-filled " - "results, use `ValuationResult.zeros()` instead.", - ) def empty( cls, algorithm: str = "", @@ -757,6 +748,10 @@ def empty( Args: algorithm: Name of the algorithm used to compute the values + indices: Optional sequence or array of indices. + data_names: Optional sequences or array of names for the data points. + Defaults to index numbers if not set. + n_samples: Number of valuation result entries. Returns: Object with the results. diff --git a/src/pydvl/value/sampler.py b/src/pydvl/value/sampler.py index ff360d154..08cabe372 100644 --- a/src/pydvl/value/sampler.py +++ b/src/pydvl/value/sampler.py @@ -65,7 +65,6 @@ ) import numpy as np -from deprecate import deprecated, void from numpy.typing import NDArray from pydvl.utils.numeric import powerset, random_subset, random_subset_of_size @@ -313,14 +312,6 @@ def weight(cls, n: int, subset_len: int) -> float: return float(2 ** (n - 1)) if n > 0 else 1.0 -class DeterministicCombinatorialSampler(DeterministicUniformSampler[IndexT]): - @deprecated( - target=DeterministicUniformSampler, deprecated_in="0.6.0", remove_in="0.8.0" - ) - def __init__(self, indices: NDArray[IndexT], *args, **kwargs): - void(indices, args, kwargs) - - class AntitheticSampler(StochasticSamplerMixin, PowersetSampler[IndexT]): """An iterator to perform uniform random sampling of subsets, and their complements. diff --git a/src/pydvl/value/semivalues.py b/src/pydvl/value/semivalues.py index 9eee1c83d..2119e38a9 100644 --- a/src/pydvl/value/semivalues.py +++ b/src/pydvl/value/semivalues.py @@ -94,6 +94,7 @@ from itertools import islice from typing import Iterable, List, Optional, Protocol, Tuple, Type, cast +import numpy as np import scipy as sp from deprecate import deprecated from tqdm import tqdm @@ -271,15 +272,10 @@ def compute_generic_semivalues( # Filter out samples for indices that have already converged filtered_samples = samples - if skip_converged and len(done.converged) > 0: - # TODO: cloudpickle can't pickle this on python 3.8: - # filtered_samples = filter( - # lambda t: not done.converged[t[0]], samples - # ) + if skip_converged and np.count_nonzero(done.converged) > 0: + # TODO: cloudpickle can't pickle result of `filter` on python 3.8 filtered_samples = tuple( - (idx, sample) - for idx, sample in samples - if not done.converged[idx] + filter(lambda t: not done.converged[t[0]], samples) ) if filtered_samples: diff --git a/src/pydvl/value/shapley/montecarlo.py b/src/pydvl/value/shapley/montecarlo.py index aabc2d813..0811e648b 100644 --- a/src/pydvl/value/shapley/montecarlo.py +++ b/src/pydvl/value/shapley/montecarlo.py @@ -16,9 +16,9 @@ Alternatively, employing another reformulation of the expression above as a sum over permutations, one has the implementation in -[permutation_montecarlo_shapley()][pydvl.value.shapley.montecarlo.permutation_montecarlo_shapley], -or using an early stopping strategy to reduce computation -[truncated_montecarlo_shapley()][pydvl.value.shapley.truncated.truncated_montecarlo_shapley]. +[permutation_montecarlo_shapley()][pydvl.value.shapley.montecarlo.permutation_montecarlo_shapley] +with the option to pass an early stopping strategy to reduce computation +as done in Truncated MonteCarlo Shapley (TMCS). !!! info "Also see" It is also possible to use [group_testing_shapley()][pydvl.value.shapley.gt.group_testing_shapley] @@ -50,7 +50,6 @@ from typing import Optional, Sequence, Union import numpy as np -from deprecate import deprecated from numpy.random import SeedSequence from numpy.typing import NDArray from tqdm.auto import tqdm @@ -125,14 +124,6 @@ def _permutation_montecarlo_one_step( return result -@deprecated( - target=True, - deprecated_in="0.7.0", - remove_in="0.8.0", - args_mapping=dict( - coordinator_update_period=None, worker_update_period=None, progress=None - ), -) def permutation_montecarlo_shapley( u: Utility, done: StoppingCriterion, diff --git a/src/pydvl/value/shapley/truncated.py b/src/pydvl/value/shapley/truncated.py index 43327db0b..d62f625fa 100644 --- a/src/pydvl/value/shapley/truncated.py +++ b/src/pydvl/value/shapley/truncated.py @@ -11,7 +11,6 @@ from typing import Optional, cast import numpy as np -from deprecate import deprecated from pydvl.parallel.config import ParallelConfig from pydvl.utils import Utility, running_moments @@ -24,7 +23,6 @@ "FixedTruncation", "BootstrapTruncation", "RelativeTruncation", - "truncated_montecarlo_shapley", ] @@ -186,50 +184,3 @@ def _check(self, idx: int, score: float) -> bool: def reset(self, u: Optional[Utility] = None): self.count = 0 self.variance = self.mean = 0 - - -@deprecated( - target=True, - deprecated_in="0.7.0", - remove_in="0.8.0", - args_mapping=dict(coordinator_update_period=None, worker_update_period=None), -) -def truncated_montecarlo_shapley( - u: Utility, - *, - done: StoppingCriterion, - truncation: TruncationPolicy, - config: ParallelConfig = ParallelConfig(), - n_jobs: int = 1, - coordinator_update_period: int = 10, - worker_update_period: int = 5, -) -> ValuationResult: - """ - !!! Warning - This method is deprecated and only a wrapper for - [permutation_montecarlo_shapley][pydvl.value.shapley.montecarlo.permutation_montecarlo_shapley]. - - !!! Todo - Think of how to add Robin-Gelman or some other more principled stopping - criterion. - - Args: - u: Utility object with model, data, and scoring function - done: Check on the results which decides when to stop sampling - permutations. - truncation: callable that decides whether to stop computing marginals - for a given permutation. - config: Object configuring parallel computation, with cluster address, - number of cpus, etc. - n_jobs: Number of permutation monte carlo jobs to run concurrently. - Returns: - Object with the data values. - """ - from pydvl.value.shapley.montecarlo import permutation_montecarlo_shapley - - return cast( - ValuationResult, - permutation_montecarlo_shapley( - u, done=done, truncation=truncation, config=config, n_jobs=n_jobs - ), - ) diff --git a/src/pydvl/value/stopping.py b/src/pydvl/value/stopping.py index 4ce4b27e8..206cf630c 100644 --- a/src/pydvl/value/stopping.py +++ b/src/pydvl/value/stopping.py @@ -125,7 +125,6 @@ from typing import Callable, Optional, Protocol, Type import numpy as np -from deprecate import deprecated, void from numpy.typing import NDArray from pydvl.utils import Status @@ -135,7 +134,6 @@ "make_criterion", "AbsoluteStandardError", "StoppingCriterion", - "StandardError", "MaxChecks", "MaxUpdates", "MinUpdates", @@ -243,16 +241,6 @@ def converged(self) -> NDArray[np.bool_]: """ return self._converged - @property - def name(self): - log = logging.getLogger(__name__) - # This string for the benefit of deprecation searches: - # remove_in="0.8.0" - log.warning( - "The `name` attribute of `StoppingCriterion` is deprecated and will be removed in 0.8.0. " - ) - return getattr(self, "_name", type(self).__name__) - def __str__(self): return type(self).__name__ @@ -389,12 +377,6 @@ def __str__(self): return f"AbsoluteStandardError(threshold={self.threshold}, fraction={self.fraction}, burn_in={self.burn_in})" -class StandardError(AbsoluteStandardError): - @deprecated(target=AbsoluteStandardError, deprecated_in="0.6.0", remove_in="0.8.0") - def __init__(self, *args, **kwargs): - void(*args, **kwargs) - - class MaxChecks(StoppingCriterion): """Terminate as soon as the number of checks exceeds the threshold. diff --git a/tests/influence/test_influence_calculator.py b/tests/influence/test_influence_calculator.py index 23797e9ad..a4d117478 100644 --- a/tests/influence/test_influence_calculator.py +++ b/tests/influence/test_influence_calculator.py @@ -7,10 +7,12 @@ import pytest import torch from distributed import Client +from torch import nn from torch.utils.data import DataLoader, TensorDataset from pydvl.influence import DaskInfluenceCalculator, InfluenceMode from pydvl.influence.base_influence_function_model import ( + NotImplementedLayerRepresentationException, UnsupportedInfluenceModeException, ) from pydvl.influence.influence_calculator import ( @@ -20,13 +22,19 @@ ThreadSafetyViolationError, UnalignedChunksError, ) -from pydvl.influence.torch import ArnoldiInfluence, CgInfluence, DirectInfluence +from pydvl.influence.torch import ( + ArnoldiInfluence, + CgInfluence, + DirectInfluence, + EkfacInfluence, +) from pydvl.influence.torch.util import ( NestedTorchCatAggregator, TorchCatAggregator, TorchNumpyConverter, ) from tests.influence.torch.test_influence_model import model_and_data, test_case +from tests.influence.torch.test_util import are_active_layers_linear @pytest.fixture @@ -34,7 +42,7 @@ "influence_factory", [ lambda model, loss, train_dataLoader, hessian_reg: CgInfluence( - model, loss, train_dataLoader + model, loss, train_dataLoader, hessian_reg ).fit(train_dataLoader), lambda model, loss, train_dataLoader, hessian_reg: DirectInfluence( model, loss, hessian_reg @@ -338,3 +346,50 @@ def test_sequential_calculator(model_and_data, test_case): assert torch.allclose(seq_values, torch_values, atol=1e-6) assert np.allclose(seq_values_from_zarr, torch_values.numpy(), atol=1e-6) shutil.rmtree(zarr_values_path) + + +@pytest.mark.torch +def test_dask_ekfac_influence(model_and_data, test_case): + model, loss, x_train, y_train, x_test, y_test = model_and_data + chunk_size = int(test_case.train_data_len / 4) + da_x_train = da.from_array( + x_train.numpy(), chunks=(chunk_size, *[-1 for _ in x_train.shape[1:]]) + ) + da_y_train = da.from_array( + y_train.numpy(), chunks=(chunk_size, *[-1 for _ in y_train.shape[1:]]) + ) + da_x_test = da.from_array( + x_test.numpy(), chunks=(chunk_size, *[-1 for _ in x_test.shape[1:]]) + ) + da_y_test = da.from_array( + y_test.numpy(), chunks=(chunk_size, *[-1 for _ in y_test.shape[1:]]) + ) + train_dataloader = DataLoader( + TensorDataset(x_train, y_train), batch_size=test_case.batch_size + ) + + if not are_active_layers_linear(model): + with pytest.raises(NotImplementedLayerRepresentationException): + EkfacInfluence(model).fit(train_dataloader) + elif isinstance(loss, nn.CrossEntropyLoss): + ekfac_influence = EkfacInfluence( + model, hessian_regularization=test_case.hessian_reg + ).fit(train_dataloader) + + numpy_converter = TorchNumpyConverter() + dask_inf = DaskInfluenceCalculator( + ekfac_influence, numpy_converter, DisableClientSingleThreadCheck + ) + + dask_val = dask_inf.influences( + da_x_test, + da_y_test, + da_x_train, + da_y_train, + mode=test_case.mode, + ) + dask_val = dask_val.compute(scheduler="synchronous") + torch_val = ekfac_influence.influences( + x_test, y_test, x_train, y_train, mode=test_case.mode + ).numpy() + assert np.allclose(dask_val, torch_val, atol=1e-5, rtol=1e-3) diff --git a/tests/influence/torch/test_influence_model.py b/tests/influence/torch/test_influence_model.py index 2ea33b75d..9472ad398 100644 --- a/tests/influence/torch/test_influence_model.py +++ b/tests/influence/torch/test_influence_model.py @@ -5,11 +5,15 @@ import pytest from numpy.typing import NDArray -from pydvl.influence.base_influence_function_model import NotFittedException +from pydvl.influence.base_influence_function_model import ( + NotFittedException, + NotImplementedLayerRepresentationException, +) from pydvl.influence.torch.influence_function_model import ( ArnoldiInfluence, CgInfluence, DirectInfluence, + EkfacInfluence, LissaInfluence, ) from tests.influence.torch.conftest import minimal_training @@ -28,6 +32,10 @@ analytical_linear_influences, linear_model, ) +from tests.influence.torch.test_util import ( + are_active_layers_linear, + check_influence_correlations, +) # Mark the entire module pytestmark = pytest.mark.torch @@ -53,7 +61,7 @@ def create_conv1d_nn(): return nn.Sequential( nn.Conv1d(in_channels=5, out_channels=3, kernel_size=2), nn.Flatten(), - nn.Linear(6, 3), + nn.Linear(6, 2), ) @@ -61,6 +69,21 @@ def create_simple_nn_regr(): return nn.Sequential(nn.Linear(10, 10), nn.Linear(10, 3), nn.Linear(3, 1)) +def create_conv1d_no_grad(): + return nn.Sequential( + nn.Conv1d(in_channels=5, out_channels=3, kernel_size=2).requires_grad_(False), + nn.Flatten(), + nn.Linear(6, 2), + ) + + +def create_simple_nn_no_grad(): + return nn.Sequential( + nn.Linear(10, 10).requires_grad_(False), + nn.Linear(10, 5), + ) + + class TestCase(NamedTuple): module_factory: Callable[[], nn.Module] input_dim: Tuple[int, ...] @@ -114,7 +137,7 @@ def case_conv1d_nn_up(self) -> TestCase: return TestCase( module_factory=create_conv1d_nn, input_dim=(5, 3), - output_dim=3, + output_dim=2, loss=nn.MSELoss(), mode=InfluenceMode.Up, ) @@ -123,7 +146,7 @@ def case_conv1d_nn_pert(self) -> TestCase: return TestCase( module_factory=create_conv1d_nn, input_dim=(5, 3), - output_dim=3, + output_dim=2, loss=nn.SmoothL1Loss(), mode=InfluenceMode.Perturbation, ) @@ -146,6 +169,26 @@ def case_simple_nn_pert(self) -> TestCase: mode=InfluenceMode.Perturbation, ) + def case_conv1d_no_grad_up(self) -> TestCase: + return TestCase( + module_factory=create_conv1d_no_grad, + input_dim=(5, 3), + output_dim=2, + loss=nn.CrossEntropyLoss(), + mode=InfluenceMode.Up, + ) + + def case_simple_nn_class_up(self) -> TestCase: + return TestCase( + module_factory=create_simple_nn_no_grad, + input_dim=(10,), + output_dim=5, + loss=nn.CrossEntropyLoss(), + mode=InfluenceMode.Up, + train_data_len=100, + test_data_len=30, + ) + @fixture @parametrize_with_cases( @@ -169,9 +212,17 @@ def model_and_data( torch.Tensor, ]: x_train = torch.rand((test_case.train_data_len, *test_case.input_dim)) - y_train = torch.rand((test_case.train_data_len, test_case.output_dim)) x_test = torch.rand((test_case.test_data_len, *test_case.input_dim)) - y_test = torch.rand((test_case.test_data_len, test_case.output_dim)) + if isinstance(test_case.loss, nn.CrossEntropyLoss): + y_train = torch.randint( + 0, test_case.output_dim, (test_case.train_data_len,), dtype=torch.long + ) + y_test = torch.randint( + 0, test_case.output_dim, (test_case.test_data_len,), dtype=torch.long + ) + else: + y_train = torch.rand((test_case.train_data_len, test_case.output_dim)) + y_test = torch.rand((test_case.test_data_len, test_case.output_dim)) train_dataloader = DataLoader( TensorDataset(x_train, y_train), batch_size=test_case.batch_size @@ -474,3 +525,69 @@ def test_influences_arnoldi( arnoldi_influence.influences(x_test, y_test, x=x_train, mode=test_case.mode) with pytest.raises(ValueError): arnoldi_influence.influences(x_test, y_test, y=y_train, mode=test_case.mode) + + +def test_influences_ekfac( + test_case: TestCase, + model_and_data: Tuple[ + torch.nn.Module, + Callable[[torch.Tensor, torch.Tensor], torch.Tensor], + torch.Tensor, + torch.Tensor, + torch.Tensor, + torch.Tensor, + ], + direct_influences, + direct_sym_influences, +): + model, loss, x_train, y_train, x_test, y_test = model_and_data + + train_dataloader = DataLoader( + TensorDataset(x_train, y_train), batch_size=test_case.batch_size + ) + + ekfac_influence = EkfacInfluence( + model, + update_diagonal=True, + hessian_regularization=test_case.hessian_reg, + ) + + with pytest.raises(NotFittedException): + ekfac_influence.influences( + x_test, y_test, x_train, y_train, mode=test_case.mode + ) + + with pytest.raises(NotFittedException): + ekfac_influence.influence_factors(x_test, y_test) + + if not are_active_layers_linear: + with pytest.raises(NotImplementedLayerRepresentationException): + ekfac_influence.fit(train_dataloader) + elif isinstance(loss, nn.CrossEntropyLoss): + ekfac_influence = ekfac_influence.fit(train_dataloader) + ekfac_influence_values = ekfac_influence.influences( + x_test, y_test, x_train, y_train, mode=test_case.mode + ).numpy() + + ekfac_influences_by_layer = ekfac_influence.influences_by_layer( + x_test, y_test, x_train, y_train, mode=test_case.mode + ) + + accumulated_inf_by_layer = np.zeros_like(ekfac_influence_values) + for layer, infl in ekfac_influences_by_layer.items(): + accumulated_inf_by_layer += infl.detach().numpy() + + ekfac_self_influence = ekfac_influence.influences( + x_train, y_train, mode=test_case.mode + ).numpy() + + ekfac_factors = ekfac_influence.influence_factors(x_test, y_test) + + influence_from_factors = ekfac_influence.influences_from_factors( + ekfac_factors, x_train, y_train, mode=test_case.mode + ).numpy() + + assert np.allclose(ekfac_influence_values, influence_from_factors) + assert np.allclose(ekfac_influence_values, accumulated_inf_by_layer) + check_influence_correlations(direct_influences, ekfac_influence_values) + check_influence_correlations(direct_sym_influences, ekfac_self_influence) diff --git a/tests/influence/torch/test_util.py b/tests/influence/torch/test_util.py index 33b8c9316..6e675b18f 100644 --- a/tests/influence/torch/test_util.py +++ b/tests/influence/torch/test_util.py @@ -7,6 +7,7 @@ torch = pytest.importorskip("torch") import torch.nn from numpy.typing import NDArray +from scipy.stats import pearsonr, spearmanr from torch.nn.functional import mse_loss from torch.utils.data import DataLoader, TensorDataset @@ -278,3 +279,21 @@ def __getitem__(self, index): torch_dataset_to_dask_array( tensor_data_set, chunk_size=chunk_size, total_size=total_size + 1 ) + + +def check_influence_correlations(true_infl, approx_infl, threshold=0.95): + for axis in range(0, true_infl.ndim): + mean_true_infl = np.mean(true_infl, axis=axis) + mean_approx_infl = np.mean(approx_infl, axis=axis) + assert np.all(pearsonr(mean_true_infl, mean_approx_infl).statistic > threshold) + assert np.all(spearmanr(mean_true_infl, mean_approx_infl).statistic > threshold) + + +def are_active_layers_linear(model): + for module in model.modules(): + if len(list(module.children())) == 0 and len(list(module.parameters())) > 0: + if not isinstance(module, torch.nn.Linear): + param_requires_grad = [p.requires_grad for p in module.parameters()] + if any(param_requires_grad): + return False + return True diff --git a/tests/test_results.py b/tests/test_results.py index 4ea80cf72..0b42fb48d 100644 --- a/tests/test_results.py +++ b/tests/test_results.py @@ -4,6 +4,7 @@ import operator import pickle from copy import deepcopy +from itertools import permutations import cloudpickle import numpy as np @@ -159,6 +160,20 @@ def test_updating(): assert v.counts[1] == 2 +def test_updating_order_invariance(): + updates = [0.8, 0.9, 1.0, 1.1, 1.2] + values = [] + for permutation in permutations(updates): + v = ValuationResult.zeros(indices=np.array([0])) + for update in permutation: + v.update(0, update) + values.append(v) + + v1 = values[0] + for v2 in values[1:]: + np.testing.assert_almost_equal(v1.values, v2.values) + + @pytest.mark.parametrize( "serialize, deserialize", [(pickle.dumps, pickle.loads), (cloudpickle.dumps, cloudpickle.loads)], @@ -415,8 +430,3 @@ def test_empty(n): v2 = ValuationResult(values=np.arange(n)) v += v2 assert len(v2) == n - - -def test_empty_deprecation(): - with pytest.warns(DeprecationWarning): - v3 = ValuationResult.empty(indices=[1, 2, 3]) diff --git a/tests/utils/test_score.py b/tests/utils/test_score.py index 078775240..5423c48be 100644 --- a/tests/utils/test_score.py +++ b/tests/utils/test_score.py @@ -1,5 +1,7 @@ import numpy as np +import sklearn from numpy.typing import NDArray +from packaging import version from pydvl.utils.score import Scorer, compose_score, squashed_r2, squashed_variance @@ -24,7 +26,13 @@ def test_scorer(): """Tests the Scorer class.""" scorer = Scorer("r2") assert str(scorer) == "r2" - assert repr(scorer) == "R2 (scorer=make_scorer(r2_score))" + if version.parse(sklearn.__version__) >= version.parse("1.4.0"): + assert ( + repr(scorer) + == "R2 (scorer=make_scorer(r2_score, response_method='predict'))" + ) + else: + assert repr(scorer) == "R2 (scorer=make_scorer(r2_score))" coef = np.array([1, 2]) X = np.array([[1, 2], [3, 4]]) diff --git a/tests/value/__init__.py b/tests/value/__init__.py index 4b27711c4..19a703d2d 100644 --- a/tests/value/__init__.py +++ b/tests/value/__init__.py @@ -19,7 +19,9 @@ def check_total_value( Shapley value is supposed to fulfill the total value axiom.""" total_utility = u(u.data.indices) # We can use relative tolerances if we don't have the range of the scorer. - assert np.isclose(np.sum(values.values), total_utility, rtol=rtol, atol=atol) + np.testing.assert_allclose( + np.sum(values.values), total_utility, rtol=rtol, atol=atol + ) def check_exact( @@ -33,10 +35,14 @@ def check_exact( values.sort() exact_values.sort() - assert np.all(values.indices == exact_values.indices), "Ranks do not match" - assert np.allclose( - values.values, exact_values.values, rtol=rtol, atol=atol - ), "Values do not match" + np.testing.assert_equal(values.indices, exact_values.indices, "Ranks do not match") + np.testing.assert_allclose( + values.values, + exact_values.values, + rtol=rtol, + atol=atol, + err_msg="Values do not match", + ) def check_values( @@ -66,9 +72,9 @@ def check_values( values.sort() exact_values.sort() - assert np.allclose(values.values, exact_values.values, rtol=rtol, atol=atol) + np.testing.assert_allclose(values.values, exact_values.values, rtol=rtol, atol=atol) for name in extra_values_names: - assert np.isclose( + np.testing.assert_allclose( getattr(values, name), getattr(exact_values, name), rtol=rtol, atol=atol ) diff --git a/tests/value/conftest.py b/tests/value/conftest.py index 0e3c48d29..139f0f5b6 100644 --- a/tests/value/conftest.py +++ b/tests/value/conftest.py @@ -11,12 +11,35 @@ from pydvl.utils.caching import InMemoryCacheBackend from pydvl.utils.status import Status from pydvl.value import ValuationResult +from pydvl.value.games import ( + AsymmetricVotingGame, + Game, + MinerGame, + ShoesGame, + SymmetricVotingGame, +) from pydvl.value.shapley.naive import combinatorial_exact_shapley from ..conftest import num_workers from . import polynomial +@pytest.fixture(scope="module") +def test_game(request) -> Game: + name, kwargs = request.param + if name == "miner": + game = MinerGame(n_players=kwargs["n_players"]) + elif name == "shoes": + game = ShoesGame(left=kwargs["left"], right=kwargs["right"]) + elif name == "symmetric-voting": + game = SymmetricVotingGame(n_players=kwargs["n_players"]) + elif name == "asymmetric-voting": + game = AsymmetricVotingGame() + else: + raise ValueError(f"Unknown game '{name}'") + return game + + @pytest.fixture(scope="function") def polynomial_dataset(coefficients: np.ndarray): """Coefficients must be for monomials of increasing degree""" diff --git a/tests/value/least_core/conftest.py b/tests/value/least_core/conftest.py deleted file mode 100644 index 2355c443a..000000000 --- a/tests/value/least_core/conftest.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import Tuple - -import numpy as np -import pytest - -from pydvl.utils import Utility -from pydvl.utils.status import Status -from pydvl.utils.utility import GlovesGameUtility, MinerGameUtility -from pydvl.value.result import ValuationResult - - -@pytest.fixture(scope="module") -def test_utility(request) -> Tuple[Utility, ValuationResult]: - name, kwargs = request.param - if name == "miner": - u = MinerGameUtility(**kwargs) - elif name == "gloves": - u = GlovesGameUtility(**kwargs) - else: - raise ValueError(f"Unknown '{name}'") - exact_values, subsidy = u.exact_least_core_values() - result = ValuationResult( - algorithm="exact", - values=exact_values, - subsidy=subsidy, - variances=np.zeros_like(exact_values), - data_names=np.arange(len(exact_values)), - status=Status.Converged, - ) - return u, result diff --git a/tests/value/least_core/test_common.py b/tests/value/least_core/test_common.py index feadeb954..6add2d12a 100644 --- a/tests/value/least_core/test_common.py +++ b/tests/value/least_core/test_common.py @@ -8,29 +8,30 @@ @pytest.mark.parametrize( - "test_utility", - [("miner", {"n_miners": 5})], + "test_game", + [("miner", {"n_players": 5})], indirect=True, ) -def test_lc_solve_problems(test_utility, n_jobs, parallel_config): +def test_lc_solve_problems(test_game, n_jobs, parallel_config): """Test solving LeastCoreProblems in parallel.""" - u, exact_values = test_utility n_problems = n_jobs - problem = lc_prepare_problem(u) + problem = lc_prepare_problem(test_game.u) solutions = lc_solve_problems( [problem] * n_problems, - u, + test_game.u, algorithm="test_lc", n_jobs=n_jobs, config=parallel_config, ) assert len(solutions) == n_problems + exact_values = test_game.least_core_values() + for solution in solutions: assert solution.status == Status.Converged check_values(solution, exact_values, rtol=0.01) - check = lc_solve_problem(problem, u=u, algorithm="test_lc") + check = lc_solve_problem(problem, u=test_game.u, algorithm="test_lc") assert check.status == Status.Converged check_values(solution, check, rtol=0.01) diff --git a/tests/value/least_core/test_montecarlo.py b/tests/value/least_core/test_montecarlo.py index 38d675e0d..8b926a3bf 100644 --- a/tests/value/least_core/test_montecarlo.py +++ b/tests/value/least_core/test_montecarlo.py @@ -10,28 +10,27 @@ @pytest.mark.parametrize( - "test_utility, rtol, n_iterations", + "test_game, rtol, n_iterations", [ - (("miner", {"n_miners": 8}), 0.1, 128), - (("gloves", {"left": 10, "right": 5}), 0.2, 10000), + (("miner", {"n_players": 8}), 0.1, 128), + (("shoes", {"left": 10, "right": 5}), 0.2, 10000), ], - indirect=["test_utility"], + indirect=["test_game"], ) @pytest.mark.parametrize("n_jobs", [1, -1]) @pytest.mark.parametrize("non_negative_subsidy", (True, False)) def test_montecarlo_least_core( - test_utility, rtol, n_iterations, n_jobs, non_negative_subsidy, seed + test_game, rtol, n_iterations, n_jobs, non_negative_subsidy, seed ): - u, exact_values = test_utility - values = montecarlo_least_core( - u, + test_game.u, n_iterations=n_iterations, non_negative_subsidy=non_negative_subsidy, progress=False, n_jobs=n_jobs, seed=seed, ) + exact_values = test_game.least_core_values() if non_negative_subsidy: check_values(values, exact_values) # Sometimes the subsidy is negative but really close to zero diff --git a/tests/value/least_core/test_naive.py b/tests/value/least_core/test_naive.py index 28a79e381..a972e72c0 100644 --- a/tests/value/least_core/test_naive.py +++ b/tests/value/least_core/test_naive.py @@ -6,23 +6,23 @@ @pytest.mark.parametrize( - "test_utility", + "test_game", [ - ("miner", {"n_miners": 3}), - ("miner", {"n_miners": 4}), - ("gloves", {"left": 1, "right": 1}), - ("gloves", {"left": 2, "right": 1}), - ("gloves", {"left": 1, "right": 2}), + ("miner", {"n_players": 3}), + ("miner", {"n_players": 4}), + ("shoes", {"left": 1, "right": 1}), + ("shoes", {"left": 2, "right": 1}), + ("shoes", {"left": 1, "right": 2}), ], indirect=True, ) @pytest.mark.parametrize("non_negative_subsidy", (True, False)) -def test_naive_least_core(test_utility, non_negative_subsidy): - u, exact_values = test_utility +def test_naive_least_core(test_game, non_negative_subsidy): values = exact_least_core( - u, non_negative_subsidy=non_negative_subsidy, progress=False + test_game.u, non_negative_subsidy=non_negative_subsidy, progress=False ) - check_total_value(u, values) + check_total_value(test_game.u, values) + exact_values = test_game.least_core_values() if non_negative_subsidy: check_values(values, exact_values) # Sometimes the subsidy is negative but really close to zero diff --git a/tests/value/shapley/test_classwise.py b/tests/value/shapley/test_classwise.py index bd4f55a5d..d73e86a0b 100644 --- a/tests/value/shapley/test_classwise.py +++ b/tests/value/shapley/test_classwise.py @@ -3,7 +3,9 @@ import numpy as np import pandas as pd import pytest +import sklearn from numpy.typing import NDArray +from packaging import version from pydvl.utils import Dataset, Utility, powerset from pydvl.value import MaxChecks, ValuationResult @@ -165,7 +167,13 @@ def test_classwise_scorer_representation(): scorer = ClasswiseScorer("accuracy", initial_label=0) assert str(scorer) == "classwise accuracy" - assert repr(scorer) == "ClasswiseAccuracy (scorer=make_scorer(accuracy_score))" + if version.parse(sklearn.__version__) >= version.parse("1.4.0"): + assert ( + repr(scorer) + == "ClasswiseAccuracy (scorer=make_scorer(accuracy_score, response_method='predict'))" + ) + else: + assert repr(scorer) == "ClasswiseAccuracy (scorer=make_scorer(accuracy_score))" @pytest.mark.parametrize("n_element, left_margin, right_margin", [(101, 0.3, 0.4)]) diff --git a/tests/value/shapley/test_montecarlo.py b/tests/value/shapley/test_montecarlo.py index ef9deed1f..58f9df2a9 100644 --- a/tests/value/shapley/test_montecarlo.py +++ b/tests/value/shapley/test_montecarlo.py @@ -6,7 +6,7 @@ from sklearn.linear_model import LinearRegression from pydvl.parallel.config import ParallelConfig -from pydvl.utils import Dataset, GroupedDataset, Status, Utility +from pydvl.utils import GroupedDataset, Status, Utility from pydvl.utils.numeric import num_samples_permutation_hoeffding from pydvl.utils.score import Scorer, squashed_r2 from pydvl.utils.types import Seed @@ -21,35 +21,38 @@ log = logging.getLogger(__name__) -# noinspection PyTestParametrized @pytest.mark.parametrize( - "num_samples, fun, rtol, atol, kwargs", + "test_game", [ - (12, ShapleyMode.PermutationMontecarlo, 0.1, 1e-5, {"done": MaxUpdates(10)}), - # FIXME! it should be enough with 2**(len(data)-1) samples + ("symmetric-voting", {"n_players": 6}), + ("shoes", {"left": 3, "right": 4}), + ], + indirect=["test_game"], +) +@pytest.mark.parametrize( + "fun, rtol, atol, kwargs", + [ + (ShapleyMode.PermutationMontecarlo, 0.2, 1e-4, dict(done=MaxUpdates(500))), ( - 8, ShapleyMode.CombinatorialMontecarlo, 0.2, 1e-4, - {"done": MaxUpdates(2**10)}, + dict(done=MaxUpdates(2**10)), ), - (12, ShapleyMode.Owen, 0.1, 1e-4, dict(n_samples=4, max_q=200)), - (12, ShapleyMode.OwenAntithetic, 0.1, 1e-4, dict(n_samples=4, max_q=200)), + (ShapleyMode.Owen, 0.2, 1e-4, dict(n_samples=5, max_q=200)), + (ShapleyMode.OwenAntithetic, 0.1, 1e-4, dict(n_samples=5, max_q=200)), + # Because of the inaccuracy of GroupTesting, a high atol is required for the + # value 0, for which the rtol has no effect. ( - 3, ShapleyMode.GroupTesting, 0.1, - # Because of the inaccuracy of GTS, a high atol is required for the - # value 0, for which the rtol has no effect. 1e-2, dict(n_samples=int(4e4), epsilon=0.2, delta=0.01), ), ], ) -def test_analytic_montecarlo_shapley( - num_samples, - analytic_shapley, +def test_games( + test_game, parallel_config, n_jobs, fun: ShapleyMode, @@ -58,10 +61,22 @@ def test_analytic_montecarlo_shapley( kwargs: dict, seed, ): - u, exact_values = analytic_shapley + """Tests values for all methods using a toy games. + + For permutation, the rtol for each scorer is chosen + so that the number of samples selected is just above the (ε,δ) bound for ε = + rtol, δ=0.001 and the range corresponding to each score. This means that + roughly once every 1000/num_methods runs the test will fail. + + FIXME: + - We don't have a bound for Owen. + NOTE: + - The variance in the combinatorial method is huge, so we need lots of + samples + """ values = compute_shapley_values( - u, + test_game.u, mode=fun, n_jobs=n_jobs, config=parallel_config, @@ -70,29 +85,31 @@ def test_analytic_montecarlo_shapley( **kwargs ) + exact_values = test_game.shapley_values() check_values(values, exact_values, rtol=rtol, atol=atol) @pytest.mark.slow @pytest.mark.parametrize( - "num_samples, fun, kwargs", + "test_game", + [ + ("symmetric-voting", {"n_players": 12}), + ], + indirect=["test_game"], +) +@pytest.mark.parametrize( + "fun, kwargs", [ # TODO Add once issue #416 is closed. - # (12, ShapleyMode.PermutationMontecarlo, {"done": MaxChecks(1)}), - ( - 12, - ShapleyMode.CombinatorialMontecarlo, - {"done": MaxChecks(4)}, - ), - (12, ShapleyMode.Owen, dict(n_samples=4, max_q=200)), - (12, ShapleyMode.OwenAntithetic, dict(n_samples=4, max_q=200)), - (4, ShapleyMode.GroupTesting, dict(n_samples=21, epsilon=0.2, delta=0.01)), + # (ShapleyMode.PermutationMontecarlo, dict(done=MaxChecks(1))), + (ShapleyMode.CombinatorialMontecarlo, dict(done=MaxChecks(4))), + (ShapleyMode.Owen, dict(n_samples=4, max_q=200)), + (ShapleyMode.OwenAntithetic, dict(n_samples=4, max_q=200)), + (ShapleyMode.GroupTesting, dict(n_samples=21, epsilon=0.2, delta=0.01)), ], ) -@pytest.mark.parametrize("num_points, num_features", [(12, 3)]) -def test_montecarlo_shapley_housing_dataset( - num_samples: int, - housing_dataset: Dataset, +def test_seed( + test_game, parallel_config: ParallelConfig, n_jobs: int, fun: ShapleyMode, @@ -102,11 +119,10 @@ def test_montecarlo_shapley_housing_dataset( ): values_1, values_2, values_3 = call_with_seeds( compute_shapley_values, - Utility(LinearRegression(), data=housing_dataset, scorer="r2"), + test_game.u, mode=fun, n_jobs=n_jobs, config=parallel_config, - progress=False, seeds=(seed, seed, seed_alt), **deepcopy(kwargs) ) @@ -143,62 +159,6 @@ def test_hoeffding_bound_montecarlo( check_rank_correlation(values, exact_values, threshold=0.8) -@pytest.mark.parametrize( - "a, b, num_points", [(2, 0, 21)] # training set will have 0.3 * 21 = 6 samples -) -@pytest.mark.parametrize("scorer, rtol", [(squashed_r2, 0.25)]) -@pytest.mark.parametrize( - "fun, kwargs", - [ - # FIXME: Hoeffding says 400 should be enough - (ShapleyMode.PermutationMontecarlo, dict(done=MaxUpdates(500))), - (ShapleyMode.CombinatorialMontecarlo, dict(done=MaxUpdates(2**11))), - (ShapleyMode.Owen, dict(n_samples=2, max_q=300)), - (ShapleyMode.OwenAntithetic, dict(n_samples=2, max_q=300)), - pytest.param( - ShapleyMode.GroupTesting, - dict(n_samples=int(5e4), epsilon=0.25, delta=0.1), - marks=pytest.mark.slow, - ), - ], -) -def test_linear_montecarlo_shapley( - linear_shapley, - n_jobs, - memcache_client_config, - scorer: Scorer, - rtol: float, - fun: ShapleyMode, - kwargs: dict, - seed: int, -): - """Tests values for all methods using a linear dataset. - - For permutation and truncated montecarlo, the rtol for each scorer is chosen - so that the number of samples selected is just above the (ε,δ) bound for ε = - rtol, δ=0.001 and the range corresponding to each score. This means that - roughly once every 1000/num_methods runs the test will fail. - - FIXME: - - For permutation, we must increase the number of samples above that what - is done for truncated, this is probably due to the averaging done by the - latter to reduce variance - - We don't have a bound for Owen. - NOTE: - - The variance in the combinatorial method is huge, so we need lots of - samples - - """ - u, exact_values = linear_shapley - - values = compute_shapley_values( - u, mode=fun, progress=False, n_jobs=n_jobs, seed=seed, **kwargs - ) - - check_values(values, exact_values, rtol=rtol) - check_total_value(u, values, rtol=rtol) # FIXME, could be more than rtol - - @pytest.mark.slow @pytest.mark.parametrize( "a, b, num_points", [(2, 0, 21)] # training set will have 0.3 * 21 ~= 6 samples diff --git a/tests/value/shapley/test_naive.py b/tests/value/shapley/test_naive.py index 45c32b1a9..98a18a626 100644 --- a/tests/value/shapley/test_naive.py +++ b/tests/value/shapley/test_naive.py @@ -15,55 +15,26 @@ log = logging.getLogger(__name__) -# noinspection PyTestParametrized @pytest.mark.parametrize( - "num_samples, fun, rtol, total_atol", + "test_game, rtol, total_atol", [ - (12, combinatorial_exact_shapley, 0.01, 1e-5), - (6, permutation_exact_shapley, 0.01, 1e-5), + (("symmetric-voting", {"n_players": 4}), 0.1, 1e-5), + (("shoes", {"left": 1, "right": 1}), 0.1, 1e-5), + (("shoes", {"left": 2, "right": 1}), 0.1, 1e-5), + (("shoes", {"left": 1, "right": 2}), 0.1, 1e-5), + (("shoes", {"left": 2, "right": 4}), 0.1, 1e-5), ], + indirect=["test_game"], ) -def test_analytic_exact_shapley(num_samples, analytic_shapley, fun, rtol, total_atol): - """Compares the combinatorial exact shapley and permutation exact shapley with - the analytic_shapley calculation for a dummy model. - """ - u, exact_values = analytic_shapley - values_p = fun(u, progress=False) - check_total_value(u, values_p, atol=total_atol) - check_values(values_p, exact_values, rtol=rtol) - - @pytest.mark.parametrize( - "a, b, num_points, scorer", - [ - (2, 0, 10, "r2"), - (2, 1, 10, "r2"), - (2, 1, 10, "neg_median_absolute_error"), - (2, 1, 10, "explained_variance"), - ], + "fun", + [combinatorial_exact_shapley, permutation_exact_shapley], ) -def test_linear( - linear_dataset, - memcache_client_config, - scorer, - cache_backend, - rtol=0.01, - total_atol=1e-5, -): - linear_utility = Utility( - LinearRegression(), - data=linear_dataset, - scorer=scorer, - cache_backend=cache_backend, - ) - - values_combinatorial = combinatorial_exact_shapley(linear_utility, progress=False) - check_total_value(linear_utility, values_combinatorial, atol=total_atol) - - values_permutation = permutation_exact_shapley(linear_utility, progress=False) - check_total_value(linear_utility, values_permutation, atol=total_atol) - - check_values(values_combinatorial, values_permutation, rtol=rtol) +def test_games(fun, test_game, rtol, total_atol): + values_p = fun(test_game.u) + exact_values = test_game.shapley_values() + check_total_value(test_game.u, values_p, atol=total_atol) + check_values(values_p, exact_values, rtol=rtol) @pytest.mark.parametrize( @@ -73,7 +44,6 @@ def test_linear( def test_grouped_linear( linear_dataset, num_groups, - memcache_client_config, scorer, cache_backend, rtol=0.01, @@ -112,9 +82,7 @@ def test_grouped_linear( (2, 1, 20, "r2"), ], ) -def test_linear_with_outlier( - linear_dataset, memcache_client_config, scorer, cache_backend, total_atol=1e-5 -): +def test_linear_with_outlier(linear_dataset, scorer, cache_backend, total_atol=1e-5): outlier_idx = np.random.randint(len(linear_dataset.y_train)) linear_dataset.y_train[outlier_idx] -= 100 linear_utility = Utility( @@ -173,7 +141,6 @@ def test_polynomial( def test_polynomial_with_outlier( polynomial_dataset, polynomial_pipeline, - memcache_client_config, scorer, cache_backend, total_atol=1e-5, diff --git a/tests/value/shapley/test_truncated.py b/tests/value/shapley/test_truncated.py index ac980ab96..7d5977216 100644 --- a/tests/value/shapley/test_truncated.py +++ b/tests/value/shapley/test_truncated.py @@ -8,7 +8,7 @@ from pydvl.utils.score import Scorer, squashed_r2 from pydvl.value import compute_shapley_values from pydvl.value.shapley import ShapleyMode -from pydvl.value.shapley.truncated import NoTruncation +from pydvl.value.shapley.truncated import FixedTruncation, NoTruncation from pydvl.value.stopping import HistoryDeviation, MaxUpdates from .. import check_total_value, check_values @@ -16,92 +16,49 @@ log = logging.getLogger(__name__) -# noinspection PyTestParametrized @pytest.mark.parametrize( - "num_samples, fun, rtol, atol, kwargs", + "test_game", [ - ( - 12, - ShapleyMode.TruncatedMontecarlo, - 0.1, - 1e-5, - dict( - done=MaxUpdates(500), - truncation=NoTruncation(), - ), - ), + ("symmetric-voting", {"n_players": 6}), + ("shoes", {"left": 3, "right": 4}), ], + indirect=["test_game"], ) -def test_tmcs_analytic_montecarlo_shapley( - num_samples, - analytic_shapley, - parallel_config, - n_jobs, - fun: ShapleyMode, - rtol: float, - atol: float, - kwargs: dict, -): - u, exact_values = analytic_shapley - - values = compute_shapley_values( - u, mode=fun, n_jobs=n_jobs, config=parallel_config, progress=False, **kwargs - ) - - check_values(values, exact_values, rtol=rtol, atol=atol) - - @pytest.mark.parametrize( - "a, b, num_points", [(2, 0, 21)] # training set will have 0.3 * 21 = 6 samples -) -@pytest.mark.parametrize("scorer, rtol", [(squashed_r2, 0.25)]) -@pytest.mark.parametrize( - "fun, kwargs", + "done, truncation_cls, truncation_kwargs", [ - ( - ShapleyMode.TruncatedMontecarlo, - dict( - done=MaxUpdates(500), - truncation=NoTruncation(), - ), - ), + (MaxUpdates(600), NoTruncation, dict()), + (MaxUpdates(600), FixedTruncation, dict(fraction=0.9)), ], ) -def test_tmcs_linear_montecarlo_shapley( - linear_shapley, +def test_games( + test_game, + parallel_config, n_jobs, - memcache_client_config, - scorer: Scorer, - rtol: float, - fun: ShapleyMode, - kwargs: dict, + done, + truncation_cls, + truncation_kwargs, + seed, ): - """Tests values for all methods using a linear dataset. - - For permutation and truncated montecarlo, the rtol for each scorer is chosen - so that the number of samples selected is just above the (ε,δ) bound for ε = - rtol, δ=0.001 and the range corresponding to each score. This means that - roughly once every 1000/num_methods runs the test will fail. - - FIXME: - - For permutation, we must increase the number of samples above that what - is done for truncated, this is probably due to the averaging done by the - latter to reduce variance - - We don't have a bound for Owen. - NOTE: - - The variance in the combinatorial method is huge, so we need lots of - samples - - """ - u, exact_values = linear_shapley - check_total_value(u, exact_values, rtol=rtol) + try: + truncation = truncation_cls(test_game.u, **truncation_kwargs) + except TypeError: + # The NoTruncation class's constructor doesn't take any arguments + truncation = truncation_cls(**truncation_kwargs) values = compute_shapley_values( - u, mode=fun, progress=False, n_jobs=n_jobs, **kwargs + test_game.u, + mode=ShapleyMode.TruncatedMontecarlo, + done=done, + truncation=truncation, + n_jobs=n_jobs, + config=parallel_config, + seed=seed, + progress=True, ) - check_values(values, exact_values, rtol=rtol) - check_total_value(u, values, rtol=rtol) # FIXME, could be more than rtol + exact_values = test_game.shapley_values() + check_values(values, exact_values, rtol=0.2, atol=1e-4) @pytest.mark.parametrize( diff --git a/tests/value/test_semivalues.py b/tests/value/test_semivalues.py index 50a0201b7..e33f92543 100644 --- a/tests/value/test_semivalues.py +++ b/tests/value/test_semivalues.py @@ -1,4 +1,5 @@ import math +from itertools import islice from typing import Type import numpy as np @@ -17,6 +18,7 @@ ) from pydvl.value.semivalues import ( SVCoefficient, + _marginal, banzhaf_coefficient, beta_coefficient, compute_generic_semivalues, @@ -28,12 +30,112 @@ from .utils import timed -@pytest.mark.parametrize("num_samples", [5]) +@pytest.mark.parametrize( + "test_game", + [ + ("shoes", {"left": 3, "right": 2}), + ], + indirect=["test_game"], +) +@pytest.mark.parametrize( + "sampler, coefficient, batch_size", + [(PermutationSampler, beta_coefficient(1, 1), 5)], +) +def test_marginal_batch_size(test_game, sampler, coefficient, batch_size, seed): + # TODO: This test is probably not needed. + # Because I added it and then realized that it doesn't do much. + # The only difference between the two calls is that for the first one + # the loop is outside and the second one the loop is inside. + sampler_it = iter(sampler(test_game.u.data.indices, seed=seed)) + samples = tuple(islice(sampler_it, batch_size)) + + marginals_single = [] + for sample in samples: + marginals_single.extend( + _marginal(test_game.u, coefficient=coefficient, samples=[sample]) + ) + + marginals_batch = _marginal(test_game.u, coefficient=coefficient, samples=samples) + + assert len(marginals_single) == len(marginals_batch) + assert set(marginals_single) == set(marginals_batch) + + +@pytest.mark.parametrize("n", [10, 100]) +@pytest.mark.parametrize( + "coefficient", + [ + beta_coefficient(1, 1), + beta_coefficient(1, 16), + beta_coefficient(4, 1), + banzhaf_coefficient, + shapley_coefficient, + ], +) +def test_coefficients(n: int, coefficient: SVCoefficient): + r"""Coefficients for semi-values must fulfill: + + $$ \sum_{i=1}^{n}\choose{n-1}{j-1}w^{(n)}(j) = 1 $$ + + Note that we depart from the usual definitions by including the factor $1/n$ + in the shapley and beta coefficients. + """ + s = [math.comb(n - 1, j - 1) * coefficient(n, j - 1) for j in range(1, n + 1)] + assert np.isclose(1, np.sum(s)) + + +@pytest.mark.parametrize( + "test_game", + [ + ("symmetric-voting", {"n_players": 4}), + ("shoes", {"left": 1, "right": 1}), + ("shoes", {"left": 2, "right": 1}), + ("shoes", {"left": 1, "right": 2}), + ], + indirect=["test_game"], +) @pytest.mark.parametrize( "sampler", [ DeterministicUniformSampler, DeterministicPermutationSampler, + ], +) +@pytest.mark.parametrize("coefficient", [shapley_coefficient, beta_coefficient(1, 1)]) +def test_games_shapley_deterministic( + test_game, + parallel_config, + n_jobs, + sampler: Type[PowersetSampler], + coefficient: SVCoefficient, + seed: Seed, +): + criterion = MaxUpdates(50) + values = compute_generic_semivalues( + sampler(test_game.u.data.indices, seed=seed), + test_game.u, + coefficient, + criterion, + skip_converged=True, + n_jobs=n_jobs, + config=parallel_config, + progress=True, + ) + exact_values = test_game.shapley_values() + check_values(values, exact_values, rtol=0.1) + + +@pytest.mark.parametrize( + "test_game", + [ + ("symmetric-voting", {"n_players": 6}), + ("shoes", {"left": 3, "right": 2}), + ], + indirect=["test_game"], +) +@pytest.mark.parametrize( + "sampler", + [ UniformSampler, PermutationSampler, pytest.param(AntitheticSampler, marks=pytest.mark.slow), @@ -41,36 +143,55 @@ ], ) @pytest.mark.parametrize("coefficient", [shapley_coefficient, beta_coefficient(1, 1)]) -def test_shapley( - num_samples: int, - analytic_shapley, +def test_games_shapley( + test_game, + parallel_config, + n_jobs, sampler: Type[PowersetSampler], coefficient: SVCoefficient, - n_jobs: int, - parallel_config: ParallelConfig, seed: Seed, ): - u, exact_values = analytic_shapley - criterion = HistoryDeviation(50, 1e-3) | MaxUpdates(1000) + criterion = HistoryDeviation(50, 1e-4) | MaxUpdates(500) values = compute_generic_semivalues( - sampler(u.data.indices, seed=seed), - u, + sampler(test_game.u.data.indices, seed=seed), + test_game.u, coefficient, criterion, skip_converged=True, n_jobs=n_jobs, config=parallel_config, + progress=True, ) + + exact_values = test_game.shapley_values() check_values(values, exact_values, rtol=0.2) @pytest.mark.parametrize( - "num_samples,sampler,coefficient,batch_size", - [(5, PermutationSampler, beta_coefficient(1, 1), 5)], + "test_game", + [ + ("shoes", {"left": 3, "right": 2}), + ], + indirect=["test_game"], +) +@pytest.mark.parametrize( + "sampler, coefficient, batch_size", + [(PermutationSampler, beta_coefficient(1, 1), 5)], +) +@pytest.mark.parametrize( + "n_jobs", + [ + 1, + pytest.param( + 2, + marks=pytest.mark.xfail( + reason="Bad interaction between parallelization and batching" + ), + ), + ], ) def test_shapley_batch_size( - num_samples: int, - analytic_shapley, + test_game, sampler: Type[PermutationSampler], coefficient: SVCoefficient, batch_size: int, @@ -78,13 +199,12 @@ def test_shapley_batch_size( parallel_config: ParallelConfig, seed: Seed, ): - u, exact_values = analytic_shapley timed_fn = timed(compute_generic_semivalues) result_single_batch = timed_fn( - sampler(u.data.indices, seed=seed), - u, + sampler(test_game.u.data.indices, seed=seed), + test_game.u, coefficient, - done=HistoryDeviation(50, 1e-3) | MaxUpdates(1000), + done=MaxUpdates(100), skip_converged=True, n_jobs=n_jobs, batch_size=1, @@ -93,10 +213,10 @@ def test_shapley_batch_size( total_seconds_single_batch = timed_fn.execution_time result_multi_batch = timed_fn( - sampler(u.data.indices, seed=seed), - u, + sampler(test_game.u.data.indices, seed=seed), + test_game.u, coefficient, - done=HistoryDeviation(50, 1e-3) | MaxUpdates(1000), + done=MaxUpdates(100), skip_converged=True, n_jobs=n_jobs, batch_size=batch_size, @@ -141,26 +261,3 @@ def test_banzhaf( config=parallel_config, ) check_values(values, exact_values, rtol=0.2) - - -@pytest.mark.parametrize("n", [10, 100]) -@pytest.mark.parametrize( - "coefficient", - [ - beta_coefficient(1, 1), - beta_coefficient(1, 16), - beta_coefficient(4, 1), - banzhaf_coefficient, - shapley_coefficient, - ], -) -def test_coefficients(n: int, coefficient: SVCoefficient): - r"""Coefficients for semi-values must fulfill: - - $$ \sum_{i=1}^{n}\choose{n-1}{j-1}w^{(n)}(j) = 1 $$ - - Note that we depart from the usual definitions by including the factor $1/n$ - in the shapley and beta coefficients. - """ - s = [math.comb(n - 1, j - 1) * coefficient(n, j - 1) for j in range(1, n + 1)] - assert np.isclose(1, np.sum(s)) diff --git a/tests/value/test_stopping.py b/tests/value/test_stopping.py index 7399dc9c3..efebac9c4 100644 --- a/tests/value/test_stopping.py +++ b/tests/value/test_stopping.py @@ -62,10 +62,10 @@ def _check(self, result: ValuationResult) -> Status: assert (C() & C() & C())(v) == c assert (P() | P() | P())(v) == p - assert (C() & P()).name == "Composite StoppingCriterion: C AND P" - assert (C() | P()).name == "Composite StoppingCriterion: C OR P" - assert (~C()).name == "Composite StoppingCriterion: NOT C" - assert (~P()).name == "Composite StoppingCriterion: NOT P" + assert str(C() & P()) == "Composite StoppingCriterion: C AND P" + assert str(C() | P()) == "Composite StoppingCriterion: C OR P" + assert str(~C()) == "Composite StoppingCriterion: NOT C" + assert str(~P()) == "Composite StoppingCriterion: NOT P" def test_make_criterion(): @@ -88,9 +88,9 @@ def always_failed(result: ValuationResult) -> Status: assert P()(v) == Status.Pending assert F()(v) == Status.Failed - assert C().name == "always_converged" - assert P().name == "always_pending" - assert F().name == "always_failed" + assert str(C()) == "always_converged" + assert str(P()) == "always_pending" + assert str(F()) == "always_failed" assert (~C())(v) == Status.Failed assert (~P())(v) == Status.Converged @@ -104,7 +104,7 @@ def always_failed(result: ValuationResult) -> Status: def test_minmax_updates(): maxstop = MaxUpdates(10) - assert maxstop.name == "MaxUpdates" + assert str(maxstop) == "MaxUpdates(n_updates=10)" v = ValuationResult.from_random(5) v._counts = np.zeros(5) assert maxstop(v) == Status.Pending @@ -114,7 +114,7 @@ def test_minmax_updates(): assert maxstop(v) == Status.Converged minstop = MinUpdates(10) - assert minstop.name == "MinUpdates" + assert str(minstop) == "MinUpdates(n_updates=10)" v._counts = np.zeros(5) assert minstop(v) == Status.Pending v._counts += np.ones(5) * 9 diff --git a/tox.ini b/tox.ini index 666a5760c..d62cfe481 100644 --- a/tox.ini +++ b/tox.ini @@ -9,16 +9,13 @@ deps = extras = ray influence + memcached setenv = COVERAGE_FILE = {env:COVERAGE_FILE:{toxinidir}/.coverage.{envname}} passenv = CI [testenv:tests] -extras = - ray - influence - memcached commands = pytest -n auto --dist worksteal --cov "{envsitepackagesdir}/pydvl" {posargs} @@ -27,7 +24,7 @@ deps = {[testenv]deps} -r requirements-notebooks.txt commands = - pytest --nbmake -n 0 --cov "{envsitepackagesdir}/pydvl" notebooks/ {posargs} + pytest --nbmake --nbmake-timeout=30 -n 0 --cov "{envsitepackagesdir}/pydvl" notebooks/ {posargs} [testenv:linting] skip_install = true