diff --git a/docs/prediction/weights_of_evidence.md b/docs/prediction/weights_of_evidence.md
new file mode 100644
index 00000000..e642df88
--- /dev/null
+++ b/docs/prediction/weights_of_evidence.md
@@ -0,0 +1,3 @@
+# Weights of evidence
+
+::: eis_toolkit.prediction.weights_of_evidence
diff --git a/eis_toolkit/exceptions.py b/eis_toolkit/exceptions.py
index b3fb4248..6dec2159 100644
--- a/eis_toolkit/exceptions.py
+++ b/eis_toolkit/exceptions.py
@@ -2,6 +2,10 @@ class CoordinatesOutOfBoundsException(Exception):
"""Exception error class for out of bound coordinates."""
+class ClassificationFailedException(Exception):
+ """Exception error class for classification failures."""
+
+
class EmptyDataFrameException(Exception):
"""Exception error class raised if the dataframe is empty."""
diff --git a/eis_toolkit/prediction/weights_of_evidence.py b/eis_toolkit/prediction/weights_of_evidence.py
new file mode 100644
index 00000000..7f668ee1
--- /dev/null
+++ b/eis_toolkit/prediction/weights_of_evidence.py
@@ -0,0 +1,418 @@
+from numbers import Number
+
+import geopandas as gpd
+import numpy as np
+import pandas as pd
+import rasterio
+from beartype import beartype
+from beartype.typing import Dict, List, Literal, Optional, Sequence, Tuple
+
+from eis_toolkit import exceptions
+from eis_toolkit.vector_processing.rasterize_vector import rasterize_vector
+
+CLASS_COLUMN = "Class"
+PIXEL_COUNT_COLUMN = "Pixel count"
+DEPOSIT_COUNT_COLUMN = "Deposit count"
+WEIGHT_PLUS_COLUMN = "W+"
+WEIGHT_S_PLUS_COLUMN = "S_W+"
+WEIGHT_MINUS_COLUMN = "W-"
+WEIGHT_S_MINUS_COLUMN = "S_W-"
+CONTRAST_COLUMN = "Contrast"
+S_CONTRAST_COLUMN = "S_Contrast"
+STUDENTIZED_CONTRAST_COLUMN = "Studentized contrast"
+GENERALIZED_CLASS_COLUMN = "Generalized class"
+GENERALIZED_WEIGHT_PLUS_COLUMN = "Generalized W+"
+GENERALIZED_S_WEIGHT_PLUS_COLUMN = "Generalized S_W+"
+
+VALID_DF_COLUMNS = [
+ CLASS_COLUMN,
+ PIXEL_COUNT_COLUMN,
+ DEPOSIT_COUNT_COLUMN,
+ WEIGHT_PLUS_COLUMN,
+ WEIGHT_S_PLUS_COLUMN,
+ WEIGHT_MINUS_COLUMN,
+ WEIGHT_S_MINUS_COLUMN,
+ CONTRAST_COLUMN,
+ S_CONTRAST_COLUMN,
+ STUDENTIZED_CONTRAST_COLUMN,
+ GENERALIZED_CLASS_COLUMN,
+ GENERALIZED_WEIGHT_PLUS_COLUMN,
+ GENERALIZED_S_WEIGHT_PLUS_COLUMN,
+]
+
+DEFAULT_METRICS_UNIQUE = [CLASS_COLUMN, WEIGHT_PLUS_COLUMN, WEIGHT_S_PLUS_COLUMN]
+DEFAULT_METRICS_CUMULATIVE = [
+ CLASS_COLUMN,
+ WEIGHT_PLUS_COLUMN,
+ WEIGHT_S_PLUS_COLUMN,
+ GENERALIZED_WEIGHT_PLUS_COLUMN,
+ GENERALIZED_S_WEIGHT_PLUS_COLUMN,
+]
+
+
+def _read_and_preprocess_evidence(
+ raster: rasterio.io.DatasetReader, nodata: Optional[Number] = None, band: int = 1
+) -> np.ndarray:
+ """Read raster data and handle NoData values."""
+
+ array = np.array(raster.read(band), dtype=np.float32)
+
+ if nodata is not None:
+ array[array == nodata] = np.nan
+ elif raster.meta["nodata"] is not None:
+ array[array == raster.meta["nodata"]] = np.nan
+
+ return array
+
+
+def _calculate_metrics_for_class(
+ deposits: np.ndarray, evidence: np.ndarray
+) -> Tuple[float, float, float, float, float, float, float, float, float, float, float]:
+ """Calculate weights/metrics for given data."""
+ A = np.sum(np.logical_and(deposits == 1, evidence == 1))
+ B = np.sum(np.logical_and(deposits == 1, evidence == 0))
+ C = np.sum(np.logical_and(deposits == 0, evidence == 1))
+ D = np.sum(np.logical_and(deposits == 0, evidence == 0))
+
+ # If data has no deposits or every evidence pixel has a deposit
+ if A == 0 or C + D == 0:
+ return A, B, C, D, 0, 0, 0, 0, 0, 0, 0
+
+ p_A_nominator = A
+ p_C_nominator = C
+ B_adjusted = B
+ D_adjusted = D
+
+ if B == 0:
+ p_A_nominator -= 0.99
+ B_adjusted = 0.99
+
+ if D == 0:
+ p_C_nominator -= 0.99
+ D_adjusted = 0.99
+
+ p_A = p_A_nominator / (A + B) # probability of presence of evidence given the presence of mineral deposit
+ p_C = p_C_nominator / (C + D) # probability of presence of evidence given the absence of mineral deposit
+
+ # Calculate metrics
+ w_plus = np.log(p_A / p_C) if p_C != 0 else 0 # Check
+ w_minus = np.log((1 - p_A) / (1 - p_C))
+ contrast = w_plus - w_minus
+
+ # Calculate signifigance metrics
+ s_w_plus = np.sqrt((1 / p_A_nominator) + (1 / p_C_nominator))
+ s_w_minus = np.sqrt((1 / B_adjusted) + (1 / D_adjusted))
+
+ s_contrast = np.sqrt(s_w_plus**2 + s_w_minus**2)
+ studentized_contrast = contrast / s_contrast
+
+ return A, B, C, D, w_plus, s_w_plus, w_minus, s_w_minus, contrast, s_contrast, studentized_contrast
+
+
+def _unique_weights(deposits: np.ndarray, evidence: np.ndarray) -> dict:
+ """Calculate unique weights for each class."""
+ classes = np.unique(evidence)
+ return {cls: _calculate_metrics_for_class(deposits, evidence == cls) for cls in classes}
+
+
+def _cumulative_weights(deposits: np.ndarray, evidence: np.ndarray, ascending: bool = True) -> dict:
+ """Calculate cumulative weights (ascending or descending) for each class."""
+ classes = sorted(np.unique(evidence), reverse=not ascending)
+ cumulative_classes = [classes[: i + 1] for i in range(len(classes))]
+ return {
+ cls[i]: _calculate_metrics_for_class(deposits, np.isin(evidence, cls))
+ for i, cls in enumerate(cumulative_classes)
+ }
+
+
+def _generalized_classes_categorical(df: pd.DataFrame, studentized_contrast_threshold: Number) -> pd.DataFrame:
+ gen_df = df.copy()
+ gen_df[GENERALIZED_CLASS_COLUMN] = gen_df[CLASS_COLUMN]
+
+ reclassified = False
+ for i in range(0, len(gen_df.index)):
+ if abs(gen_df.loc[i, STUDENTIZED_CONTRAST_COLUMN]) < studentized_contrast_threshold:
+ gen_df.loc[i, GENERALIZED_CLASS_COLUMN] = 99
+ reclassified = True
+
+ if not reclassified:
+ raise exceptions.ClassificationFailedException(
+ "Failed to create generalized classes with given studentized contrast treshold ({})".format(
+ studentized_contrast_threshold
+ )
+ )
+
+ gen_df = gen_df.sort_values(by=GENERALIZED_CLASS_COLUMN, ascending=True)
+
+ return gen_df
+
+
+def _generalized_weights_categorical(df: pd.DataFrame, deposits) -> pd.DataFrame:
+ """Calculate generalized weights for categorical weights type. Assumes class 99 exists as the general class."""
+ gen_df = df.copy()
+ total_deposits = np.sum(deposits == 1)
+ total_no_deposits = deposits.size - total_deposits
+
+ # Class 99 (gen class)
+ class_99_count = 0
+ class_99_point_count = 0
+
+ for i in range(0, len(gen_df.index)):
+ if gen_df.loc[i, GENERALIZED_CLASS_COLUMN] == 99:
+ # class_99_count = max(gen_df.loc[i, PIXEL_COUNT_COLUMN], class_99_count)
+ # class_99_point_count = max(gen_df.loc[i, DEPOSIT_COUNT_COLUMN], class_99_point_count)
+ class_99_count += gen_df.loc[i, PIXEL_COUNT_COLUMN]
+ class_99_point_count += gen_df.loc[i, DEPOSIT_COUNT_COLUMN]
+
+ class_99_w_gen = np.log(class_99_point_count / total_deposits) - np.log(
+ (class_99_count - class_99_point_count) / total_no_deposits
+ )
+ clas_99_s_wpls_gen = np.sqrt((1 / class_99_point_count) + (1 / (class_99_count - class_99_point_count)))
+
+ gen_df[GENERALIZED_WEIGHT_PLUS_COLUMN] = gen_df[WEIGHT_PLUS_COLUMN]
+ gen_df[GENERALIZED_S_WEIGHT_PLUS_COLUMN] = gen_df[WEIGHT_S_PLUS_COLUMN]
+
+ gen_df.loc[gen_df[GENERALIZED_CLASS_COLUMN] == 99, GENERALIZED_WEIGHT_PLUS_COLUMN] = round(class_99_w_gen, 4)
+ gen_df.loc[gen_df[GENERALIZED_CLASS_COLUMN] == 99, GENERALIZED_S_WEIGHT_PLUS_COLUMN] = round(clas_99_s_wpls_gen, 4)
+
+ return gen_df
+
+
+def _generalized_classes_cumulative(df: pd.DataFrame, studentized_contrast_threshold: Number) -> pd.DataFrame:
+ """Create generalized classes based on contrast and studentized contrast threhsold value."""
+ gen_df = df.copy()
+ index = gen_df.idxmax()[CONTRAST_COLUMN]
+
+ if (
+ gen_df.loc[index, STUDENTIZED_CONTRAST_COLUMN] < studentized_contrast_threshold
+ or index == len(gen_df.index) - 1
+ ):
+ raise exceptions.ClassificationFailedException(
+ "Failed to create generalized classes with given studentized contrast treshold ({} < {})".format(
+ gen_df.loc[index, STUDENTIZED_CONTRAST_COLUMN], studentized_contrast_threshold
+ )
+ )
+
+ gen_df[GENERALIZED_CLASS_COLUMN] = 1
+ for i in range(0, index + 1):
+ gen_df.loc[i, GENERALIZED_CLASS_COLUMN] = 2
+
+ return gen_df
+
+
+def _generalized_weights_cumulative(df: pd.DataFrame, deposits: np.ndarray) -> pd.DataFrame:
+ """
+ Calculate generalized weights for cumulative methods.
+
+ Assumes there are classes 1 and 2 as the general classes.
+ """
+ gen_df = df.copy()
+ total_deposits = np.sum(deposits == 1)
+ total_no_deposits = deposits.size - total_deposits
+
+ # Class 2
+ class_2_max_index = gen_df.idxmax()[CONTRAST_COLUMN]
+ class_2_count = gen_df.loc[class_2_max_index, PIXEL_COUNT_COLUMN]
+ class_2_point_count = gen_df.loc[class_2_max_index, DEPOSIT_COUNT_COLUMN]
+
+ class_2_w_gen = np.log(class_2_point_count / total_deposits) - np.log(
+ (class_2_count - class_2_point_count) / total_no_deposits
+ )
+ clas_2_s_wpls_gen = np.sqrt((1 / class_2_point_count) + (1 / (class_2_count - class_2_point_count)))
+
+ gen_df[GENERALIZED_WEIGHT_PLUS_COLUMN] = round(class_2_w_gen, 4)
+ gen_df[GENERALIZED_S_WEIGHT_PLUS_COLUMN] = round(clas_2_s_wpls_gen, 4)
+
+ # Class 1
+ class_1_count = gen_df.loc[len(gen_df.index) - 1, PIXEL_COUNT_COLUMN] - class_2_count
+ class_1_point_count = gen_df.loc[len(gen_df.index) - 1, DEPOSIT_COUNT_COLUMN] - class_2_point_count
+
+ class_1_w_gen = np.log(class_1_point_count / total_deposits) - np.log(
+ (class_1_count - class_1_point_count) / total_no_deposits
+ )
+ clas_1_s_wpls_gen = np.sqrt((1 / class_1_point_count) + (1 / (class_1_count - class_1_point_count)))
+ gen_df.loc[gen_df[GENERALIZED_CLASS_COLUMN] == 1, GENERALIZED_WEIGHT_PLUS_COLUMN] = round(class_1_w_gen, 4)
+ gen_df.loc[gen_df[GENERALIZED_CLASS_COLUMN] == 1, GENERALIZED_S_WEIGHT_PLUS_COLUMN] = round(clas_1_s_wpls_gen, 4)
+
+ return gen_df
+
+
+def _generate_arrays_from_metrics(
+ evidence: np.ndarray, df: pd.DataFrame, metrics_to_include: List[str]
+) -> Dict[str, np.ndarray]:
+ """Generate arrays for defined metrics."""
+ array_dict = {}
+ for metric in metrics_to_include:
+ metric_array = np.full(evidence.shape, np.nan)
+ for _, row in df.iterrows():
+ mask = np.isin(evidence, row[CLASS_COLUMN])
+ metric_array[mask] = row[metric]
+ array_dict[metric] = metric_array
+ return array_dict
+
+
+@beartype
+def weights_of_evidence_calculate_weights(
+ evidential_raster: rasterio.io.DatasetReader,
+ deposits: gpd.GeoDataFrame,
+ raster_nodata: Optional[Number] = None,
+ weights_type: Literal["unique", "categorical", "ascending", "descending"] = "unique",
+ studentized_contrast_threshold: Number = 1,
+ arrays_to_generate: Optional[Sequence[str]] = None,
+) -> Tuple[pd.DataFrame, dict, dict, int, int]:
+ """
+ Calculate weights of spatial associations.
+
+ Args:
+ evidential_raster: The evidential raster.
+ deposits: Vector data representing the mineral deposits or occurences point data.
+ raster_nodata: If nodata value of raster is wanted to specify manually. Optional parameter, defaults to None
+ (nodata from raster metadata is used).
+ weights_type: Accepted values are 'unique', 'categorical', 'ascending' and 'descending'.
+ Unique weights does not create generalized classes and does not use a studentized contrast threshold value
+ while categorical, cumulative ascending and cumulative descending do. Categorical weights are calculated so
+ that all classes with studentized contrast below the defined threshold are grouped into one generalized
+ class. Cumulative ascending and descending weights find the class with max contrast and group classes
+ above/below into generalized classes. Generalized weights are also calculated for generalized classes.
+ studentized_contrast_threshold: Studentized contrast threshold value used with 'categorical', 'ascending' and
+ 'descending' weight types. Used either as reclassification threshold directly (categorical) or to check
+ that class with max contrast has studentized contrast value at least the defined value (cumulative).
+ Defaults to 1.
+ arrays_to_generate: Arrays to generate from the computed weight metrics. All column names
+ in the produced weights_df are valid choices. Defaults to ["Class", "W+", "S_W+]
+ for "unique" weights_type and ["Class", "W+", "S_W+", "Generalized W+", "Generalized S_W+"]
+ for the cumulative weight types.
+
+ Returns:
+ Dataframe with weights of spatial association between the input data.
+ Dictionary of arrays for specified metrics.
+ Raster metadata.
+ Number of deposit pixels.
+ Number of all evidence pixels.
+ """
+
+ if arrays_to_generate is None:
+ if weights_type == "unique":
+ metrics_to_arrays = DEFAULT_METRICS_UNIQUE
+ else:
+ metrics_to_arrays = DEFAULT_METRICS_CUMULATIVE
+ else:
+ for col_name in arrays_to_generate:
+ if col_name not in VALID_DF_COLUMNS:
+ raise exceptions.InvalidColumnException(
+ f"Arrays to generate contains invalid metric / column name: {col_name}."
+ )
+ metrics_to_arrays = arrays_to_generate.copy()
+
+ # 1. Preprocess data
+ evidence_array = _read_and_preprocess_evidence(evidential_raster, raster_nodata)
+ raster_meta = evidential_raster.meta
+
+ # Rasterize deposits
+ deposit_array, _ = rasterize_vector(
+ geodataframe=deposits, default_value=1.0, base_raster_profile=raster_meta, fill_value=0.0
+ )
+
+ # Mask NaN out of the array
+ nodata_mask = np.isnan(evidence_array)
+ masked_evidence_array = evidence_array[~nodata_mask]
+ masked_deposit_array = deposit_array[~nodata_mask]
+
+ # 2. WofE calculations
+ if weights_type == "unique" or weights_type == "categorical":
+ wofe_weights = _unique_weights(masked_deposit_array, masked_evidence_array)
+ elif weights_type == "ascending":
+ wofe_weights = _cumulative_weights(masked_deposit_array, masked_evidence_array, ascending=True)
+ elif weights_type == "descending":
+ wofe_weights = _cumulative_weights(masked_deposit_array, masked_evidence_array, ascending=False)
+ else:
+ raise exceptions.InvalidParameterValueException(
+ "Expected weights_type to be one of unique, categorical, ascending or descending."
+ )
+
+ # 3. Create DataFrame based on calculated metrics
+ df_entries = []
+ for cls, metrics in wofe_weights.items():
+ metrics = [round(metric, 4) if isinstance(metric, np.floating) else metric for metric in metrics]
+ A, _, C, _, w_plus, s_w_plus, w_minus, s_w_minus, contrast, s_contrast, studentized_contrast = metrics
+ df_entries.append(
+ {
+ CLASS_COLUMN: cls,
+ PIXEL_COUNT_COLUMN: A + C,
+ DEPOSIT_COUNT_COLUMN: A,
+ WEIGHT_PLUS_COLUMN: w_plus,
+ WEIGHT_S_PLUS_COLUMN: s_w_plus,
+ WEIGHT_MINUS_COLUMN: w_minus,
+ WEIGHT_S_MINUS_COLUMN: s_w_minus,
+ CONTRAST_COLUMN: contrast,
+ S_CONTRAST_COLUMN: s_contrast,
+ STUDENTIZED_CONTRAST_COLUMN: studentized_contrast,
+ }
+ )
+ weights_df = pd.DataFrame(df_entries)
+
+ # 4. If we use cumulative weights type, calculate generalized classes and weights
+ if weights_type == "categorical":
+ weights_df = _generalized_classes_categorical(weights_df, studentized_contrast_threshold)
+ weights_df = _generalized_weights_categorical(weights_df, masked_deposit_array)
+ elif weights_type == "ascending" or weights_type == "descending":
+ weights_df = _generalized_classes_cumulative(weights_df, studentized_contrast_threshold)
+ weights_df = _generalized_weights_cumulative(weights_df, masked_deposit_array)
+
+ # 5. Generate arrays for desired metrics
+ arrays_dict = _generate_arrays_from_metrics(evidence_array, weights_df, metrics_to_arrays)
+
+ # Return nr. of deposit pixels and nr. of all evidence pixels for to be used in calculate responses
+ nr_of_deposits = int(np.sum(masked_deposit_array == 1))
+ nr_of_pixels = int(np.size(masked_evidence_array))
+
+ return weights_df, arrays_dict, raster_meta, nr_of_deposits, nr_of_pixels
+
+
+@beartype
+def weights_of_evidence_calculate_responses(
+ output_arrays: Sequence[Dict[str, np.ndarray]], nr_of_deposits: int, nr_of_pixels: int
+) -> Tuple[np.ndarray, np.ndarray, np.ndarray]:
+ """Calculate the posterior probabilities for the given generalized weight arrays.
+
+ Args:
+ output_arrays: List of output array dictionaries returned by weights of evidence calculations.
+ For each dictionary, generalized weight and generalized standard deviation arrays are used and summed
+ together pixel-wise to calculate the posterior probabilities. If generalized arrays are not found,
+ the W+ and S_W+ arrays are used (so if outputs from unique weight calculations are used for this function).
+ nr_of_deposits: Number of deposit pixels in the input data for weights of evidence calculations.
+ nr_of_pixels: Number of evidence pixels in the input data for weights of evidence calculations.
+
+ Returns:
+ Array of posterior probabilites.
+ Array of standard deviations in the posterior probability calculations.
+ Array of confidence of the prospectivity values obtained in the posterior probability array.
+ """
+ gen_weights_sum = sum(
+ [
+ item[GENERALIZED_WEIGHT_PLUS_COLUMN]
+ if GENERALIZED_WEIGHT_PLUS_COLUMN in item.keys()
+ else item[WEIGHT_PLUS_COLUMN]
+ for item in output_arrays
+ ]
+ )
+ gen_weights_variance_sum = sum(
+ [
+ np.square(item[GENERALIZED_S_WEIGHT_PLUS_COLUMN])
+ if GENERALIZED_S_WEIGHT_PLUS_COLUMN in item.keys()
+ else np.square(item[WEIGHT_S_PLUS_COLUMN])
+ for item in output_arrays
+ ]
+ )
+
+ prior_probabilities = nr_of_deposits / nr_of_pixels
+ prior_odds = np.log(prior_probabilities / (1 - prior_probabilities))
+ posterior_probabilities = np.exp(gen_weights_sum + prior_odds) / (1 + np.exp(gen_weights_sum + prior_odds))
+
+ posterior_probabilities_squared = np.square(posterior_probabilities)
+ posterior_probabilities_std = np.sqrt(
+ (1 / nr_of_deposits + gen_weights_variance_sum) * posterior_probabilities_squared
+ )
+
+ confidence_array = posterior_probabilities / posterior_probabilities_std
+ return posterior_probabilities, posterior_probabilities_std, confidence_array
diff --git a/notebooks/weights_of_evidence.ipynb b/notebooks/weights_of_evidence.ipynb
new file mode 100644
index 00000000..62bddc71
--- /dev/null
+++ b/notebooks/weights_of_evidence.ipynb
@@ -0,0 +1,1213 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import rasterio\n",
+ "from matplotlib import pyplot as plt\n",
+ "from rasterio.plot import show\n",
+ "import geopandas as gpd\n",
+ "\n",
+ "import sys\n",
+ "sys.path.insert(0, \"..\")\n",
+ "\n",
+ "from eis_toolkit.prediction.weights_of_evidence import weights_of_evidence_calculate_weights, weights_of_evidence_calculate_responses"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "108 1\n"
+ ]
+ }
+ ],
+ "source": [
+ "with rasterio.open(\"../tests/data/remote/wofe/wofe_evidence_raster.tif\") as evidence_raster:\n",
+ " deposits = gpd.read_file(\"../tests/data/remote/wofe/wofe_deposits.shp\")\n",
+ "\n",
+ " weights_unique, arrays_unique, raster_meta, nr_of_deposits, nr_of_pixels = weights_of_evidence_calculate_weights(evidence_raster, deposits, weights_type='unique')\n",
+ " weights_categorical, arrays_categorical, _, _, _= weights_of_evidence_calculate_weights(evidence_raster, deposits, weights_type='categorical', studentized_contrast_threshold=1)\n",
+ " weights_ascending, arrays_ascending, _, _, _= weights_of_evidence_calculate_weights(evidence_raster, deposits, weights_type='ascending', studentized_contrast_threshold=1)\n",
+ " weights_descending, arrays_descending, _, _, _ = weights_of_evidence_calculate_weights(evidence_raster, deposits, weights_type='descending', studentized_contrast_threshold=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Class | \n",
+ " Pixel count | \n",
+ " Deposit count | \n",
+ " W+ | \n",
+ " S_W+ | \n",
+ " W- | \n",
+ " S_W- | \n",
+ " Contrast | \n",
+ " S_Contrast | \n",
+ " Studentized contrast | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1.0 | \n",
+ " 275 | \n",
+ " 9 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ " 0.8804 | \n",
+ " 0.5096 | \n",
+ " 1.7275 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2.0 | \n",
+ " 11 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3.0 | \n",
+ " 396 | \n",
+ " 5 | \n",
+ " -0.4920 | \n",
+ " 0.4501 | \n",
+ " 0.3409 | \n",
+ " 0.3059 | \n",
+ " -0.8329 | \n",
+ " 0.5442 | \n",
+ " -1.5306 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5.0 | \n",
+ " 43 | \n",
+ " 1 | \n",
+ " 0.1296 | \n",
+ " 1.0118 | \n",
+ " -0.0081 | \n",
+ " 0.2609 | \n",
+ " 0.1377 | \n",
+ " 1.0449 | \n",
+ " 0.1318 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 6.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 8.0 | \n",
+ " 43 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 10.0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 3.8673 | \n",
+ " 1.4142 | \n",
+ " -0.0632 | \n",
+ " 0.2607 | \n",
+ " 3.9305 | \n",
+ " 1.4380 | \n",
+ " 2.7332 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 13.0 | \n",
+ " 10 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Class Pixel count Deposit count W+ S_W+ W- S_W- \\\n",
+ "0 1.0 275 9 0.4810 0.3389 -0.3994 0.3806 \n",
+ "1 2.0 11 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "2 3.0 396 5 -0.4920 0.4501 0.3409 0.3059 \n",
+ "3 5.0 43 1 0.1296 1.0118 -0.0081 0.2609 \n",
+ "4 6.0 1 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "5 8.0 43 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "6 10.0 2 1 3.8673 1.4142 -0.0632 0.2607 \n",
+ "7 13.0 10 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "\n",
+ " Contrast S_Contrast Studentized contrast \n",
+ "0 0.8804 0.5096 1.7275 \n",
+ "1 0.0000 0.0000 0.0000 \n",
+ "2 -0.8329 0.5442 -1.5306 \n",
+ "3 0.1377 1.0449 0.1318 \n",
+ "4 0.0000 0.0000 0.0000 \n",
+ "5 0.0000 0.0000 0.0000 \n",
+ "6 3.9305 1.4380 2.7332 \n",
+ "7 0.0000 0.0000 0.0000 "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Unique weights DF\n",
+ "weights_unique"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Class | \n",
+ " Pixel count | \n",
+ " Deposit count | \n",
+ " W+ | \n",
+ " S_W+ | \n",
+ " W- | \n",
+ " S_W- | \n",
+ " Contrast | \n",
+ " S_Contrast | \n",
+ " Studentized contrast | \n",
+ " Generalized class | \n",
+ " Generalized W+ | \n",
+ " Generalized S_W+ | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1.0 | \n",
+ " 275 | \n",
+ " 9 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ " 0.8804 | \n",
+ " 0.5096 | \n",
+ " 1.7275 | \n",
+ " 1.0 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3.0 | \n",
+ " 396 | \n",
+ " 5 | \n",
+ " -0.4920 | \n",
+ " 0.4501 | \n",
+ " 0.3409 | \n",
+ " 0.3059 | \n",
+ " -0.8329 | \n",
+ " 0.5442 | \n",
+ " -1.5306 | \n",
+ " 3.0 | \n",
+ " -0.4920 | \n",
+ " 0.4501 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 10.0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 3.8673 | \n",
+ " 1.4142 | \n",
+ " -0.0632 | \n",
+ " 0.2607 | \n",
+ " 3.9305 | \n",
+ " 1.4380 | \n",
+ " 2.7332 | \n",
+ " 10.0 | \n",
+ " 3.8673 | \n",
+ " 1.4142 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2.0 | \n",
+ " 11 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 99.0 | \n",
+ " -0.8055 | \n",
+ " 1.0047 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5.0 | \n",
+ " 43 | \n",
+ " 1 | \n",
+ " 0.1296 | \n",
+ " 1.0118 | \n",
+ " -0.0081 | \n",
+ " 0.2609 | \n",
+ " 0.1377 | \n",
+ " 1.0449 | \n",
+ " 0.1318 | \n",
+ " 99.0 | \n",
+ " -0.8055 | \n",
+ " 1.0047 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 6.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 99.0 | \n",
+ " -0.8055 | \n",
+ " 1.0047 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 8.0 | \n",
+ " 43 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 99.0 | \n",
+ " -0.8055 | \n",
+ " 1.0047 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 13.0 | \n",
+ " 10 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 99.0 | \n",
+ " -0.8055 | \n",
+ " 1.0047 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Class Pixel count Deposit count W+ S_W+ W- S_W- \\\n",
+ "0 1.0 275 9 0.4810 0.3389 -0.3994 0.3806 \n",
+ "2 3.0 396 5 -0.4920 0.4501 0.3409 0.3059 \n",
+ "6 10.0 2 1 3.8673 1.4142 -0.0632 0.2607 \n",
+ "1 2.0 11 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "3 5.0 43 1 0.1296 1.0118 -0.0081 0.2609 \n",
+ "4 6.0 1 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "5 8.0 43 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "7 13.0 10 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "\n",
+ " Contrast S_Contrast Studentized contrast Generalized class \\\n",
+ "0 0.8804 0.5096 1.7275 1.0 \n",
+ "2 -0.8329 0.5442 -1.5306 3.0 \n",
+ "6 3.9305 1.4380 2.7332 10.0 \n",
+ "1 0.0000 0.0000 0.0000 99.0 \n",
+ "3 0.1377 1.0449 0.1318 99.0 \n",
+ "4 0.0000 0.0000 0.0000 99.0 \n",
+ "5 0.0000 0.0000 0.0000 99.0 \n",
+ "7 0.0000 0.0000 0.0000 99.0 \n",
+ "\n",
+ " Generalized W+ Generalized S_W+ \n",
+ "0 0.4810 0.3389 \n",
+ "2 -0.4920 0.4501 \n",
+ "6 3.8673 1.4142 \n",
+ "1 -0.8055 1.0047 \n",
+ "3 -0.8055 1.0047 \n",
+ "4 -0.8055 1.0047 \n",
+ "5 -0.8055 1.0047 \n",
+ "7 -0.8055 1.0047 "
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Categorical weights DF\n",
+ "weights_categorical"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Class | \n",
+ " Pixel count | \n",
+ " Deposit count | \n",
+ " W+ | \n",
+ " S_W+ | \n",
+ " W- | \n",
+ " S_W- | \n",
+ " Contrast | \n",
+ " S_Contrast | \n",
+ " Studentized contrast | \n",
+ " Generalized class | \n",
+ " Generalized W+ | \n",
+ " Generalized S_W+ | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1.0 | \n",
+ " 275 | \n",
+ " 9 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ " 0.8804 | \n",
+ " 0.5096 | \n",
+ " 1.7275 | \n",
+ " 2 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2.0 | \n",
+ " 286 | \n",
+ " 9 | \n",
+ " 0.4405 | \n",
+ " 0.3387 | \n",
+ " -0.3771 | \n",
+ " 0.3807 | \n",
+ " 0.8176 | \n",
+ " 0.5095 | \n",
+ " 1.6046 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3.0 | \n",
+ " 682 | \n",
+ " 14 | \n",
+ " 0.0021 | \n",
+ " 0.2700 | \n",
+ " -0.0143 | \n",
+ " 0.7144 | \n",
+ " 0.0163 | \n",
+ " 0.7637 | \n",
+ " 0.0214 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5.0 | \n",
+ " 725 | \n",
+ " 15 | \n",
+ " 0.0101 | \n",
+ " 0.2609 | \n",
+ " -0.1400 | \n",
+ " 1.0090 | \n",
+ " 0.1501 | \n",
+ " 1.0422 | \n",
+ " 0.1440 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 6.0 | \n",
+ " 726 | \n",
+ " 15 | \n",
+ " 0.0087 | \n",
+ " 0.2609 | \n",
+ " -0.1217 | \n",
+ " 1.0092 | \n",
+ " 0.1304 | \n",
+ " 1.0424 | \n",
+ " 0.1251 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 8.0 | \n",
+ " 769 | \n",
+ " 15 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ " 1.4694 | \n",
+ " 1.0445 | \n",
+ " -1.5194 | \n",
+ " 1.0765 | \n",
+ " -1.4114 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 10.0 | \n",
+ " 771 | \n",
+ " 16 | \n",
+ " -0.0507 | \n",
+ " 0.2607 | \n",
+ " 1.5547 | \n",
+ " 1.0536 | \n",
+ " -1.6054 | \n",
+ " 1.0854 | \n",
+ " -1.4791 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 13.0 | \n",
+ " 781 | \n",
+ " 16 | \n",
+ " -0.0626 | \n",
+ " 0.2606 | \n",
+ " 3.8673 | \n",
+ " 1.4213 | \n",
+ " -3.9299 | \n",
+ " 1.4450 | \n",
+ " -2.7196 | \n",
+ " 1 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Class Pixel count Deposit count W+ S_W+ W- S_W- \\\n",
+ "0 1.0 275 9 0.4810 0.3389 -0.3994 0.3806 \n",
+ "1 2.0 286 9 0.4405 0.3387 -0.3771 0.3807 \n",
+ "2 3.0 682 14 0.0021 0.2700 -0.0143 0.7144 \n",
+ "3 5.0 725 15 0.0101 0.2609 -0.1400 1.0090 \n",
+ "4 6.0 726 15 0.0087 0.2609 -0.1217 1.0092 \n",
+ "5 8.0 769 15 -0.0501 0.2608 1.4694 1.0445 \n",
+ "6 10.0 771 16 -0.0507 0.2607 1.5547 1.0536 \n",
+ "7 13.0 781 16 -0.0626 0.2606 3.8673 1.4213 \n",
+ "\n",
+ " Contrast S_Contrast Studentized contrast Generalized class \\\n",
+ "0 0.8804 0.5096 1.7275 2 \n",
+ "1 0.8176 0.5095 1.6046 1 \n",
+ "2 0.0163 0.7637 0.0214 1 \n",
+ "3 0.1501 1.0422 0.1440 1 \n",
+ "4 0.1304 1.0424 0.1251 1 \n",
+ "5 -1.5194 1.0765 -1.4114 1 \n",
+ "6 -1.6054 1.0854 -1.4791 1 \n",
+ "7 -3.9299 1.4450 -2.7196 1 \n",
+ "\n",
+ " Generalized W+ Generalized S_W+ \n",
+ "0 0.4810 0.3389 \n",
+ "1 -0.3994 0.3806 \n",
+ "2 -0.3994 0.3806 \n",
+ "3 -0.3994 0.3806 \n",
+ "4 -0.3994 0.3806 \n",
+ "5 -0.3994 0.3806 \n",
+ "6 -0.3994 0.3806 \n",
+ "7 -0.3994 0.3806 "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Ascending weights DF\n",
+ "weights_ascending"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Class | \n",
+ " Pixel count | \n",
+ " Deposit count | \n",
+ " W+ | \n",
+ " S_W+ | \n",
+ " W- | \n",
+ " S_W- | \n",
+ " Contrast | \n",
+ " S_Contrast | \n",
+ " Studentized contrast | \n",
+ " Generalized class | \n",
+ " Generalized W+ | \n",
+ " Generalized S_W+ | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 13.0 | \n",
+ " 10 | \n",
+ " 0 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 2 | \n",
+ " 1.4694 | \n",
+ " 1.0445 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 12 | \n",
+ " 1 | \n",
+ " 1.4694 | \n",
+ " 1.0445 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ " 1.5194 | \n",
+ " 1.0765 | \n",
+ " 1.4114 | \n",
+ " 2 | \n",
+ " 1.4694 | \n",
+ " 1.0445 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 8.0 | \n",
+ " 55 | \n",
+ " 1 | \n",
+ " -0.1217 | \n",
+ " 1.0092 | \n",
+ " 0.0087 | \n",
+ " 0.2609 | \n",
+ " -0.1304 | \n",
+ " 1.0424 | \n",
+ " -0.1251 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 6.0 | \n",
+ " 56 | \n",
+ " 1 | \n",
+ " -0.1400 | \n",
+ " 1.0090 | \n",
+ " 0.0101 | \n",
+ " 0.2609 | \n",
+ " -0.1501 | \n",
+ " 1.0422 | \n",
+ " -0.1440 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5.0 | \n",
+ " 99 | \n",
+ " 2 | \n",
+ " -0.0143 | \n",
+ " 0.7144 | \n",
+ " 0.0021 | \n",
+ " 0.2700 | \n",
+ " -0.0163 | \n",
+ " 0.7637 | \n",
+ " -0.0214 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 3.0 | \n",
+ " 495 | \n",
+ " 7 | \n",
+ " -0.3771 | \n",
+ " 0.3807 | \n",
+ " 0.4405 | \n",
+ " 0.3387 | \n",
+ " -0.8176 | \n",
+ " 0.5095 | \n",
+ " -1.6046 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 2.0 | \n",
+ " 506 | \n",
+ " 7 | \n",
+ " -0.3994 | \n",
+ " 0.3806 | \n",
+ " 0.4810 | \n",
+ " 0.3389 | \n",
+ " -0.8804 | \n",
+ " 0.5096 | \n",
+ " -1.7275 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 1.0 | \n",
+ " 781 | \n",
+ " 16 | \n",
+ " -0.0626 | \n",
+ " 0.2606 | \n",
+ " 3.8673 | \n",
+ " 1.4213 | \n",
+ " -3.9299 | \n",
+ " 1.4450 | \n",
+ " -2.7196 | \n",
+ " 1 | \n",
+ " -0.0501 | \n",
+ " 0.2608 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Class Pixel count Deposit count W+ S_W+ W- S_W- \\\n",
+ "0 13.0 10 0 0.0000 0.0000 0.0000 0.0000 \n",
+ "1 10.0 12 1 1.4694 1.0445 -0.0501 0.2608 \n",
+ "2 8.0 55 1 -0.1217 1.0092 0.0087 0.2609 \n",
+ "3 6.0 56 1 -0.1400 1.0090 0.0101 0.2609 \n",
+ "4 5.0 99 2 -0.0143 0.7144 0.0021 0.2700 \n",
+ "5 3.0 495 7 -0.3771 0.3807 0.4405 0.3387 \n",
+ "6 2.0 506 7 -0.3994 0.3806 0.4810 0.3389 \n",
+ "7 1.0 781 16 -0.0626 0.2606 3.8673 1.4213 \n",
+ "\n",
+ " Contrast S_Contrast Studentized contrast Generalized class \\\n",
+ "0 0.0000 0.0000 0.0000 2 \n",
+ "1 1.5194 1.0765 1.4114 2 \n",
+ "2 -0.1304 1.0424 -0.1251 1 \n",
+ "3 -0.1501 1.0422 -0.1440 1 \n",
+ "4 -0.0163 0.7637 -0.0214 1 \n",
+ "5 -0.8176 0.5095 -1.6046 1 \n",
+ "6 -0.8804 0.5096 -1.7275 1 \n",
+ "7 -3.9299 1.4450 -2.7196 1 \n",
+ "\n",
+ " Generalized W+ Generalized S_W+ \n",
+ "0 1.4694 1.0445 \n",
+ "1 1.4694 1.0445 \n",
+ "2 -0.0501 0.2608 \n",
+ "3 -0.0501 0.2608 \n",
+ "4 -0.0501 0.2608 \n",
+ "5 -0.0501 0.2608 \n",
+ "6 -0.0501 0.2608 \n",
+ "7 -0.0501 0.2608 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Descending weights DF\n",
+ "weights_descending"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colormap_name = \"jet\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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r+rVq6tChQou7Q0aNMhzbYcOHVJycrKCgoJUrVo1l8fFixd1+vTpHMd36tRJJ0+e1OHDh7VlyxbZbDZFRka6hEkbN25Uhw4dnMHGoUOHZIxR/fr1Lfvcv39/jvu8fgzKlSvn0l6vXr0s+/v5+TnvWXRdYGBgrkIgu92ul156SZ999pmCg4PVuXNnTZ8+XYmJiTmO++WXX5SYmOjyyI6/v7+kXwO3vMrIyNCrr76q+vXry263q2rVqqpWrZq+/fZbJScnO/s9++yzqlChgtq1a6f69etr1KhR2rx5s8u2pk+frr179yosLEzt2rVTTExMrgI2AAAAACVDqbyn0aVLl9SiRQsNHz7ccoPe3HriiSf0xRdfaObMmWrWrJnOnTunc+fO5XOlKG78/Pwk/RoUZOXy5cvOPr/n7e2dZX9jTL7UZbPZstzW9RtAX5eRkaGgoCC99957WW4nc+CSWceOHSX9GsweOXJErVu3Vvny5dWpUye9/vrrunjxonbu3OkSsGZkZMhms+mzzz7L8jhkDsVuRnbHObfGjBmjXr16afny5fr88881ceJExcbGat26dWrVqlWWYz788EMNGzbMpS278+rv76/Q0FDt3bs3zzW++OKLmjhxooYPH67nn39elStXlpeXl8aMGaOMjAxnv0aNGungwYP65JNPtGrVKv373//WW2+9pUmTJmny5MmSpH79+qlTp05atmyZvvjiC82YMUMvvfSSli5dqh49euS5RgAAAADFQ6kMjXr06JHjLzypqan6xz/+oQ8++EBJSUlq2rSpXnrpJee3T+3fv19z5szR3r17nVd1hIeHF0bpKOJq164tSTp48KDCwsJc1l2+fFnHjx/XXXfdlW/7Wrt2rS5evOgSrBw8eNDSNzAwMMsrROLj412W69atqzVr1qhDhw4qW7as2zXVqlVLtWrV0saNG3XkyBHnx+w6d+6scePGacmSJXI4HOrcubPLPo0xCg8P16233urW/mrXrq3169fr8uXLLlcbZf7mOXdkdSXY79WtW1dPPvmknnzySR06dEgtW7bUyy+/rEWLFmXZv3v37lq9enWu9//nP/9Z77zzjuLi4hQZGelW7ZL08ccf64477tC7777r0p6UlKSqVau6tJUvX179+/dX//79lZaWpr/+9a+aOnWqJkyY4Aw3q1evrkcffVSPPvqoTp8+rdat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Ro4cqSlTpjiXy5Ur507pAAAAAAAAcINboVG1atVclqdNm6a6deuqS5cu2Y6x2WwKCQnJdv2gQYMkSceOHctx3+XKlctxOwAAAAAAAMg/eb6nUVpamhYtWqThw4dbrh76vYsXL6p27doKCwtT7969tW/fvjzt77333lPVqlXVtGlTTZgwQZcvX85r6QAAAAAAALgBt640+r3ly5crKSlJQ4cOzbZPgwYNNH/+fDVv3lzJycmaOXOm2rdvr3379qlmzZq53tf999+v2rVrKzQ0VN9++62effZZHTx4UEuXLs12TGpqqlJTU53LKSkpud4fAAAAAABAaZfn0Ojdd99Vjx49FBoamm2fyMhIRUZGOpfbt2+vRo0a6e2339bzzz+f6309+OCDzj83a9ZM1atX15133qkffvhBdevWzXJMbGysJk+enOt9AAAAAAAA4Dd5+nhafHy81qxZoxEjRrg1rkyZMmrVqpUOHz6cl906RURESFKO25kwYYKSk5Odj+PHj9/UPgEAAAAAAEqTPIVGCxYsUFBQkHr27OnWOIfDoT179qh69ep52a3Trl27JCnH7djtdvn7+7s8AAAAAAAAkDtufzwtIyNDCxYs0JAhQ+Tj4zp88ODBqlGjhmJjYyVJU6ZM0e2336569eopKSlJM2bMUHx8vMsVSufOnVNCQoJ++uknSdLBgwclSSEhIQoJCdEPP/yg999/X3/6059UpUoVffvttxo7dqw6d+6s5s2b53niAAAAAAAAyJ7bodGaNWuUkJCg4cOHW9YlJCTIy+u3i5fOnz+vkSNHKjExUYGBgWrTpo22bNmixo0bO/usWLFCw4YNcy4PGDBAkhQdHa2YmBj5+vpqzZo1mjVrli5duqSwsDDdc889eu6559wtHQAAAAAAALnkdmh01113yRiT5boNGza4LL/66qt69dVXc9ze0KFDc/wGtrCwMH355ZfulgkAAAAAAICbkKd7GgEAAAAAAKBkIzQCAAAAAACAhdsfT8MNHIgpnP00LKT9FLSSMo/SrmlM4exnr5v7yUtd/EwCAAAAgCSuNAIAAAAAAEAWCI0AAAAAAABgQWgEAABQTMyePVt16tSRn5+fIiIi9PXXX+fYPykpSaNGjVL16tVlt9t16623auXKlYVULQAAKO64pxEAAEAx8OGHH2rcuHGaO3euIiIiNGvWLHXv3l0H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b98+JSUlZfk+a9u2bUpLS+N9Fko8H08XAODmlSlTxtMleFxJPwahoaEKDw+3vJmJi4uTMUb33nuvZd315ZzezGzYsEF33HGHjh49Wuov4wcAlBwl/X1BbpSGYzB16lQFBARo27ZtqlSpksu606dP53o7bdu2lZ+fnzZt2qTHHnvM2b5582ZVqVJFbdu21aZNm/S3v/3NuS4377MWLlyoYcOGyRiT61qAooYrjYAiasOGDbLZbProo480depU1axZU35+frrzzjt1+PBhl75ZfWY9KSlJQ4cOVUBAgCpVqqQhQ4Zo165dstlsWrhwobNf165ds7z0O6ttZmRkaNasWWrSpIn8/PwUHByshx56SOfPn89xLitWrJDNZtO3337rbPv3v/8tm82mv/71ry59GzVqpP79+7u0LVq0SG3atFHZsmVVuXJlDRgwQMePH79hvT///LMGDRokf39/5zHYvXu35Rhcd+LECfXp00cVKlRQtWrV9NRTT8nhcEiSjh07pmrVqkmSJk+eLJvNJpvNppiYGElSYmKihg0bppo1a8put6t69erq3bu3jh07luOxcUfHjh21c+dO/fLLL862zZs3q0mTJurRo4f+97//KSMjw2WdzWZThw4d8q0GAAA8hfdGv+G90a9++OEHNWnSxBIYSVJQUFCut+Pr66vbbrvNcjXR5s2bFRkZqQ4dOmS5rlKlSmratGmeageKC0IjoIibNm2ali1bpqeeekoTJkzQ//73Pw0cODDHMcYY9e7dW//617/0t7/9TS+88IJ+/PFHDRky5KZqeeihh/T000+rQ4cOeu211zRs2DC999576t69u9LT07Md17FjR9lsNn311VfOto0bN8rLy8vl6pgzZ87owIED6ty5s7Nt6tSpGjx4sOrXr69XXnlFY8aM0dq1a9W5c2clJSVlu8+MjAz16tVLH3zwgYYMGaKpU6fq5MmT2R4Dh8Oh7t27q0qVKpo5c6a6dOmil19+We+8844kqVq1apozZ44k6S9/+Yv+9a9/6V//+pfzjd0999yjZcuWadiwYXrrrbf0+OOP68KFC0pISLjxgc2ljh07Kj09XVu3bnW2bd68We3bt1f79u2VnJysvXv3uqxr2LChqlSpkm81AADgabw34r3RdbVr19b27dtd3v/kVceOHXXixAmXUOv377Ouf1RN+vXnacuWLYqMjJSXF79So4QzAApFdHS0kWTOnDmT5fomTZqYLl26OJfXr19vJJlGjRqZ1NRUZ/trr71mJJk9e/Y424YMGWJq167tXF6+fLmRZKZPn+5su3r1qunUqZORZBYsWOBs79Kli8t+s9vmxo0bjSTz3nvvufRbtWpVlu1Zza9fv37O5datW5t7773XSDL79+83xhizdOlSI8ns3r3bGGPMsWPHjLe3t5k6darLtvbs2WN8fHxc2jPX++9//9tIMrNmzXK2ORwO84c//MFyDIYMGWIkmSlTprjsp1WrVqZNmzbO5TNnzhhJJjo62qXf+fPnjSQzY8aMHI/Bzdq3b5+RZJ5//nljjDHp6emmfPny5p///Kcxxpjg4GAze/ZsY4wxKSkpxtvb24wcOTLHbV7/OTt69GiB1g4AQGa8N+K90c364osvjLe3t/H29jaRkZHmmWeeMZ9//rlJS0tze1uffvqpkWT+9a9/GWOMOXnypJFkvvzyS3PhwgXj7e1tPv30U2OMMXv37jWSLOchswULFhh+5UZxRywKFHHDhg2Tr6+vc7lTp06SpCNHjmQ7ZuXKlfLx8dEjjzzibPP29nb5jLa7lixZooCAAHXr1k1nz551Ptq0aaMKFSpk+c1dv9epUydt3LhRknThwgXt3r1bDz74oKpWreps37hxo8tlvkuXLlVGRob69evnss+QkBDVr18/x32uWrVKZcqU0ciRI51tXl5eGjVqVLZjHn74YUvNOR3n68qWLStfX19t2LDhhpej34xGjRqpSpUqzv+B3L17ty5duuT8drT27ds7L52Oi4uTw+GwfM4+OTnZ5VgmJydLks6fP+/SfvHixQKbBwAAN4P3Rrw3uq5bt26Ki4vT3Xffrd27d2v69Onq3r27atSooRUrVri1rfbt27tc6bV582aVKVNGt912mypUqKDmzZs732ddf878Piu791O/bzt79qwuX758s1MHCk2pDI2++uor9erVS6GhobLZbFq+fLnb2zDGaObMmbr11ltlt9tVo0YNTZ06Nf+LRalis9ksbbVq1XJZDgwMlKQcX4Dj4+NVvXp1VahQwaW9QYMGea7t0KFDSk5OVlBQkKpVq+byuHjx4g1vNtipUyedPHlShw8f1pYtW2Sz2RQZGenyhmnjxo3q0KGD8zLfQ4cOyRij+vXrW/a5f//+HPd5/RiUK1fOpb1evXpZ9vfz83N+Lv+6wMDAXL3Rsdvteumll/TZZ58pODhYnTt31vTp05WYmJjjuF9++UWJiYkuj5zYbDa1b9/eee+izZs3KygoyDmn34dG2b2Z6d27t8tx7NOnjySpdevWLu2jR4++4bwBlC68f4In8N6I90Y3ctttt2np0qU6f/68vv76a02YMEEXLlxQ37599d13391w/HWVKlVSkyZNXN5LtWrVSmXLlpVkfZ/l6+urdu3auWyjVatWLufkeiiZ+VxNnz4913UBnlYqvz3t0qVLatGihYYPH2650VxuPfHEE/riiy80c+ZMNWvWTOfOndO5c+fyuVKUJH5+fpLkchPj37t8+bKzz+95e3tn2d/k07cw2Gy2LLd1/SaH12VkZCgoKEjvvfdeltvJ/KYis+vhxVdffaUjR46odevWKl++vDp16qTXX39dFy9e1M6dO11+ecjIyJDNZtNnn32W5XHI/MbvZmR3nHNrzJgx6tWrl5YvX67PP/9cEydOVGxsrNatW6dWrVplOebDDz/UsGHDXNpudF47duyo//73v9qzZ4/zc/bXtW/fXk8//bROnDihTZs2KTQ0VLfccovL+Jdfftnlzd7u3bv11FNPadGiRQoODna2h4aG5nruAEoH3j8hv/HeiPdGmeXlvdF1129mfdttt+nWW2/VsGHDtGTJEkVHR+e65o4dO2ru3LlKSkrK8n3W/PnzlZ6erk2bNqlNmzaWn8/33nvP5ef5iy++0IwZM7R69WqXfpnfnwFFWakMjXr06KEePXpkuz41NVX/+Mc/9MEHHygpKUlNmzbVSy+95PwWhf3792vOnDnau3ev838nwsPDC6N0FGO1a9eWJB08eFBhYWEu6y5fvqzjx4/rrrvuyrd9rV27VhcvXnR583Dw4EFL38DAwCwvM46Pj3dZrlu3rtasWaMOHTo4/8fFHbVq1VKtWrW0ceNGHTlyxHkpeefOnTVu3DgtWbJEDofD5UaPdevWlTFG4eHhuvXWW93aX+3atbV+/XpdvnzZ5X/UMn+7ijuy+t/O36tbt66efPJJPfnk/2/vzuOjqPK9j387ZAE0HUAJAY2AoCwqsniNCTioBFF5KZlBGZUrmwHnihsOLjxXTYM+JlcYcfTiMiJh5kHF0QuRcRhHFtERkEGEEVG5IJC4EJwRkgBKyHKePyAtnepOUkUv6c7n/Xr1q6mqc+r8TlUvP36p7v61duzYof79++s3v/mNFi1a5Lf9iBEjLElEY+oSzA8++EBr167VPffc4902aNAgJSUlac2aNdqwYYOuueYaS/9Bgwb5LMfHH3sbGDx4sOUXVgDgRORPCDZyI3Kj+pzkRv5cdNFFkqS9e/fa6jdkyBA999xzWrlypTZv3qz77rvPuy0rK0s//vij/vznP2vXrl0aPXq0pX/9X6z9+uuvJUnZ2dl2pwA0Gy3y42mNueOOO7R+/XotXrxYn3zyiW644QZdddVV2rFjhyTpT3/6k84++2y99dZb6t69u7p166bc3Fz+UoYGDRs2TImJiXruued8fhZdkn73u9+purq6wWTcjmuuuUbV1dXeX7SQjv117JlnnrG07dGjh7744gv985//9K77xz/+YflZ0TFjxqimpkaPPvqoZR/V1dUN/lpHnUsvvVSrV6/W3//+d29i1L9/fyUnJ6ugoEBt2rTxKWr84he/UKtWrTRz5kzLX5mMMfr+++8DjlX3qyUvvviid11tba3mzZvXaJyB1CVY9ef6ww8/6MiRIz7revTooeTkZFVWVgbcX+fOnZWdne1za8xFF12k1q1b6+WXX9Y333zj8xewpKQkDRw4UPPmzdPhw4ctH00DgFAif4Jd5EbkRvXZzY3effddv1ciLV++XJL9jx/W5U5PPvmkqqqqfPKsbt26qXPnzt6PlpFnoaVokVcaNaSkpESFhYUqKSnxfjxj+vTpevvtt1VYWKjHH39cu3btUnFxsV5//XX94Q9/UE1NjaZNm6brr79eq1evjvAM0FylpqbqkUce0UMPPaSf/exnuu6669S2bVutW7dOr776qq688kpde+21QRnr2muv1eDBg/Xggw9qz5496tu3r5YsWeL90uMTTZo0SU8++aRGjBihW2+9Vd99952ef/55nXfeeaqoqPC2Gzp0qG677Tbl5+dry5YtuvLKK5WQkKAdO3bo9ddf129/+1tdf/31DcZ16aWX6uWXX5bL5fK+0bZq1UpZWVn661//qssuu8zniy179Oihxx57TDNmzNCePXuUk5Oj5ORk7d69W0uXLtWUKVM0ffp0v2Pl5OTo4osv1q9//Wvt3LlTvXv31rJly7z/OWnsL2P+tGnTRn379tVrr72mc889Vx06dND555+v6upqDRs2TGPGjFHfvn0VHx+vpUuXat++fbrxxhttj9OQukuv//a3vykpKcly5VBWVpZ+85vfSCKZARA+5E9wgtyI3Ohk3Xnnnfrhhx/085//XL1799bRo0e1bt06vfbaa+rWrZvlo26NOeuss5Senq7169erW7dulo/rZ2Vl6X/+53/kcrksVxUBMSvsv9fWzEgyS5cu9S6/9dZbRpI55ZRTfG7x8fHen8ScPHmykWS2b9/u7bdp0yYjyXzxxRfhngKizKJFi8wll1xiTjnlFJOUlGR69+5tZs6caY4cOeLTru5nZV9//XWf9bt37/b7s6gn/qSqMcZ8//335pZbbjFut9ukpKSYW265xWzevNnSty6ms88+2yQmJpr+/fubv/71r373aYwxv/vd78ygQYNMmzZtTHJysrngggvM/fffb7799ttG5173k/F9+vTxWf/YY48ZSebhhx/22+9//ud/zJAhQ7zPx969e5upU6f6PAf9xfvPf/7T3HzzzSY5OdmkpKSYCRMmmLVr1xpJZvHixT59TznlFMu4dT8FfKJ169aZQYMGmcTERO9PzP7rX/8yU6dONb179zannHKKSUlJMRkZGeaPf/xjo8fEiRkzZhhJJisry7Kt7qd5k5OTTXV1daP7qnuc7d69OwSRAohV5E8IJnIjciOn/vKXv5hJkyaZ3r17m1NPPdUkJiaanj17mjvvvNPs27fP0T5vuukmI8ncfPPNlm1PPvmk3/MVSGFhoeV4AdHGZUyQvjEuSrlcLi1dutT7C0Kvvfaaxo4dq23btlm+/O3UU09VWlqa8vLy9Pjjj6uqqsq77ccff1Tbtm31zjvvaPjw4eGcAtBke/bsUffu3VVYWKgJEyZEOpyIKCoq0s9//nN98MEH/IUIABwif0KsIDciNwLQMD6eVs+AAQNUU1Oj7777zvu54voGDx6s6upqffnll+rRo4ck6X//938l/fSFfgAi78cff/T5Ysq67y5wu90aOHBgBCMDgNhC/gREB3IjAHa1yKLRoUOHfH4lYPfu3dqyZYs6dOigc889V2PHjtW4ceP0m9/8RgMGDNA///lPrVq1Sv369dPIkSOVnZ2tgQMHatKkSXrqqadUW1urqVOnavjw4bZ/xQBA6Nx555368ccflZmZqcrKSi1ZskTr1q3T448/7uhXTgCgJSN/AqJfS8yNysvL9eOPPzbYJi0tLUzRAFEo0p+Pi4S6z0PXv40fP94YY8zRo0fNI488Yrp162YSEhJM586dzc9//nPzySefePfxzTffmF/84hfm1FNPNZ06dTITJkww33//fYRmBDSNv8/8x7KXX37ZDBw40LjdbpOYmGj69u1rnnnmmUiHBQBRifwJsYjcKPZzo/Hjx/t97TrxBiCwFv+dRgAAAACA2PTZZ5/p22+/bbBNdnZ2mKIBog9FIwAAAAAAAFjERToAAAAAAAAAND8t5ouwa2tr9e233yo5OVkulyvS4QAAgACMMTp48KC6dOmiuDj+vhVJ5E8AAESHUOVPLaZo9O233yo9PT3SYQAAgCb66quvdOaZZ0Y6jBaN/AkAgOgS7PypxRSNkpOTJR07gG63O8LRAACAQCoqKpSenu5970bkkD8BABAdQpU/tZiiUd0l1W63m6QHAIAowMehIo/8CQCA6BLs/IkvCgAAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACARbydxt26dVNxcbFl/e2336558+ZZ1i9cuFATJ070WZeUlKQjR45IkqqqqvTQQw9p+fLl2rVrl1JSUpSdna2CggJ16dKlwXHz8/P14IMP2gk/LFwuT6RDiKxcT+jHmB/6MYwJ/RgAgJaB/KlxrrWRjiDCisIwRk7ohzCDQz8GACC8bBWNNm7cqJqaGu/yp59+quHDh+uGG24I2Mftdmv79u3eZZfL5f33Dz/8oI8//lgPP/ywLrzwQh04cEB33323rrvuOn300Uc++5k1a5YmT57sXU5OTrYTOgAAQESQPwEAgGhlq2jUsWNHn+WCggL16NFDQ4cODdjH5XIpLS3N77aUlBStWLHCZ91///d/6+KLL1ZJSYnOOuss7/rk5OSA+wEAAGiuyJ8AAEC0cvydRkePHtWiRYs0adIkn79+1Xfo0CF17dpV6enpGjVqlLZt29bgfsvLy+VyudSuXTuf9QUFBTrttNM0YMAAzZ49W9XV1Q3up7KyUhUVFT43AACASCJ/AgAA0cTWlUYnKioqUllZmSZMmBCwTa9evbRgwQL169dP5eXlmjNnjrKysrRt2zadeeaZlvZHjhzRAw88oJtuuklut9u7/q677tLAgQPVoUMHrVu3TjNmzNDevXv15JNPBhw7Pz9fM2fOdDo9AACAoCN/AgAA0cRljDFOOo4YMUKJiYn605/+1OQ+VVVV6tOnj2666SY9+uijlm2jR4/W119/rTVr1vgkPfUtWLBAt912mw4dOqSkpCS/bSorK1VZWeldrqioUHp6usrLyxvc98nii7A9oR+DL8IGgJhWUVGhlJSUkL9nRwL5k398EXYYxsgJ/RB8ETYARE6o8idHVxoVFxdr5cqVWrJkia1+CQkJGjBggHbu3OmzvqqqSmPGjFFxcbFWr17d6AQzMjJUXV2tPXv2qFevXn7bJCUlBUyIAAAAwo38CQAARBtH32lUWFio1NRUjRw50la/mpoabd26VZ07d/auq0t4duzYoZUrV+q0005rdD9btmxRXFycUlNTbccOAAAQCeRPAAAg2ti+0qi2tlaFhYUaP3684uN9u48bN05nnHGG8vPzJR37mddLLrlEPXv2VFlZmWbPnq3i4mLl5uZKOpbwXH/99fr444/11ltvqaamRqWlpZKkDh06KDExUevXr9eGDRt0+eWXKzk5WevXr9e0adP07//+72rfvv3Jzh8AACDkyJ8AAEA0sl00WrlypUpKSjRp0iTLtpKSEsXF/XTx0oEDBzR58mSVlpaqffv2GjRokNatW6e+fftKkr755hstW7ZMktS/f3+ffb377ru67LLLlJSUpMWLF8vj8aiyslLdu3fXtGnTdO+999oNHQAAICLInwAAQDRy/EXY0SZcX6rJF2F7Qj8GX4QNADEtlr8IO9qELX/ii7BDLyf0Q/BF2AAQOaF6z3b0nUYAAAAAAACIbY5+PQ0NcHKlzfwwXOyV6wr9GOHi6Bjb69PirxgLA67mAgB4FTnoM8cT5CD8mB6GMcKlyEGfHHvNW/wVY2HA1VwAwo0rjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYuY4yJdBDhUFFRoZSUFJWXl8vtdodsHJcrhg5nrivSEUTOGw76lHmCHQUiwBhPpEMAWrxwvWejceHLnzwh23fYTfdEOoKIMZfbzx1dKTGUO7dgZnCkIwAQqvdsrjQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYxEc6gJiT64p0BAiG6x30ecNjv0+Zgz4IKZfLE+kQ/DLGE+kQACB0pnsiHQGCwPWusd3HXG4/d3al2B8HoeVaG+kI/DODIx0BEP240ggAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABbxkQ4g5sz32O+T66APmp/rnXTy2Gv+hoMhymyOgWbJ5fJEOgS/jPFEOgQAsSDHQZ+iIMeAiHC9a0I+hrncZbuPKyX0cSH0XGsjHYF/ZnCkIwCajiuNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFvF2Gnfr1k3FxcWW9bfffrvmzZtnWb9w4UJNnDjRZ11SUpKOHDkiSaqqqtJDDz2k5cuXa9euXUpJSVF2drYKCgrUpUsXb5/9+/frzjvv1J/+9CfFxcVp9OjR+u1vf6tTTz3VTvhA9LveQZ83PPb7lDnogxbJ5fI46JUX7DAsjHGFfAygqcifgMhyvWts9zGX238fcaXYHwctk2utg05DPMEOw8KY0I+B6GOraLRx40bV1NR4lz/99FMNHz5cN9xwQ8A+brdb27dv9y67XD+9AP/www/6+OOP9fDDD+vCCy/UgQMHdPfdd+u6667TRx995G03duxY7d27VytWrFBVVZUmTpyoKVOm6JVXXrETPgAAQNiRPwEAgGhlq2jUsWNHn+WCggL16NFDQ4cODdjH5XIpLS3N77aUlBStWLHCZ91///d/6+KLL1ZJSYnOOussff7553r77be1ceNGXXTRRZKkZ555Rtdcc43mzJnj8xc1AACA5ob8CQAARCvH32l09OhRLVq0SJMmTfL561d9hw4dUteuXZWenq5Ro0Zp27ZtDe63vLxcLpdL7dq1kyStX79e7dq18yY8kpSdna24uDht2LAh4H4qKytVUVHhcwMAAIgk8icAABBNHBeNioqKVFZWpgkTJgRs06tXLy1YsEBvvvmmFi1apNraWmVlZenrr7/22/7IkSN64IEHdNNNN8ntdkuSSktLlZqa6tMuPj5eHTp0UGlpacCx8/PzlZKS4r2lp6fbnyQAAEAQkT8BAIBo4rho9NJLL+nqq69u8PLmzMxMjRs3Tv3799fQoUO1ZMkSdezYUS+88IKlbVVVlcaMGSNjjJ577jmnYXnNmDFD5eXl3ttXX3110vsEAAA4GeRPAAAgmtj6TqM6xcXFWrlypZYsWWKrX0JCggYMGKCdO3f6rK9LeIqLi7V69WrvX8kkKS0tTd99951P++rqau3fvz/gZ/2lY78ykpSUZCs+AACAUCF/AgAA0cbRlUaFhYVKTU3VyJEjbfWrqanR1q1b1blzZ++6uoRnx44dWrlypU477TSfPpmZmSorK9OmTZu861avXq3a2lplZGQ4CR8AACDsyJ8AAEC0sX2lUW1trQoLCzV+/HjFx/t2HzdunM444wzl5+dLkmbNmqVLLrlEPXv2VFlZmWbPnq3i4mLl5uZKOpbwXH/99fr444/11ltvqaamxvs5+w4dOigxMVF9+vTRVVddpcmTJ+v5559XVVWV7rjjDt1444388gcAAIgK5E8AACAa2S4arVy5UiUlJZo0aZJlW0lJieLifrp46cCBA5o8ebJKS0vVvn17DRo0SOvWrVPfvn0lSd98842WLVsmSerfv7/Pvt59911ddtllkqSXX35Zd9xxh4YNG6a4uDiNHj1aTz/9tN3QAQAAIoL8CQAARCOXMcZEOohwqKioUEpKisrLy30+8x9sLpfHfqdcB32ApnrDQZ8yT7CjAE6QF/IRjAn8U+Zo/sL1no3GhS1/WuugU1GwowB+Yi63/z7iSmkR/61CpAzxhHwIY0I/BkInVO/Zjn89DQAAAAAAALGLohEAAAAAAAAsbH+nERrh5KNm8x304SNtzc98B5ck54bhIzTXO+jzhsdeez7OhmbG5QrHRwRmhmEMLhVHC1HkoE9OmMZBaM3x2O8z3UEfm1zv2n8fsfuRNj7OhubG0Vet2PVBGMaQZAaHZZgWgSuNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgER/pAGLOfOOgU17Qw7CY77HfJ9dBn3BwMhe7muvcgZgwMwxjhOF11dEY9ufucnkcjBN6xngiHQJiyRyPgz4Oxpluc5wcB2MUOegTDjlhGKMoDGMALdUHntCPMaSZjuFg7q619ocJBzM40hHYx5VGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC5cxxkQ6iHCoqKhQSkqKysvL5Xa7QzaOa7KDTvOdnIKZ9prneuwPMd9BH7vjOJq7EzaPl/LsD5Hrst8nVrzhoE+ZJ9hRACfJwfM+LOy+fjVPxnia3DZc79loXNjyp/scdJrjsd/nA5t9iuwPoRwHfeyO42TuTtg9XkNstpek6Q76xAhzuf3c0ZXSIv7rhmji5HkfDnZfv5opM7jpbUP1ns2VRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAIv4SAcASbkuB5089prPt9k+bGba75Lrsd9nvt0xnJwTANHN7utRXkiiANBE0z32+xTZbJ9jf4iw+MBjv09RsIPww8k5ARDd7L4eDbHZHhHHlUYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCIt9O4W7duKi4utqy//fbbNW/ePMv6hQsXauLEiT7rkpKSdOTIEe/ykiVL9Pzzz2vTpk3av3+/Nm/erP79+/v0ueyyy/Tee+/5rLvtttv0/PPP2wk/POZ77PfJddCnubI7/+Y69/nGfp9cV/DjiGXtPPb7lDnoAwARRv7UBDkO+hQFOYZIyrHZvigEMQTDHI/9PtMd9GnBTLn9fNOV4iCvBYDjbBWNNm7cqJqaGu/yp59+quHDh+uGG24I2Mftdmv79u3eZZfL94Xu8OHDGjJkiMaMGaPJkycH3M/kyZM1a9Ys73Lbtm3thA4AABAR5E8AACBa2SoadezY0We5oKBAPXr00NChQwP2cblcSktLC7j9lltukSTt2bOnwbHbtm3b4H4AAACaI/InAAAQrRx/p9HRo0e1aNEiTZo0yfLXrxMdOnRIXbt2VXp6ukaNGqVt27Y5Gu/ll1/W6aefrvPPP18zZszQDz/84DR0AACAiCB/AgAA0cTWlUYnKioqUllZmSZMmBCwTa9evbRgwQL169dP5eXlmjNnjrKysrRt2zadeeaZTR7r5ptvVteuXdWlSxd98skneuCBB7R9+3YtWbIkYJ/KykpVVlZ6lysqKpo8HgAAQCiQPwEAgGjiuGj00ksv6eqrr1aXLl0CtsnMzFRmZqZ3OSsrS3369NELL7ygRx99tMljTZkyxfvvCy64QJ07d9awYcP05ZdfqkePHn775Ofna+bMmU0eAwAAINTInwAAQDRx9PG04uJirVy5Urm5ubb6JSQkaMCAAdq5c6eTYb0yMjIkqcH9zJgxQ+Xl5d7bV199dVJjAgAAnAzyJwAAEG0cFY0KCwuVmpqqkSNH2upXU1OjrVu3qnPnzk6G9dqyZYskNbifpKQkud1unxsAAECkkD8BAIBoY/vjabW1tSosLNT48eMVH+/bfdy4cTrjjDOUn58vSZo1a5YuueQS9ezZU2VlZZo9e7aKi4t9/sK2f/9+lZSU6Ntvv5Uk78/LpqWlKS0tTV9++aVeeeUVXXPNNTrttNP0ySefaNq0afrZz36mfv36OZ44AABAuJA/AQCAaGS7aLRy5UqVlJRo0qRJlm0lJSWKi/vp4qUDBw5o8uTJKi0tVfv27TVo0CCtW7dOffv29bZZtmyZJk6c6F2+8cYbJUl5eXnyeDxKTEzUypUr9dRTT+nw4cNKT0/X6NGj9dBDD9kNHQAAICLInwAAQDSyXTS68sorZYzxu23NmjU+y3PnztXcuXMb3N+ECRMa/AWR9PR0vffee3bDBAAAaDbInwAAQDRy9J1GAAAAAAAAiG0UjQAAAAAAAGBh++NpaESuJzzjzA/TOKEWK/No6a4P0zhveOy1dxIXj0kACL+iMI2TE6ZxQi0n0gEgGFzv+v/IarCZy1222juKK8d+FwDRgSuNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFi5jjIl0EOFQUVGhlJQUlZeXy+12h2wcl8sTsn3HpFxPeMaZb/NhnutyMIbHfp9wzb+leiPSAURYmSfSEcAiLwxjzAzDGPYZ42ly23C9Z6NxYcuf1oZs17GpKEzjzPHYaz/dZntJyrHfJWzzb6HM5Q7y4BjiSmkR/z2OLkM8oR/jgzCM4YAZ3PS2oXrP5kojAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYxEc6AIRJrifSEfg334RnnFxXGMbwhH4M2HO9gz5vBD2KyAnHY9LJ8SrzBDuKCMkL0zgzwzQOAIuiSAcQwBxPeMaZHoZxikI/BOxxvWs/PzeXhyHXDpei0A/h5Hi5UsL0/6ZQG+IJzzgfhGmcFoArjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABbxkQ4g5uR6Ih2Bf/M99vs017nkukI/RiwdL9hTZuz3aReGx6QTb0Q6gADaeey1L7PZvlmbGekAgOapKNIBBJDjoE9RkGMIlume0I+R46BPUZBjQES4RubZ7mP+3DzfE83lzTOvM+X24nKlOMhpm6sPPJGOoEXjSiMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIBFvJ3G3bp1U3FxsWX97bffrnnz5lnWL1y4UBMnTvRZl5SUpCNHjniXlyxZoueff16bNm3S/v37tXnzZvXv39+nz5EjR/TrX/9aixcvVmVlpUaMGKFnn31WnTp1shN+eMz32O+T66CP3XGcjBEOua5IRxBZTh4vdjXXc+9Ec33cX2+z/RshicKqzBP6MdqFYYxwvEY6MjMMYyAWkD81QY6DPkVhGMfJGOEw3RPpCCIrJwxjFIVhjHDJsdm+KAQx+OF619hqby4Pz/8bXCn24nLClIdhLkUO+uQEOQZ/PvCEYRAEk60rjTZu3Ki9e/d6bytWrJAk3XDDDQH7uN1unz71k6bDhw9ryJAh+q//+q+A+5g2bZr+9Kc/6fXXX9d7772nb7/9Vr/4xS/shA4AABAR5E8AACBa2brSqGPHjj7LBQUF6tGjh4YOHRqwj8vlUlpaWsDtt9xyiyRpz549freXl5frpZde0iuvvKIrrrhCklRYWKg+ffroww8/1CWXXGJnCgAAAGFF/gQAAKKV4+80Onr0qBYtWqRJkybJ5Qp8ed2hQ4fUtWtXpaena9SoUdq2bZutcTZt2qSqqiplZ2d71/Xu3VtnnXWW1q9fH7BfZWWlKioqfG4AAACRRP4EAACiieOiUVFRkcrKyjRhwoSAbXr16qUFCxbozTff1KJFi1RbW6usrCx9/fXXTR6ntLRUiYmJateunc/6Tp06qbS0NGC//Px8paSkeG/p6elNHhMAACAUyJ8AAEA0cVw0eumll3T11VerS5cuAdtkZmZq3Lhx6t+/v4YOHaolS5aoY8eOeuGFF5wO22QzZsxQeXm59/bVV1+FfEwAAICGkD8BAIBoYus7jeoUFxdr5cqVWrJkia1+CQkJGjBggHbu3NnkPmlpaTp69KjKysp8/lq2b9++Bj/rn5SUpKSkJFvxAQAAhAr5EwAAiDaOrjQqLCxUamqqRo4caatfTU2Ntm7dqs6dOze5z6BBg5SQkKBVq1Z5123fvl0lJSXKzMy0NT4AAECkkD8BAIBoY/tKo9raWhUWFmr8+PGKj/ftPm7cOJ1xxhnKz8+XJM2aNUuXXHKJevbsqbKyMs2ePVvFxcXKzc319tm/f79KSkr07bffSjqW0EjH/kKWlpamlJQU3Xrrrbr33nvVoUMHud1u3XnnncrMzOSXPwAAQFQgfwIAANHIdtFo5cqVKikp0aRJkyzbSkpKFBf308VLBw4c0OTJk1VaWqr27dtr0KBBWrdunfr27etts2zZMk2cONG7fOONN0qS8vLy5PF4JElz585VXFycRo8ercrKSo0YMULPPvus3dABAAAigvwJAABEI9tFoyuvvFLGGL/b1qxZ47M8d+5czZ07t8H9TZgwocFfEJGk1q1ba968eZo3b56dUAEAAJoF8icAABCNHP96GgAAAAAAAGIXRSMAAAAAAABY2P54GhqR67HfZ77/y9UbluegD0JqvifSEUSXcBwvR2M4eG694WAYu8o8YRikmQrH8QUQWUUO+szxOOhjs/10B2PAnpxIBxBlcprpGHafW5LM5S4HA9njSnHy/6zY4OT4utRyjxcC40ojAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYxEc6gFiTN99lu8/MXBOCSCJkvsde+1yb7cPFSVx25x4uzTWu5qqd/eewbWWe0I/hRLge9+0c9AEQ0/LmOMifpsdQ/pRjs31RCGIIhiIHfXKCHEOw5EQ6gOhi/jwz5GO4Uprpc77IfhdXjv25mPIw5KiAH1xpBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsHAZY0ykgwiHiooKpaSkqLy8XG63O2TjuCbb75M332W7z8zcFnHaIme+k+M7M+hhACcl1xPpCILjjTCNU+YJ00AtkzGeJrcN13s2Ghe2/Ok++33y5jjIn6aTP4XUHI/9Ph846AOEUlGkAwgOc7n910gnXCm8roaSGdz0tqF6z+ZKIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgIXLGGMiHUQ4VFRUKCUlReXl5XK73SEbx+Vqpocz1xXpCIJnfjiO8cwwjIGQy/VEOgL/5nsiHYF/zfV4OdFcj3ELZoynyW3D9Z6NxoUvf/KEbN8nZbon0hEEzxxP6Mf4IAxjIPSKIh1AADmRDiCAokgHEEQ5kQ4A9ZnBTW8bqvdsrjQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIBFvJ3G3bp1U3FxsWX97bffrnnz5lnWL1y4UBMnTvRZl5SUpCNHjniXjTHKy8vTiy++qLKyMg0ePFjPPfeczjnnnAbHzc/P14MPPmgn/JZtvrHfJ9cV/Djqm+8J/RhALMj1RDqC6OLkePF6hBAhf4piczz2+0x30MeuHCd9PEEOAogCRZEOIMoUOeiTE+QY0OzYKhpt3LhRNTU13uVPP/1Uw4cP1w033BCwj9vt1vbt273LLpdvIeKJJ57Q008/rd///vfq3r27Hn74YY0YMUKfffaZWrdu7W03a9YsTZ482bucnJxsJ3QAAICIIH8CAADRylbRqGPHjj7LBQUF6tGjh4YOHRqwj8vlUlpamt9txhg99dRTeuihhzRq1ChJ0h/+8Ad16tRJRUVFuvHGG71tk5OTA+4HAACguSJ/AgAA0crxdxodPXpUixYt0qRJkyx//TrRoUOH1LVrV6Wnp2vUqFHatm2bd9vu3btVWlqq7Oxs77qUlBRlZGRo/fr1PvspKCjQaaedpgEDBmj27Nmqrq5uML7KykpVVFT43AAAACKJ/AkAAEQTW1canaioqEhlZWWaMGFCwDa9evXSggUL1K9fP5WXl2vOnDnKysrStm3bdOaZZ6q0tFSS1KlTJ59+nTp18m6TpLvuuksDBw5Uhw4dtG7dOs2YMUN79+7Vk08+GXDs/Px8zZw50+n0AAAAgo78CQAARBPHRaOXXnpJV199tbp06RKwTWZmpjIzM73LWVlZ6tOnj1544QU9+uijTR7r3nvv9f67X79+SkxM1G233ab8/HwlJSX57TNjxgyffhUVFUpPT2/ymAAAAMFG/gQAAKKJo4+nFRcXa+XKlcrNzbXVLyEhQQMGDNDOnTslyfsZ+3379vm027dvX4Ofv8/IyFB1dbX27NkTsE1SUpLcbrfPDQAAIFLInwAAQLRxVDQqLCxUamqqRo4caatfTU2Ntm7dqs6dO0uSunfvrrS0NK1atcrbpqKiQhs2bPD5C1t9W7ZsUVxcnFJTU52EDwAAEHbkTwAAINrY/nhabW2tCgsLNX78eMXH+3YfN26czjjjDOXn50s69jOvl1xyiXr27KmysjLNnj1bxcXF3r+wuVwu3XPPPXrsscd0zjnneH8ytkuXLsrJyZEkrV+/Xhs2bNDll1+u5ORkrV+/XtOmTdO///u/q3379ic5fQAAgNAjfwIAANHIdtFo5cqVKikp0aRJkyzbSkpKFBf308VLBw4c0OTJk1VaWqr27dtr0KBBWrdunfr27ettc//99+vw4cOaMmWKysrKNGTIEL399ttq3bq1pGOXSS9evFgej0eVlZXq3r27pk2b5vN5ewAAgOaM/AkAAEQjlzHGRDqIcKioqFBKSorKy8tD+vl8lyuGDmdu4J8CDpr5ntCPgZYr1xPpCPxz8rhvrnOJJbwehZQxnia3Ddd7NhoXvvzJE7J9h910T+jHyAn9EGjBiiIdQAA5DvoUBTkGWOVEOoDYZgY3vW2o3rMdfacRAAAAAAAAYhtFIwAAAAAAAFjY/k4jNMyYMHykS2H6GNx8B2PY/UhbuD5yw8dOYkOsfEQrVuaBMMmz2X5mSKIAQsnOxxdPRlg+BjfHwRh2P9JWZH8IR3LCNA5CqyjSAQRJUaQDQFQZ4rHX/gOb7VsQrjQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYxEc6ADhjjCvSIfjlchl7HXKb5zzCJ89m+5khiSIicj2RjgCIEjH0vAcizBhPpEPwy+Xy2Osw3Wb7WDPEY6/9BzbbN2dFkQ4AiBKx9LyPMK40AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACARXykA0BsMcYV6RD8cs0PwyC5ntCPEY55hMt8j/0+4TjGiA1OHl8AECHGeCIdgl+utWEYpMhBn+meIAcRRXIc9CkKcgyIXTmRDgDNEVcaAQAAAAAAwIKiEQAAAAAAACwoGgEAAAAAAMCCohEAAAAAAAAsKBoBAAAAAADAgqIRAAAAAAAALCgaAQAAAAAAwIKiEQAAAAAAACwoGgEAAAAAAMCCohEAAAAAAAAsKBoBAAAAAADAgqIRAAAAAAAALOIjHQAQDsZ4Ih2CX67JkY4AMW2+sdc+1xWaOE7WfE+kIwCAFskMDsMgDsZw3Rf8MACvOR577afbbB8uOZEOALGCK40AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdEIAAAAAAAAFhSNAAAAAAAAYEHRCAAAAAAAABYUjQAAAAAAAGBhq2jUrVs3uVwuy23q1Kl+2y9cuNDStnXr1j5tjDF65JFH1LlzZ7Vp00bZ2dnasWOHT5v9+/dr7NixcrvdateunW699VYdOnTI5lQBAADCj/wJAABEq3g7jTdu3Kiamhrv8qeffqrhw4frhhtuCNjH7XZr+/bt3mWXy+Wz/YknntDTTz+t3//+9+revbsefvhhjRgxQp999pk3QRo7dqz27t2rFStWqKqqShMnTtSUKVP0yiuv2AkfaHbMizY7vOgJRRgnzeXyRDoE+JPrarzNCWw/HsOlmT7ugaYifwKCy8yOdATB4Vob6Qjg13SPreax8ngEArFVNOrYsaPPckFBgXr06KGhQ4cG7ONyuZSWluZ3mzFGTz31lB566CGNGjVKkvSHP/xBnTp1UlFRkW688UZ9/vnnevvtt7Vx40ZddNFFkqRnnnlG11xzjebMmaMuXbrYmQIAAEBYkT8BAIBo5fg7jY4ePapFixZp0qRJlr9+nejQoUPq2rWr0tPTNWrUKG3bts27bffu3SotLVV2drZ3XUpKijIyMrR+/XpJ0vr169WuXTtvwiNJ2dnZiouL04YNGwKOW1lZqYqKCp8bAABAJJE/AQCAaOK4aFRUVKSysjJNmDAhYJtevXppwYIFevPNN7Vo0SLV1tYqKytLX3/9tSSptLRUktSpUyeffp06dfJuKy0tVWpqqs/2+Ph4dejQwdvGn/z8fKWkpHhv6enpTqYJAAAQNORPAAAgmjguGr300ku6+uqrG7y8OTMzU+PGjVP//v01dOhQLVmyRB07dtQLL7zgdNgmmzFjhsrLy723r776KuRjAgAANIT8CQAARBNb32lUp7i4WCtXrtSSJUts9UtISNCAAQO0c+dOSfJ+Vn/fvn3q3Lmzt92+ffvUv39/b5vvvvvOZz/V1dXav39/wM/6S1JSUpKSkpJsxQcAABAq5E8AACDaOLrSqLCwUKmpqRo5cqStfjU1Ndq6das3wenevbvS0tK0atUqb5uKigpt2LBBmZmZko79ta2srEybNm3ytlm9erVqa2uVkZHhJHwAAICwI38CAADRxvaVRrW1tSosLNT48eMVH+/bfdy4cTrjjDOUn58vSZo1a5YuueQS9ezZU2VlZZo9e7aKi4uVm5sr6dgvg9xzzz167LHHdM4553h/MrZLly7KycmRJPXp00dXXXWVJk+erOeff15VVVW64447dOONN/LLHwAAICqQPwEAgGhku2i0cuVKlZSUaNKkSZZtJSUliov76eKlAwcOaPLkySotLVX79u01aNAgrVu3Tn379vW2uf/++3X48GFNmTJFZWVlGjJkiN5++221bt3a2+bll1/WHXfcoWHDhikuLk6jR4/W008/bTd0AACAiCB/AgAA0chljDGRDiIcKioqlJKSovLycrnd7kiHA8QUl8sTnoFywzROC2VejHQEwDG8ZzcfnAsgdFxrwzRQUZjGaaHM7EhHABwTqvdsx7+eBgAAAAAAgNhF0QgAAAAAAAAWtr/TCADqM8YT6RAAAACiihkcpoHCNQ6AmMSVRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsKBoBAAAAAAAAAuKRgAAAAAAALCgaAQAAAAAAAALikYAAAAAAACwoGgEAAAAAAAAC4pGAAAAAAAAsIiPdADhYoyRJFVUVEQ4EgAA0JC69+q6925EDvkTAADRIVT5U4spGh08eFCSlJ6eHuFIAABAUxw8eFApKSmRDqNFI38CACC6BDt/cpkW8me82tpaffvtt0pOTpbL5Yp0OGFTUVGh9PR0ffXVV3K73ZEOJ+xa8vyZO3NvaXOXWvb8Y2nuxhgdPHhQXbp0UVwcn6SPJPKn6H8+OdGS58/cmTtzb1liaf6hyp9azJVGcXFxOvPMMyMdRsS43e6ofxKcjJY8f+bO3Fuiljz/WJk7Vxg1D+RPsfF8cqolz5+5M/eWpiXPXYqd+Ycif+LPdwAAAAAAALCgaAQAAAAAAAALikYxLikpSXl5eUpKSop0KBHRkufP3Jl7S9SS59+S5w4EW0t/PrXk+TN35t7StOS5S8y/KVrMF2EDAAAAAACg6bjSCAAAAAAAABYUjQAAAAAAAGBB0QgAAAAAAAAWFI0AAAAAAABgQdGomSkoKJDL5dI999zjXfe73/1Ol112mdxut1wul8rKyiz99u/fr7Fjx8rtdqtdu3a69dZbdejQIZ82n3zyiS699FK1bt1a6enpeuKJJyz7ef3119W7d2+1bt1aF1xwgZYvX+6z3RijRx55RJ07d1abNm2UnZ2tHTt2RHTu3bp1k8vl8rkVFBRE9dz379+vO++8U7169VKbNm101lln6a677lJ5eblPv5KSEo0cOVJt27ZVamqq7rvvPlVXV/u0WbNmjQYOHKikpCT17NlTCxcutIw/b948devWTa1bt1ZGRob+/ve/+2w/cuSIpk6dqtNOO02nnnqqRo8erX379gVl7icz//rn3eVyafHixVE1f3+P+9tuu009evRQmzZt1LFjR40aNUpffPGFT79YOPdO5x6r572OMUZXX321XC6XioqKfLbFwnkHQoH8ifxJaln5U0vOnfzNXyJ/In8ifwoZg2bj73//u+nWrZvp16+fufvuu73r586da/Lz801+fr6RZA4cOGDpe9VVV5kLL7zQfPjhh+Zvf/ub6dmzp7npppu828vLy02nTp3M2LFjzaeffmpeffVV06ZNG/PCCy9426xdu9a0atXKPPHEE+azzz4zDz30kElISDBbt271tikoKDApKSmmqKjI/OMf/zDXXXed6d69u/nxxx8jNveuXbuaWbNmmb1793pvhw4diuq5b9261fziF78wy5YtMzt37jSrVq0y55xzjhk9erS3X3V1tTn//PNNdna22bx5s1m+fLk5/fTTzYwZM7xtdu3aZdq2bWvuvfde89lnn5lnnnnGtGrVyrz99tveNosXLzaJiYlmwYIFZtu2bWby5MmmXbt2Zt++fd42v/rVr0x6erpZtWqV+eijj8wll1xisrKyTmreJzt/Y4yRZAoLC33O/Ynno7nPP9Dj/oUXXjDvvfee2b17t9m0aZO59tprTXp6uqmurjbGxMa5dzp3Y2L3vNd58sknzdVXX20kmaVLl3rXx8J5B0KB/In8qaXlTy05dwo0f2PIn8ifyJ9ChaJRM3Hw4EFzzjnnmBUrVpihQ4f6fSK8++67ft/4P/vsMyPJbNy40bvuL3/5i3G5XOabb74xxhjz7LPPmvbt25vKykpvmwceeMD06tXLuzxmzBgzcuRIn31nZGSY2267zRhjTG1trUlLSzOzZ8/2bi8rKzNJSUnm1VdfjcjcjTmW9MydOzfg/qN97nX++Mc/msTERFNVVWWMMWb58uUmLi7OlJaWets899xzxu12e+d6//33m/POO89nP7/85S/NiBEjvMsXX3yxmTp1qne5pqbGdOnSxeTn53vnmZCQYF5//XVvm88//9xIMuvXr3c8d2NObv7GGMubQn3Nef525v6Pf/zDSDI7d+40xkT/uT+ZuRsT2+d98+bN5owzzjB79+61zDPazzsQCuRP5E8tLX9qybmTMeRP5E/kT5HAx9OaialTp2rkyJHKzs623Xf9+vVq166dLrroIu+67OxsxcXFacOGDd42P/vZz5SYmOhtM2LECG3fvl0HDhzwtqk//ogRI7R+/XpJ0u7du1VaWurTJiUlRRkZGd42TpzM3OsUFBTotNNO04ABAzR79myfyw1jZe7l5eVyu92Kj4/3xnzBBReoU6dOPjFXVFRo27ZtTZrX0aNHtWnTJp82cXFxys7O9rbZtGmTqqqqfNr07t1bZ5111knNXTq5+Z+4j9NPP10XX3yxFixYIGOMd1tznn9T53748GEVFhaqe/fuSk9P984rms/9ycz9xH3E2nn/4YcfdPPNN2vevHlKS0uzbI/28w6EAvkT+VNjYi1/asm5U13s5E/kTycifwq9+MabINQWL16sjz/+WBs3bnTUv7S0VKmpqT7r4uPj1aFDB5WWlnrbdO/e3adN3ROntLRU7du3V2lpqc+Tqa7Nifs4sZ+/Nnad7Nwl6a677tLAgQPVoUMHrVu3TjNmzNDevXv15JNPeuOO9rn/61//0qOPPqopU6Z41wWK+cR4A7WpqKjQjz/+qAMHDqimpsZvm7rPQZeWlioxMVHt2rWztHE6d+nk5y9Js2bN0hVXXKG2bdvqnXfe0e23365Dhw7prrvu8sbeHOfflLk/++yzuv/++3X48GH16tVLK1as8Cbu0XzuT3buUuye92nTpikrK0ujRo3yuz2azzsQCuRP5E+NibX8qSXnThL5E/kT+VOkUDSKsK+++kp33323VqxYodatW0c6nLAK1tzvvfde77/79eunxMRE3XbbbcrPz1dSUlIwQg06O3OvqKjQyJEj1bdvX3k8nvAEGGLBmv/DDz/s/feAAQN0+PBhzZ492/vm1xw1de5jx47V8OHDtXfvXs2ZM0djxozR2rVro/p1Ilhzj8XzvmzZMq1evVqbN2+OQHRA9CF/In9qaflTS86dJPIn8ifyp0ji42kRtmnTJn333XcaOHCg4uPjFR8fr/fee09PP/204uPjVVNT0+g+0tLS9N133/msq66u1v79+72X6KWlpVm+ub1uubE2J24/sZ+/NnYEY+7+ZGRkqLq6Wnv27PHGHa1zP3jwoK666iolJydr6dKlSkhI8O7jZObldrvVpk0bnX766WrVqlWjcz969Kjll1eczj1Y8/cnIyNDX3/9tSorK5vt/Js695SUFJ1zzjn62c9+pjfeeENffPGFli5d2uC86rbF8tz9iYXzvmLFCn355Zdq166dd7skjR49WpdddlmD86rb1lznDoQC+RP5U0vLn1py7mRn/uRP5E8S+VOwUTSKsGHDhmnr1q3asmWL93bRRRdp7Nix2rJli1q1atXoPjIzM1VWVqZNmzZ5161evVq1tbXKyMjwtnn//fdVVVXlbbNixQr16tVL7du397ZZtWqVz75XrFihzMxMSVL37t2Vlpbm06aiokIbNmzwtgn33P3ZsmWL4uLivJecR+vcKyoqdOWVVyoxMVHLli2zVNczMzO1detWn4R3xYoVcrvd6tu3b5PmlZiYqEGDBvm0qa2t1apVq7xtBg0apISEBJ8227dvV0lJiaO5B2v+/mzZskXt27f3/oW0Oc7fyePeHPvRAu+berSe+2DM3Z9YOO//+Z//qU8++cRnuyTNnTtXhYWF3nlF43kHQoH8ifyppeVPLTl3aur86yN/In+qm1c0nvdmJTLfv42G1P9G+L1795rNmzebF1980Ugy77//vtm8ebP5/vvvvW2uuuoqM2DAALNhwwbzwQcfmHPOOcfnJ2PLyspMp06dzC233GI+/fRTs3jxYtO2bVvLz6bGx8ebOXPmmM8//9zk5eX5/dnUdu3amTfffNN88sknZtSoUUH52VSnc1+3bp2ZO3eu2bJli/nyyy/NokWLTMeOHc24ceOieu7l5eUmIyPDXHDBBWbnzp0+P41Z/2dDr7zySrNlyxbz9ttvm44dO/r9+cj77rvPfP7552bevHl+fz4yKSnJLFy40Hz22WdmypQppl27dj6/MPCrX/3KnHXWWWb16tXmo48+MpmZmSYzMzMo83Y6/2XLlpkXX3zRbN261ezY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zFzV6dTBgwf10UcfafPmzbrjjjskHXvNNcYoPj5e77zzjq644grH+295z74olJiYqEGDBmnVqlXedbW1tVq1alXA76nIzMz0aS9JK1asaPB7LSLFyfzqq6mp0datW9W5c+dQhRl20XQOg2XLli3N9hwaY3THHXdo6dKlWr16tbp3795on2g7h07mWF+0PRdra2tVWVnpd1u0nb9AGppjfdF2/nByYj2/cMppXvLEE0/o0Ucf1dtvv62LLrooHKGGjd1j0rt3b23dulVbtmzx3q677jrvr0Clp6eHM/yQcfJYGTx4sHbu3OktoknS//7v/6pz584xUTCSnB2XH374wVIYqiusHfse4JanJbzeOvXqq69q4sSJevXVVzVy5MhIhxNxbrfb8pr7q1/9ynv1eUZGxskNEJSv00bILV682CQlJZmFCxeazz77zEyZMsW0a9fOlJaWGmOMueWWW8yDDz7obb927VoTHx9v5syZYz7//HOTl5dnEhISzNatWyM1hQbZnd/MmTPNX//6V/Pll1+aTZs2mRtvvNG0bt3abNu2LVJTaNTBgwfN5s2bzebNm40k8+STT5rNmzeb4uJiY4wxDz74oLnlllu87Xft2mXatm1r7rvvPvP555+befPmmVatWpm33347UlNokN35zZ071xQVFZkdO3aYrVu3mrvvvtvExcWZlStXRmoKDfqP//gPk5KSYtasWWP27t3rvf3www/eNtH+PHQyx2h6Lj744IPmvffeM7t37zaffPKJefDBB43L5TLvvPOOMSb6z58x9ucYTecPoRHr+YVTdo9LQUGBSUxMNG+88YbP6+fBgwcjNYWgs3tM6ovVX0+ze1xKSkpMcnKyueOOO8z27dvNW2+9ZVJTU81jjz0WqSmEhN3jkpeXZ5KTk82rr75qdu3aZd555x3To0cPM2bMmEhNIehi/f8CTtk9Li+//LKJj4838+bN83m9LSsri9QUQsLucakvmL+eRtEoijzzzDPmrLPOMomJiebiiy82H374oXfb0KFDzfjx433a//GPfzTnnnuuSUxMNOedd57585//HOaI7bEzv3vuucfbtlOnTuaaa64xH3/8cQSibrq6n5ivf6ub1/jx483QoUMtffr3728SExPN2WefbQoLC8Med1PZnd9//dd/mR49epjWrVubDh06mMsuu8ysXr06MsE3gb+5SfI5J9H+PHQyx2h6Lk6aNMl07drVJCYmmo4dO5phw4Z5iynGRP/5M8b+HKPp/CF0Yj2/cMrOcenatavf18+8vLzwBx5Cdh8rJ4rVopEx9o/LunXrTEZGhklKSjJnn322+b//9/+a6urqMEcdenaOS1VVlfF4PN7cMD093dx+++3mwIED4Q88RGL9/wJO2T0uQ4cObbB9rHDyeDlRMItGLmNa6PV+AAAAAAAACIjvNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFhQNAIAAAAAAIAFRSMAAAAAAABYUDQCAAAAAACABUUjAAAAAAAAWFA0AgAAAAAAgAVFIwAAAAAAAFj8f+kt0LM5tX//AAAAAElFTkSuQmCC",
+ "text/plain": [
+ "