{ "cells": [ { "cell_type": "markdown", "id": "4d1991ab-dc93-452c-a1df-1409e75be72c", "metadata": { "id": "4d1991ab-dc93-452c-a1df-1409e75be72c" }, "source": [ "```{index} single: AMPL; AMPL Python API\n", "```\n", "```{index} bilinear constraints\n", "```\n", "```{index} McCormick envelopes\n", "```\n", "```{index} single: solver; cbc\n", "```\n", "```{index} single: solver; couenne\n", "```\n", "# Milk pooling and blending\n", "\n", "Pooling and blending operations involve the \"pooling\" of various streams to create intermediate mixtures that are subsequently blended with other streams to meet final product specifications. These operations are common to the chemical processing and petroleum sectors where limited tankage may be available, or when it is necessary to transport materials by train, truck, or pipeline to remote blending terminals. Similar applications arise in agriculture, food, mining, wastewater treatment, and other industries.\n", "\n", "This notebook considers a simple example of a wholesale milk distributor to show how **non-convexity** arises in the optimization of pooling and blending operations. Non-convexity is due to presence of **bilinear** terms that are the product of two decision variables where one is a scale-dependent **extensive** quantity measuring the amount or flow of a product, and the other is scale-independent **intensive** quantity such as product composition. The notebook then shows how to develop and solve a convex approximation of the problem, and finally demonstrates solution the use of [Couenne](https://github.com/coin-or/Couenne), a solver specifically designed to find global solutions to mixed integer nonlinear optimization (MINLO) problems." ] }, { "cell_type": "code", "execution_count": 1, "id": "62aae00a-42a2-4b18-9949-d1b996b34824", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 17101, "status": "ok", "timestamp": 1686079705486, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "62aae00a-42a2-4b18-9949-d1b996b34824", "outputId": "3d428f98-b63f-4bfe-cfee-946c8f2ada1d", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using default Community Edition License for Colab. Get yours at: https://ampl.com/ce\n", "Licensed to AMPL Community Edition License for the AMPL Model Colaboratory (https://colab.ampl.com).\n" ] } ], "source": [ "# install dependencies and select solver\n", "%pip install -q amplpy pandas matplotlib numpy scipy\n", "\n", "SOLVER_LO = \"cbc\"\n", "SOLVER_GNLO = \"couenne\"\n", "\n", "from amplpy import AMPL, ampl_notebook\n", "\n", "ampl = ampl_notebook(\n", " modules=[\"coin\"], # modules to install\n", " license_uuid=\"default\", # license to use\n", ") # instantiate AMPL object and register magics" ] }, { "cell_type": "code", "execution_count": 2, "id": "150dd57f", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from itertools import product" ] }, { "cell_type": "markdown", "id": "c5123315-1824-4c68-a345-aee738d187d1", "metadata": { "id": "c5123315-1824-4c68-a345-aee738d187d1" }, "source": [ "## Problem: Pooling milk for wholesale blending and distribution\n", "\n", "A bulk distributor supplies custom blends of milk to several customers. Each customer has specified a minimum fat content, a maximum price, and a maximum amount for the milk they wish to buy. The distributor sources raw milk from local farms. Each farm produces a milk with a known fat content and cost. \n", "\n", "The distributor has recently identified more affordable sources raw milk from several distant farms. These distant farms produce milk grades that can be blend with milk from the local farms. However, the distributor only has one truck with a single tank available for transporting milk from the distant farms. As a result, milk from the distant farms must be combined in the tank before being transported to the blending station. This creates a \"pool\" of uniform composition which to be blended with local milk to meet customer requirements.\n", "\n", "The process is shown in the following diagram. The fat content and cost of raw milk is given for each farm. For each customer, data is given for the required milk fat content, price, and the maximum demand. The arrows indicate pooling and blending of raw milk supplies. Each arrow is labeled with the an amount of raw milk.\n", "\n", "![](milk-pooling.png)\n", "\n", "What should the distributor do?\n", "\n", "* Option 1. Do nothing. Continue operating the business as usual with local suppliers.\n", "\n", "* Option 2. Buy a second truck to transport raw milk from the remote farms to the blending facility without pooling.\n", "\n", "* Option 3. Pool raw milk from the remote farms into a single truck for transport to the blending facility.\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "ca9deb2b-f980-431c-b72c-9c0fb0599c8e", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 371 }, "executionInfo": { "elapsed": 105, "status": "ok", "timestamp": 1686079705489, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "ca9deb2b-f980-431c-b72c-9c0fb0599c8e", "outputId": "3e3604eb-c02d-4f00-b879-79b9ef997792", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Customers\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
min_fatpricedemand
Customer 10.04552.06000.0
Customer 20.03048.02500.0
Customer 30.04050.04000.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " min_fat price demand\n", "Customer 1 0.045 52.0 6000.0\n", "Customer 2 0.030 48.0 2500.0\n", "Customer 3 0.040 50.0 4000.0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Suppliers\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fatcostlocation
Farm A0.04545.0local
Farm B0.0342.0local
Farm C0.03337.0remote
Farm D0.0545.0remote
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " fat cost location\n", "Farm A 0.045 45.0 local\n", "Farm B 0.03 42.0 local\n", "Farm C 0.033 37.0 remote\n", "Farm D 0.05 45.0 remote" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "customers = pd.DataFrame(\n", " {\n", " \"Customer 1\": {\"min_fat\": 0.045, \"price\": 52.0, \"demand\": 6000.0},\n", " \"Customer 2\": {\"min_fat\": 0.030, \"price\": 48.0, \"demand\": 2500.0},\n", " \"Customer 3\": {\"min_fat\": 0.040, \"price\": 50.0, \"demand\": 4000.0},\n", " }\n", ").T\n", "\n", "suppliers = pd.DataFrame(\n", " {\n", " \"Farm A\": {\"fat\": 0.045, \"cost\": 45.0, \"location\": \"local\"},\n", " \"Farm B\": {\"fat\": 0.030, \"cost\": 42.0, \"location\": \"local\"},\n", " \"Farm C\": {\"fat\": 0.033, \"cost\": 37.0, \"location\": \"remote\"},\n", " \"Farm D\": {\"fat\": 0.050, \"cost\": 45.0, \"location\": \"remote\"},\n", " },\n", ").T\n", "\n", "local_suppliers = suppliers[suppliers[\"location\"] == \"local\"]\n", "remote_suppliers = suppliers[suppliers[\"location\"] == \"remote\"]\n", "\n", "print(\"\\nCustomers\")\n", "display(customers)\n", "\n", "print(\"\\nSuppliers\")\n", "display(suppliers)" ] }, { "cell_type": "markdown", "id": "5e37a24e-b622-4f09-bf51-e1253fc2e77c", "metadata": { "id": "5e37a24e-b622-4f09-bf51-e1253fc2e77c" }, "source": [ "## Option 1. Business as usual\n", "\n", "The normal business of the milk distributor is to blend supplies from local farms to meet customer requirements. Let $L$ designate the set of local suppliers, and let $C$ designate the set of customers. Decision variable $z_{l, c}$ is the amount of milk from local supplier $l\\in L$ that is mixed into the blend sold to customer $c\\in C$.\n", "\n", "The distributor's objectives is to maximize profit\n", "\n", "$$\n", "\\begin{align*}\n", "\\text{profit} & = \\sum_{(l, c)\\ \\in\\ L \\times C} (\\text{price}_c - \\text{cost}_l) z_{l,c}\n", "\\end{align*}\n", "$$ \n", "\n", "where $(l, c)\\ \\in\\ L\\times C$ indicates a summation over the cross-product of two sets. Each term, $(\\text{price}_c - \\text{cost}_l)$, is the net profit of including one unit of raw milk from supplier $l\\in L$ in the blend delivered to customer $c\\in C$.\n", "\n", "The amount of milk delivered to each customer $c\\in C$ can not exceed the customer demand.\n", "\n", "$$\n", "\\begin{align*}\n", "\\sum_{l\\in L} z_{l, c} & \\leq \\text{demand}_{c} & \\forall c\\in C\n", "\\end{align*}\n", "$$\n", "\n", "Let $\\text{fat}_l$ denote the fat content of the raw milke produced by farm $l$, and let $\\text{min_fat}_c$ denote the minimum fat content required by customer $c$, respectively. Assuming linear blending, the model becomes\n", "\n", "$$\n", "\\begin{align*}\n", "\\sum_{(l,c)\\ \\in\\ L \\times C} \\text{fat}_{l} z_{l,c} & \\geq \\text{min_fat}_{c} \\sum_{l\\in L} z_{l, c} & \\forall c \\in C\n", "\\end{align*}\n", "$$\n", "\n", "This is a standard linear blending problem that can be solved by linear optimization (LO)." ] }, { "cell_type": "code", "execution_count": 4, "id": "7b9f59dd", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 276 }, "executionInfo": { "elapsed": 92, "status": "ok", "timestamp": 1686079705490, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "7b9f59dd", "outputId": "20462ae3-7720-4047-e9ca-1222e82e9f6b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Profit = 81000.00\n", "\n", "Blending Plan\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Totalfat contentmin_fat
supplierFarm AFarm B
customer
Customer 16000.00.06000.00.0450.045
Customer 20.02500.02500.00.0300.030
Customer 32666.71333.34000.00.0400.040
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " Total fat content min_fat\n", "supplier Farm A Farm B \n", "customer \n", "Customer 1 6000.0 0.0 6000.0 0.045 0.045\n", "Customer 2 0.0 2500.0 2500.0 0.030 0.030\n", "Customer 3 2666.7 1333.3 4000.0 0.040 0.040" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = AMPL()\n", "model.eval(\n", " \"\"\"\n", " # define sources and customers\n", " set L;\n", " set C;\n", "\n", " param price{C};\n", " param demand{C};\n", " param min_fat{C};\n", " param cost{L};\n", " param fat{L};\n", "\n", " # define local -> customer flowrates\n", " var z{L cross C} >= 0;\n", "\n", " maximize profit: sum{l in L, c in C} z[l, c]*(price[c] - cost[l]);\n", "\n", " subject to demand_req{c in C}:\n", " sum{l in L} z[l, c] <= demand[c];\n", "\n", " subject to fat_content{c in C}:\n", " sum{l in L} z[l, c] * fat[l] >= sum{l in L} z[l, c] * min_fat[c];\n", "\"\"\"\n", ")\n", "\n", "model.set_data(customers, \"C\")\n", "model.set_data(local_suppliers.drop(columns=[\"location\"]), \"L\")\n", "\n", "model.solve(solver=SOLVER_LO, verbose=False)\n", "assert model.solve_result == \"solved\", model.solve_result\n", "\n", "# report results\n", "print(f\"\\nProfit = {model.obj['profit'].value():0.2f}\\n\")\n", "\n", "# create dataframe of results\n", "z = model.var[\"z\"]\n", "L = model.set[\"L\"]\n", "C = model.set[\"C\"]\n", "\n", "print(\"Blending Plan\")\n", "Z = pd.DataFrame(\n", " [[l, c, round(z[l, c].value(), 1)] for l in L.members() for c in C.members()],\n", " columns=[\"supplier\", \"customer\", \"\"],\n", ")\n", "Z = Z.pivot_table(index=\"customer\", columns=\"supplier\")\n", "Z[\"Total\"] = Z.sum(axis=1)\n", "Z[\"fat content\"] = [\n", " sum(z[l, c].value() * suppliers.loc[l, \"fat\"] for l in L.members())\n", " / sum(z[l, c].value() for l in L.members())\n", " for c in C.members()\n", "]\n", "Z[\"min_fat\"] = customers[\"min_fat\"]\n", "\n", "display(Z)" ] }, { "cell_type": "markdown", "id": "5f6aa24f-ba1d-4e58-8e48-1fef33a818a4", "metadata": { "id": "5f6aa24f-ba1d-4e58-8e48-1fef33a818a4" }, "source": [ "## Option 2. Buy an additional truck\n", "\n", "The distributor can earn a profit of 81,000 using only local suppliers. Is is possible earn a higher profit by also sourcing raw milk from the remote suppliers?\n", "\n", "Before considering pooling, the distributor may wish to know the maximum profit possible if raw milk from the remote suppliers could be blended just like local suppliers. This would require acquiring and operating a separate transport truck for each remote supplier, and is worth knowing if the additional profit would justify the additional expense.\n", "\n", "The linear optimization model presented Option 1 extends the to include both local and remote suppliers. " ] }, { "cell_type": "code", "execution_count": 5, "id": "rVuw4ZRpVOsK", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 276 }, "executionInfo": { "elapsed": 87, "status": "ok", "timestamp": 1686079705492, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "rVuw4ZRpVOsK", "outputId": "18403857-af8f-4539-8a07-bd8e2ecdebe0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Profit = 122441.18\n", "\n", "Blending Plan\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Totalfat contentmin_fat
supplierFarm AFarm BFarm CFarm D
customer
Customer 10.00.01764.74235.36000.00.0450.045
Customer 20.00.02500.00.02500.00.0330.030
Customer 30.00.02352.91647.14000.00.0400.040
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " Total fat content min_fat\n", "supplier Farm A Farm B Farm C Farm D \n", "customer \n", "Customer 1 0.0 0.0 1764.7 4235.3 6000.0 0.045 0.045\n", "Customer 2 0.0 0.0 2500.0 0.0 2500.0 0.033 0.030\n", "Customer 3 0.0 0.0 2352.9 1647.1 4000.0 0.040 0.040" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = AMPL()\n", "model.eval(\n", " \"\"\"\n", " # define sources and customers\n", " set S;\n", " set C;\n", "\n", " param price{C};\n", " param demand{C};\n", " param min_fat{C};\n", " param cost{S};\n", " param fat{S};\n", "\n", " # define local -> customer flowrates\n", " var z{S cross C} >= 0;\n", "\n", " maximize profit: sum{s in S, c in C} z[s, c]*(price[c] - cost[s]);\n", "\n", " subject to demand_req{c in C}:\n", " sum{s in S} z[s, c] <= demand[c];\n", "\n", " subject to quality{c in C}:\n", " sum{s in S} z[s, c] * fat[s] >= sum{s in S} z[s, c] * min_fat[c];\n", "\"\"\"\n", ")\n", "\n", "model.set_data(customers, \"C\")\n", "model.set_data(suppliers.drop(columns=[\"location\"]), \"S\")\n", "\n", "model.solve(solver=SOLVER_LO, verbose=False)\n", "assert model.solve_result == \"solved\", model.solve_result\n", "\n", "# report results\n", "print(f\"\\nProfit = {model.obj['profit'].value():0.2f}\\n\")\n", "\n", "# create dataframe of results\n", "z = model.var[\"z\"]\n", "S = model.set[\"S\"]\n", "C = model.set[\"C\"]\n", "\n", "print(\"Blending Plan\")\n", "Z = pd.DataFrame(\n", " [[s, c, round(z[s, c].value(), 1)] for s in S.members() for c in C.members()],\n", " columns=[\"supplier\", \"customer\", \"\"],\n", ")\n", "Z = Z.pivot_table(index=\"customer\", columns=\"supplier\")\n", "Z[\"Total\"] = Z.sum(axis=1)\n", "Z[\"fat content\"] = [\n", " sum(z[s, c].value() * suppliers.loc[s, \"fat\"] for s in S.members())\n", " / sum(z[s, c].value() for s in S.members())\n", " for c in C.members()\n", "]\n", "Z[\"min_fat\"] = customers[\"min_fat\"]\n", "\n", "display(Z)" ] }, { "cell_type": "markdown", "id": "ac935e2d-d2c9-45cb-8923-7d3ba0f90617", "metadata": { "id": "ac935e2d-d2c9-45cb-8923-7d3ba0f90617" }, "source": [ "Sourcing raw milk from the remote farms significantly increases profits. This blending, however, requires at least two trucks to keep the sources of milk from the remote suppliers separated until they reach the blending facility. Note that the local suppliers are completely replaced by the lower cost remote suppliers, even to the extent of providing \"product giveaway\" by surpassing the minimum requirements of Customer 2." ] }, { "cell_type": "markdown", "id": "63e8e18c-f085-46b5-b878-14e7051b3beb", "metadata": { "id": "63e8e18c-f085-46b5-b878-14e7051b3beb" }, "source": [ "## Option 3. Pool delivery from remote suppliers\n", "\n", "Comparing Option 1 with Option 2 shows there is significantly more profit to be earned by purchasing raw milk from the remote suppliers. But that option requires an additional truck to keep the supplies separated during transport. \n", "\n", "Because only one truck with a single tank is available for transport from the remote farms, the pool and blending problem is to combine purchases from the remote suppliers into a single pool of uniform composition, transport that pool to the distribution facility, then blend with raw milk from local suppliers to meet individual customer requirements. Compared to option 2, the profit potential may be reduced due to pooling, but without the need to acquire an additional truck.\n", "\n", "### Pooling problem\n", "\n", "There are a several mathematical formulations of pooling problem in the academic literature. The formulation used here is called the \"p-parameterization\" where the pool composition represents a new decision variable $p$. The other additional decision variables are $x_r$ referring to the amount of raw milk purchased from remote supplier $r\\in R$, and $y_c$ which is the amount of the pooled milk included in the blend delivered to customer $c\\in C$.\n", "\n", "The profit objective is the difference between the income received for selling blended products and the cost of purchasing raw milk from local and remote suppliers.\n", "\n", "$$\n", "\\begin{align*}\n", "\\text{Profit} & = \\sum_{(l,c)\\ \\in\\ L \\times C} (\\text{price}_c - \\text{cost}_l)\\ z_{l,c}\n", "+ \\sum_{c\\in C} \\text{price}_c y_{c} - \\sum_{r\\in R} \\text{cost}_r x_{r}\n", "\\end{align*}\n", "$$\n", "\n", "The product delivered to each customer from local farms and the pool can not exceed demand.\n", "\n", "$$\n", "\\begin{align*}\n", "\\sum_{l\\in L} z_{l, c} + y_{c} & \\leq \\text{demand}_{c} & \\forall c\\in C\n", "\\end{align*}\n", "$$\n", "\n", "Purchases from the remote farms and the amounts delivered to customers from the pool must balance.\n", "\n", "$$\n", "\\begin{align*}\n", "\\sum_{r\\in R}x_{r} & = \\sum_{c\\in C} y_{c} \\\\\n", "\\end{align*}\n", "$$\n", "\n", "The average milk fat composition of the pool, $p$, must satisfy an overall balance on milk fat entering the pool from the remote farms and the milk fat delivered to customers.\n", "\n", "$$\n", "\\begin{align*}\n", "\\sum_{r\\in R}\\text{fat}_{r}\\ x_{r} & = \\underbrace{p \\sum_{c\\in C} y_{c}}_{\\text{bilinear}}\n", "\\end{align*}\n", "$$\n", "\n", "Finally, the milk fat required by each customer $c\\in C$ satisfies a blending constraint.\n", "\n", "$$\n", "\\begin{align*}\n", "\\underbrace{p y_{c}}_{\\text{bilinear}} + \\sum_{(l,c)\\ \\in\\ L \\times C} \\text{fat}_{l}\\ z_{l,c}\n", "& \\geq \\text{min_fat}_{c}\\ (\\sum_{l\\in L} z_{l, c} + y_{c})\n", "& \\forall c \\in C\n", "\\end{align*}\n", "$$\n", "\n", "The last two constraints include **bilinear** terms which are the product of the decision variable $p$ with decision variables $y_c$ for all $c\\in C$. " ] }, { "cell_type": "markdown", "id": "440059f2-5127-477f-a9c8-c70cd0b96393", "metadata": { "id": "440059f2-5127-477f-a9c8-c70cd0b96393" }, "source": [ "Summarizing, the **blending and pooling problem** is to find a solution to maximize profit, where\n", "\n", "$$\n", "\\begin{align*}\n", "\\max\\ \\text{Profit} = & \\sum_{(l,c)\\ \\in\\ L \\times C} (\\text{price}_c - \\text{cost}_l)\\ z_{l,c}\n", "+ \\sum_{c\\in C} \\text{price}_c y_{c} - \\sum_{r\\in R} \\text{cost}_r x_{r} \\\\\n", "\\text{s.t.}\\qquad & \\sum_{l\\in L} z_{l, c} + y_{c} \\leq \\text{demand}_{c} & \\forall c\\in C \\\\\n", "& \\sum_{r\\in R}x_{r} = \\sum_{c\\in C} y_{c} \\\\\n", "& \\underbrace{p y_{c}}_{\\text{bilinear}} + \\sum_{(l,c)\\ \\in\\ L \\times C} \\text{fat}_{l}\\ z_{l,c} \\geq \\text{min_fat}_{c}\\ (\\sum_{l\\in L} z_{l, c} + y_{c}) & \\forall c \\in C \\\\\n", "& \\sum_{r\\in R}\\text{fat}_{r}\\ x_{r} = \\underbrace{p \\sum_{c\\in C} y_{c}}_{\\text{bilinear}} \\\\\n", "& p, x_r, y_c, z_{l, c} \\geq 0 & \\forall r\\in R, c\\in C, l\\in L \n", "\\end{align*}\n", "$$\n", "\n", "Before attempting a solution to this problem, let's first consider the implications of the bilinear terms." ] }, { "cell_type": "markdown", "id": "be99ffd4-f867-4a87-aa6e-35202df1c882", "metadata": { "id": "be99ffd4-f867-4a87-aa6e-35202df1c882" }, "source": [ "### Why are bilinear problems hard?\n", "\n", "Bilinearity has a profound consequence on the nature of the optimization problem. To demonstrate this point, we consider a function obtained by fixing $p$ in the milk pooling problem and solving the resulting linear optimization problem for the maximum profit $f(p)$." ] }, { "cell_type": "code", "execution_count": 6, "id": "TMfq-bj7QlCG", "metadata": { "executionInfo": { "elapsed": 81, "status": "ok", "timestamp": 1686079705493, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "TMfq-bj7QlCG" }, "outputs": [], "source": [ "model_p_fixed = AMPL()\n", "model_p_fixed.eval(\n", " \"\"\"\n", " # define sources\n", " set L;\n", " set R;\n", "\n", " # define customers\n", " set C;\n", "\n", " # define flowrates\n", " var x{R} >= 0;\n", " var y{C} >= 0;\n", " var z{L cross C} >= 0;\n", "\n", " param p >= 0;\n", " param price{C};\n", " param demand{C};\n", " param min_fat{C};\n", " param cost{L union R};\n", " param fat{L union R};\n", "\n", " maximize profit: sum{l in L, c in C} z[l, c]*(price[c] - cost[l])\n", " + sum{c in C} price[c]*y[c]\n", " - sum{r in R} cost[r]*x[r];\n", "\n", " subject to customer_demand{c in C}:\n", " y[c] + sum{l in L} z[l, c] <= demand[c];\n", "\n", " subject to pool_balance:\n", " sum{r in R} x[r] = sum{c in C} y[c];\n", "\n", " subject to pool_quality:\n", " sum{r in R} fat[r]*x[r] = p*sum{c in C} y[c];\n", "\n", " subject to customer_quality{c in C}:\n", " p*y[c] + sum{l in L} fat[l]*z[l,c] >= min_fat[c]*(sum{l in L} z[l, c] + y[c]);\n", "\"\"\"\n", ")\n", "\n", "model_p_fixed.set_data(customers, \"C\")\n", "model_p_fixed.set_data(local_suppliers.drop(columns=[\"location\"]), \"L\")\n", "model_p_fixed.set_data(remote_suppliers.drop(columns=[\"location\"]), \"R\")\n", "\n", "\n", "# solve milk pooling problem for a fixed pool composition p\n", "def f(p):\n", " model_p_fixed.param[\"p\"] = p\n", " model_p_fixed.solve(solver=SOLVER_LO, verbose=False)\n", " assert model_p_fixed.solve_result == \"solved\", model_p_fixed.solve_result\n", " return model_p_fixed" ] }, { "cell_type": "code", "execution_count": 7, "id": "J-Zra_r_UZSv", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 332 }, "executionInfo": { "elapsed": 8165, "status": "ok", "timestamp": 1686079713579, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "J-Zra_r_UZSv", "outputId": "1d1ebe1c-892c-4269-a0d1-1d5e1fa3e3e8" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p_plot = np.linspace(0.025, 0.055, 200)\n", "f_plot = [f(p).obj[\"profit\"].value() for p in p_plot]\n", "\n", "fig, ax = plt.subplots(figsize=(8, 3))\n", "ax.plot(p_plot, f_plot)\n", "ax.set_title(\"Milk Pooling\")\n", "ax.set_xlabel(\"Pool composition p\")\n", "ax.set_ylabel(\"Profit f\")\n", "ax.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "ecc15e4f-9fac-47b6-9274-11c7ecb0ee94", "metadata": { "id": "ecc15e4f-9fac-47b6-9274-11c7ecb0ee94" }, "source": [ "In contrast to linear or other convex optimization problems, the objective function for this **bilinear optimization problem is a non-convex function of a decision variable** $p$ denoting the composition of the blending pool. In fact, when profit is plotted as a function of $p$, there are three local maxima separated by two local minima. " ] }, { "cell_type": "markdown", "id": "cfdacf62-18c9-4ac5-9b31-63250c9afa1a", "metadata": { "id": "cfdacf62-18c9-4ac5-9b31-63250c9afa1a" }, "source": [ "### Convex Approximation\n", "\n", "The cause of the non-convexity in milk pooling problem are thee bilinear terms $p y_c$ for all $c\\in C$ that appear in the constraints. A linear approximation can be obtained by introducing decision variables $w_c$ to take the place of the bilinear terms $p y_c$ in the model expressions. The result is a new, but incomplete, linear optimization problem\n", "\n", "$$\n", "\\begin{align*}\n", "\\max\\ \\text{Profit} = & \\sum_{(l,c)\\ \\in\\ L \\times C} (\\text{price}_c - \\text{cost}_l)\\ z_{l,c}\n", "+ \\sum_{c\\in C} \\text{price}_c y_{c} - \\sum_{r\\in R} \\text{cost}_r x_{r} \\\\\n", "\\text{s.t.}\\qquad & \\sum_{l\\in L} z_{l, c} + y_{c} \\leq \\text{demand}_{c} & \\forall c\\in C \\\\\n", "& \\sum_{r\\in R}x_{r} = \\sum_{c\\in C} y_{c} \\\\\n", "& w_c + \\sum_{(l,c)\\ \\in\\ L \\times C} \\text{fat}_{l}\\ z_{l,c} \\geq \\text{min_fat}_{c}\\ (\\sum_{l\\in L} z_{l, c} + y_{c}) & \\forall c \\in C \\\\\n", "& \\sum_{r\\in R}\\text{fat}_{r}\\ x_{r} = \\underbrace{p \\sum_{c\\in C} y_{c}}_{\\text{bilinear}} \\\\\n", "& w_c, x_r, y_c, z_{l, c} \\geq 0 & \\forall r\\in R, c\\in C, l\\in L \n", "\\end{align*}\n", "$$\n", "\n", "Just adding additional variables isn't enough. Also needed are constraints that cause $w_c$ to have close to or equal to $p y_c$, that is $w_c \\approx p y_c$ for all $c\\in C$. If so, then this process produces a convex approximation to the original problem. Because the approximation relaxes the original constraints, a solution to the convex approximation will produced an over-estimate the potential profit.\n", "\n", "From the problem formulation, the values of $y_c$ are bounded between 0 and demand of customer $c$, and the value of $p$ is bounded between the minimum and maximum milk fat concentrations of the remote farms.\n", "\n", "$$\n", "\\begin{align*}\n", "0 \\leq\\ & y_c \\leq \\text{demand}_c\\ & \\forall c\\in C \\\\\n", "\\min_{r\\in R} \\text{conc}_r \\leq\\ & p \\leq \\max_{r\\in R} \\text{conc}_r \\\\\n", "\\end{align*}\n", "$$\n", "\n", "Representing the bounds on $p$ and $y_c$ as \n", "\n", "$$\n", "\\begin{align*}\n", "\\underline{p} & \\leq p \\leq \\bar{p} \\\\\n", "\\underline{y}_c & \\leq y_c \\leq \\bar{y}_c & \\forall c\\in C \n", "\\end{align*}\n", "$$\n", "\n", "the McCormick envelope on $w_c$ is given by a system of four inequalities. For each $c\\in C$,\n", "\n", "$$\n", "\\begin{align*}\n", "w_c & \\geq \\underline{y}_c p + \\underline{p} y_c - \\underline{p}\\underline{y}_c \\\\\n", "w_c & \\geq \\bar{y}_c p + \\bar{p} y_c - \\bar{p}\\bar{y}_c \\\\\n", "w_c & \\leq \\bar{y}_c p + \\underline{p} y_c - \\bar{p}\\underline{y}_c \\\\\n", "w_c & \\leq \\underline{y}_c p + \\bar{p} y_c - \\underline{p}\\bar{y}_c \\\\\n", "\\end{align*}\n", "$$\n", "\n", "The features to note are:\n", "\n", "* Use of a rule to specify bounds on the decision variables `y[c]`.\n", "* Creating a new decision variable `p` with bounds.\n", "* Creating a new set of decision variables `w[c]` to replace the bilinear terms.\n", "* Using McCormick envelopes for variables `w[c]`.\n", "\n", "The result of these operations is a linear model that will provide an upper bound on the profit. Hopefully the resulting solution and bound will be a close enough approximation to be useful." ] }, { "cell_type": "code", "execution_count": 8, "id": "Hg3G4Vs1j8G0", "metadata": { "executionInfo": { "elapsed": 24, "status": "ok", "timestamp": 1686079713580, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "Hg3G4Vs1j8G0" }, "outputs": [], "source": [ "def milk_pooling_convex():\n", " m = AMPL()\n", " m.eval(\n", " \"\"\"\n", " # define sources\n", " set L;\n", " set R;\n", "\n", " # define customers\n", " set C;\n", "\n", " param price{C};\n", " param demand{C};\n", " param min_fat{C};\n", " param cost{L union R};\n", " param fat{L union R} default 0;\n", "\n", " # define flowrates\n", " var x{R} >= 0;\n", " var y{c in C} >= 0 <= demand[c];\n", " var z{L cross C} >= 0;\n", " # composition of the pool\n", " var p >= min{r in R} fat[r] <= max{r in R} fat[r];\n", "\n", " # w[c] to replace bilinear terms p * y[c]\n", " var w{C} >= 0;\n", "\n", " maximize profit: sum{l in L, c in C} z[l, c]*(price[c] - cost[l])\n", " + sum{c in C} price[c]*y[c]\n", " - sum{r in R} cost[r]*x[r];\n", "\n", " subject to customer_demand{c in C}:\n", " y[c] + sum{l in L} z[l, c] <= demand[c];\n", "\n", " subject to pool_balance:\n", " sum{r in R} x[r] = sum{c in C} y[c];\n", "\n", " subject to pool_quality:\n", " sum{r in R} fat[r]*x[r] = sum{c in C} w[c];\n", "\n", " subject to customer_quality{c in C}:\n", " w[c] + sum{l in L} fat[l]*z[l,c] >= min_fat[c]*(sum{l in L} z[l, c] + y[c]);\n", "\n", " subject to\n", " mccormick_ll{c in C}: w[c] >= y[c].lb0*p + p.lb0*y[c] - p.lb0*y[c].lb0;\n", " mccormick_hh{c in C}: w[c] >= y[c].ub0*p + p.ub0*y[c] - p.ub0*y[c].ub0;\n", " mccormick_lh{c in C}: w[c] <= y[c].ub0*p + p.lb0*y[c] - p.lb0*y[c].ub0;\n", " mccormick_hl{c in C}: w[c] <= y[c].lb0*p + p.ub0*y[c] - p.ub0*y[c].lb0;\n", " \"\"\"\n", " )\n", "\n", " m.set_data(customers, \"C\")\n", " m.set_data(local_suppliers.drop(columns=[\"location\"]), \"L\")\n", " m.set_data(remote_suppliers.drop(columns=[\"location\"]), \"R\")\n", "\n", " m.solve(solver=SOLVER_LO, verbose=False)\n", " assert m.solve_result == \"solved\", m.solve_result\n", " return m" ] }, { "cell_type": "code", "execution_count": 9, "id": "f14b1dbe-dd33-466c-9975-acbc38cc2fd3", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 475 }, "executionInfo": { "elapsed": 23, "status": "ok", "timestamp": 1686079713581, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "f14b1dbe-dd33-466c-9975-acbc38cc2fd3", "outputId": "2dadb306-030c-41c8-eb35-1ef9d1c4e92a", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Milk Pooling Model - Convex Approximation\n", "\n", "Pool composition = 0.04\n", "Profit = 111411.76\n", "\n", "Supplier Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fatcostlocationCustomer 1Customer 2Customer 3PoolAmountExpense
Farm A0.04545.0local2500.00.00000.00.00002500.0000112500.0000
Farm B0.03042.0local0.01029.41180.00.00001029.411843235.2941
Farm C0.03337.0remote0.00.00000.04852.94124852.9412179558.8235
Farm D0.05045.0remote0.00.00000.04117.64714117.6471185294.1176
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " fat cost location Customer 1 Customer 2 Customer 3 Pool \\\n", "Farm A 0.045 45.0 local 2500.0 0.0000 0.0 0.0000 \n", "Farm B 0.030 42.0 local 0.0 1029.4118 0.0 0.0000 \n", "Farm C 0.033 37.0 remote 0.0 0.0000 0.0 4852.9412 \n", "Farm D 0.050 45.0 remote 0.0 0.0000 0.0 4117.6471 \n", "\n", " Amount Expense \n", "Farm A 2500.0000 112500.0000 \n", "Farm B 1029.4118 43235.2941 \n", "Farm C 4852.9412 179558.8235 \n", "Farm D 4117.6471 185294.1176 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Customer Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
min_fatpricedemandFarm AFarm BPoolAmountfat deliveredIncome
Customer 10.04552.06000.02500.00.00003500.00006000.00.0421312000.0
Customer 20.03048.02500.00.01029.41181470.58822500.00.0359120000.0
Customer 30.04050.04000.00.00.00004000.00004000.00.0400200000.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " min_fat price demand Farm A Farm B Pool Amount \\\n", "Customer 1 0.045 52.0 6000.0 2500.0 0.0000 3500.0000 6000.0 \n", "Customer 2 0.030 48.0 2500.0 0.0 1029.4118 1470.5882 2500.0 \n", "Customer 3 0.040 50.0 4000.0 0.0 0.0000 4000.0000 4000.0 \n", "\n", " fat delivered Income \n", "Customer 1 0.0421 312000.0 \n", "Customer 2 0.0359 120000.0 \n", "Customer 3 0.0400 200000.0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def report_solution(m, model_title):\n", " x = m.var[\"x\"]\n", " y = m.var[\"y\"]\n", " z = m.var[\"z\"]\n", " if model_title == \"Milk Pooling Model\":\n", " p = m.param[\"p\"]\n", " else:\n", " p = m.var[\"p\"]\n", " L = m.set[\"L\"]\n", " R = m.set[\"R\"]\n", " C_model = m.set[\"C\"]\n", "\n", " # Supplier report\n", " S = suppliers.copy()\n", " for l in L.members():\n", " for c in C_model.members():\n", " S.loc[l, c] = z[l, c].value()\n", " for r in R.members():\n", " S.loc[r, \"Pool\"] = x[r].value()\n", " S = S.fillna(0)\n", " S[\"Amount\"] = S[C_model.members()].sum(axis=1) + S[\"Pool\"]\n", " S[\"Expense\"] = S[\"Amount\"] * S[\"cost\"]\n", "\n", " # Customer report\n", " C = customers.copy()\n", " for c in C_model.members():\n", " for l in L.members():\n", " C.loc[c, l] = z[l, c].value()\n", " for c in C_model.members():\n", " C.loc[c, \"Pool\"] = y[c].value()\n", " C = C.fillna(0)\n", " C[\"Amount\"] = C[L.members()].sum(axis=1) + C[\"Pool\"]\n", " C[\"fat delivered\"] = (\n", " sum(C[l] * S.loc[l, \"fat\"] for l in L.members()) + C[\"Pool\"] * p.value()\n", " ) / C[\"Amount\"]\n", " C[\"Income\"] = C[\"Amount\"] * C[\"price\"]\n", "\n", " print(model_title)\n", " print(f\"\\nPool composition = {p.value():0.2f}\")\n", " print(f\"Profit = {m.obj['profit'].value():0.2f}\")\n", " print(f\"\\nSupplier Report\\n\")\n", " display(S.round(4))\n", " print(f\"\\nCustomer Report\\n\")\n", " display(C.round(4))\n", "\n", "\n", "m_convex = milk_pooling_convex()\n", "\n", "report_solution(m_convex, \"Milk Pooling Model - Convex Approximation\")" ] }, { "cell_type": "markdown", "id": "da162da0-1747-4733-876d-c2a322bb05dc", "metadata": { "id": "da162da0-1747-4733-876d-c2a322bb05dc" }, "source": [ "The convex approximation of the milk pooling model estimates an upper bound on profit of 111,412 for a pool composition $p = 0.040$. The plot below compares this solution to what was found by in an exhaustive search over values of $p$." ] }, { "cell_type": "code", "execution_count": 10, "id": "9e71a7b2-cd5e-4f1a-b9fa-c3c95c74a7a3", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 427 }, "executionInfo": { "elapsed": 1008, "status": "ok", "timestamp": 1686079714576, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "9e71a7b2-cd5e-4f1a-b9fa-c3c95c74a7a3", "outputId": "80e07133-139c-4593-e429-a09365ed339f", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0.036, 106000, 'convex approximation')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 4))\n", "ax.plot(p_plot, f_plot)\n", "ax.set_title(\"Milk Pooling\")\n", "ax.set_xlabel(\"Pool composition p\")\n", "ax.set_ylabel(\"Profit\")\n", "ax.grid(True)\n", "\n", "ax.plot(m_convex.var[\"p\"].value(), m_convex.obj[\"profit\"].value(), \"ro\", ms=10)\n", "ax.axhline(m_convex.obj[\"profit\"].value(), color=\"r\", linestyle=\"--\")\n", "ax.axvline(m_convex.var[\"p\"].value(), color=\"r\", linestyle=\"--\")\n", "ax.annotate(\n", " \"convex approximation\",\n", " xy=(m_convex.var[\"p\"].value(), m_convex.obj[\"profit\"].value()),\n", " xytext=(0.036, 106000),\n", " ha=\"right\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")" ] }, { "cell_type": "markdown", "id": "74049867-f21b-4bb8-a7e0-b177831d87d4", "metadata": { "id": "74049867-f21b-4bb8-a7e0-b177831d87d4" }, "source": [ "As this stage the calculations find the maximum profit for a given value of $p$. The challenge, of course, is that the optimal value of $p$ is unknown. The following cell computes profits over a range of $p$." ] }, { "cell_type": "markdown", "id": "b4505212-fb97-40bb-a061-162b0d8da7fc", "metadata": { "id": "b4505212-fb97-40bb-a061-162b0d8da7fc" }, "source": [ "The convex approximation is clearly misses the market in the estimate of profit and pool composition $p$. Without the benefit of the full scan of profit as a function of $p$, the only check on the profit estimate would be to compute the solution to model for the reported value of $p$. This is done below." ] }, { "cell_type": "code", "execution_count": 11, "id": "246408e1-f23e-4964-aadc-72fda0cf0eb6", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 410 }, "executionInfo": { "elapsed": 506, "status": "ok", "timestamp": 1686079715075, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "246408e1-f23e-4964-aadc-72fda0cf0eb6", "outputId": "4c8080f0-b062-443d-d2af-841903621f58", "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAGJCAYAAACny9QDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZHUlEQVR4nOzdd1hT1xsH8G8SEgIoS2UpAk4cuEVp3SI4arVad1sH1bZqnbXu3f7cu63Wtq5WraPVtmpVqnXjrHsP3AIqArJDcn5/YCKRIUFIAvl+noenJffNvSfHm5uXk/eeIxFCCBARERERkUGkpm4AEREREVFhxESaiIiIiCgPmEgTEREREeUBE2kiIiIiojxgIk1ERERElAdMpImIiIiI8oCJNBERERFRHjCRJiIiIiLKAybSRERERER5wESaiKgQk0gkmDJliu73VatWQSKR4Pbt27rHvL298c477xi/cW8gN6+LiMjUmEgTEZmYNkmUSCQ4dOhQpu1CCHh6ekIikRg9IW7WrJmubRKJBM7Ozqhfvz5WrFgBjUZj1LYQEZkbK1M3gIiI0imVSqxbtw6NGjXSe3z//v24f/8+rK2tMz0nKSkJVlYFeykvU6YMZsyYAQB4/Pgx1qxZg5CQEFy7dg0zZ84s0GNrffjhh+jevXuWfUBEZCockSYiMhNt27bFpk2bkJaWpvf4unXrULduXbi5uWV6jlKpLPBE2sHBAR988AE++OADDB8+HIcPH0aZMmXwzTffQKVSFeixtWQyGZRKJSQSiVGOR0SUG0ykiYjMRI8ePfD06VOEhobqHktNTcXmzZvRs2fPLJ/zai1xbq1evRpWVlYYNWqUwc+1tbVFw4YNkZCQgMePHwMAbt26hS5dusDZ2Vm3ffv27ZmeGxUVhZCQELi6ukKpVKJmzZpYvXr1a4+ZU+33oUOH4O/vD6VSiXLlymHNmjWZnn/u3Dk0bdoUNjY2KFOmDL766iusXLmSdddE9EaYSBMRmQlvb28EBARg/fr1usf+/vtvxMbGonv37vl2nOXLl6Nv374YM2YM5syZk6d93Lp1CzKZDI6OjoiMjMRbb72FXbt2YeDAgfj666+RnJyMd999F1u2bNE9JykpCc2aNcPPP/+MXr16Yc6cOXBwcECfPn2waNGiPLXjxo0beP/999GqVSvMmzcPTk5O6NOnDy5evKiLefDgAZo3b46LFy9i7NixGD58ONauXZvnYxIRabFGmojIjPTs2RNjx45FUlISbGxssHbtWjRt2hQeHh75sv/Fixdj2LBhmDZtGiZMmJCr56jVajx58gQA8OTJEyxduhT//fcf2rdvD1tbW4wfPx6RkZE4ePCgrr67f//+qFGjBkaMGIEOHTpAKpVi+fLluHz5Mn755Rf06tULAPDpp5+iadOmmDBhAvr164fixYsb9HquXr2KAwcOoHHjxgCArl27wtPTEytXrsTcuXMBALNmzcKzZ8/w33//oVatWgCAvn37omLFigYdi4joVRyRJiIyI127dkVSUhK2bduG58+fY9u2bdmWdRhq9uzZGDp0KGbNmpXrJBoArly5glKlSqFUqVKoUqUKlixZgnbt2mHFihUAgB07dsDf31/vJslixYphwIABuH37Ni5duqSLc3NzQ48ePXRxcrkcQ4YMQXx8PPbv32/wa6pataouiQaAUqVKoXLlyrh165busZ07dyIgIECXRAOAs7OzLpknIsorjkgTEZmRUqVKITAwEOvWrUNiYiLUajXef//9N97v/v37sX37dowePdrgumhvb2/88MMPkEgkUCqVqFixIlxcXHTb79y5gwYNGmR6XpUqVXTbq1evjjt37qBixYqQSqXZxhmqbNmymR5zcnLCs2fP9NoXEBCQKa5ChQoGH4+IKCMm0kREZqZnz57o378/IiIi0KZNGzg6Or7xPqtVq4aYmBj8/PPP+OSTT+Dj45Pr59rZ2SEwMPCN21AQZDJZlo8LIYzcEiKyRCztICIyM++99x6kUimOHj2ab2UdJUuWxD///AO5XI6WLVvi4cOH+bJfAPDy8sLVq1czPX7lyhXddu1/r1+/nmkhl1fj8puXlxdu3LiR6fGsHiMiMgQTaSIiM1OsWDEsXboUU6ZMQfv27fNtv2XKlME///yDpKQktGrVCk+fPs2X/bZt2xbHjx9HWFiY7rGEhAQsX74c3t7eqFq1qi4uIiICGzZs0MWlpaVhyZIlKFasGJo2bZov7XlVcHAwwsLCcObMGd1j0dHRWLt2bYEcj4gsB0s7iIjMUO/evQtkvxUqVMDu3bvRrFkzBAcHY+/evbC3t3+jfY4ZMwbr169HmzZtMGTIEDg7O2P16tUIDw/Hb7/9pquJHjBgAL7//nv06dMHp06dgre3NzZv3ozDhw9j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adOmAoBo27atKF26tAgJCREjR44Uq1atEkIIsXHjRiGTyfSOX7t2bQFANGjQQK+/V65cKQCIjh076h5LTU0V9erVE1KpVOzdu1fv2ABE06ZN9R7r3bu3ACA6dOgg3NzcRP/+/cWnn34qHB0dhUQiETt37hTt2rUTPj4+YuDAgaJfv35CqVQKuVwubty4obevTz75RHh4eIju3buLUaNGiUGDBun+zTt16qSLe/bsmZg8ebJwcHAQDg4OYvLkybqff//9V69ve/furXeMq1evilKlSgkAol27dqJz586ibdu2AoAoVaqUuHr1apb93blzZ+Hp6SkGDBggPvvsM1GiRAkBQCxfvvzV04ZyotGI1GfPxF+//ipSU1JM3RqLkpqaqru+k/Gw303D2P1uSL7GRNqI8juRPnPmjJBKpcLDw0OEh4frbdNoNOL27du6E2/q1KkCgOjVq5fQaDS6uP/++08oFArh6Ogo4uLidI9rk0gHBwdx5coV3eOJiYmiUqVKQiqVigcPHugenzBhggAgNmzYkKmddevWFQqFQjx9+lT3WM+ePQUA8cMPP+jFRkZGCk9PT1GqVCm9JPHMmTPC2tpalC9fXjx//lzcu3dPODs7ixIlSui1IycxMTF6bdDau3evkEql4uOPP9Z7XNsHCoVCnD17Vve4RqPRtX/u3Lm6x7XJnjZRy/iG37lzpwAg/Pz89I6hTexq1aqVqW2xsbHCwcFBWFtb6x1frVaLbt26CQBi2rRpes/p3r27ACC+++47IYQQo0aNEgDE2LFjM73unBLpSpUqiaioKN3jx44dEwCEo6OjaNSokYiPj9dt27BhgwAgPv/8c7193blzR6Slpek9ptFoRL9+/QQAcejQIb1tXl5ewsvLK1M7hcg+kW7evLkAIL7//nu9C+23336r+yMrI21/N2jQQO99eOXKFWFlZSUqV66c5fEpe0wsTIP9bhrsd9NgIk1CiPxPpD/77DMBQKxYsSLL7RlPvHLlygm5XC7u3buXKa5///4CgFizZo3uMW0SOWnSpEzx2m1//vmn7rGrV6/qRm8zunTpUqZR0sePHwuZTJYpydFavHixACD++usvvce1I9sffPCBaNasmQAg/vjjjyz3YSg/Pz/h7e2t95j2db6aYAshxO3bt4VMJhPVq1fXPaZN9hwdHcX69eszveFbtmwpAIiTJ0/q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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = m_convex.var[\"p\"].value()\n", "m_convex_profit = m_convex.obj[\"profit\"].value()\n", "\n", "m_est = f(p)\n", "m_est_profit = m_est.obj[\"profit\"].value()\n", "\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "ax.plot(p_plot, f_plot)\n", "ax.set_title(\"Milk Pooling\")\n", "ax.set_xlabel(\"Pool composition p\")\n", "ax.set_ylabel(\"Profit\")\n", "ax.grid(True)\n", "\n", "ax.plot(p, m_convex_profit, \"ro\", ms=10)\n", "ax.axhline(m_convex_profit, color=\"r\", linestyle=\"--\")\n", "ax.axvline(p, color=\"r\", linestyle=\"--\")\n", "ax.annotate(\n", " \"convex approximation\",\n", " xy=(p, m_convex_profit),\n", " xytext=(0.036, 106000),\n", " ha=\"right\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")\n", "\n", "ax.plot(p, m_est_profit, \"go\", ms=10)\n", "ax.axhline(m_est_profit, color=\"g\", linestyle=\"--\")\n", "ax.annotate(\n", " \"local maxima\",\n", " xy=(p, m_est_profit),\n", " xytext=(0.045, 105000),\n", " ha=\"left\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "8333e318-da8e-4fe8-b726-adebec04c23a", "metadata": { "id": "8333e318-da8e-4fe8-b726-adebec04c23a" }, "source": [ "The result shows the profit if the pooled milk transported from the remote farms has a fat content $p = 0.04$ them a profit of 100,088 is realized which is better than 81,000 earned for business as usual with just local suppliers, but falls short of the 122,441 earned if the remote milk supply could be transported without pooling.\n", "\n", "The following cell presents a full report of the solution." ] }, { "cell_type": "code", "execution_count": 12, "id": "08283164-7c36-4788-bb74-d429af542cce", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 475 }, "executionInfo": { "elapsed": 41, "status": "ok", "timestamp": 1686079715076, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "08283164-7c36-4788-bb74-d429af542cce", "outputId": "c5e72a3d-9a78-4cc5-b71a-10ceb2992934", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Milk Pooling Model\n", "\n", "Pool composition = 0.04\n", "Profit = 100088.24\n", "\n", "Supplier Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fatcostlocationCustomer 1Customer 2Customer 3PoolAmountExpense
Farm A0.04545.0local6000.00.00.00.00006000.0000270000.0000
Farm B0.03042.0local0.00.00.00.00000.00000.0000
Farm C0.03337.0remote0.00.00.03823.52943823.5294141470.5882
Farm D0.05045.0remote0.00.00.02676.47062676.4706120441.1765
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " fat cost location Customer 1 Customer 2 Customer 3 Pool \\\n", "Farm A 0.045 45.0 local 6000.0 0.0 0.0 0.0000 \n", "Farm B 0.030 42.0 local 0.0 0.0 0.0 0.0000 \n", "Farm C 0.033 37.0 remote 0.0 0.0 0.0 3823.5294 \n", "Farm D 0.050 45.0 remote 0.0 0.0 0.0 2676.4706 \n", "\n", " Amount Expense \n", "Farm A 6000.0000 270000.0000 \n", "Farm B 0.0000 0.0000 \n", "Farm C 3823.5294 141470.5882 \n", "Farm D 2676.4706 120441.1765 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Customer Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
min_fatpricedemandFarm AFarm BPoolAmountfat deliveredIncome
Customer 10.04552.06000.06000.00.00.06000.00.045312000.0
Customer 20.03048.02500.00.00.02500.02500.00.040120000.0
Customer 30.04050.04000.00.00.04000.04000.00.040200000.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " min_fat price demand Farm A Farm B Pool Amount \\\n", "Customer 1 0.045 52.0 6000.0 6000.0 0.0 0.0 6000.0 \n", "Customer 2 0.030 48.0 2500.0 0.0 0.0 2500.0 2500.0 \n", "Customer 3 0.040 50.0 4000.0 0.0 0.0 4000.0 4000.0 \n", "\n", " fat delivered Income \n", "Customer 1 0.045 312000.0 \n", "Customer 2 0.040 120000.0 \n", "Customer 3 0.040 200000.0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "report_solution(m_est, \"Milk Pooling Model\")" ] }, { "cell_type": "markdown", "id": "8be412fa-564a-4b9a-8dda-f79fea889bab", "metadata": { "id": "8be412fa-564a-4b9a-8dda-f79fea889bab" }, "source": [ "With regard to the practical impact, the results of using this particular convex approximation are mixed. The approximation successfully produced a value for the pool composition $p$ which would produce a profit of over 100,088. However, the reported value for $p$ was actually the smallest of the three local maxima for this problem. This discrepancy may have large consequences regarding the choice of suppliers." ] }, { "cell_type": "markdown", "id": "4951fe51-9291-4381-89b2-3d469abf8644", "metadata": { "id": "4951fe51-9291-4381-89b2-3d469abf8644", "tags": [] }, "source": [ "## Global Nonlinear Optimization (GNLO) solution with Couenne\n", "\n", "The final version of this milk pooling model returns to the bilinear formulation with pool composition $p$ as a decision variable. The following AMPL implementation needs to specify a solver capable of solving the resulting problem. This has been tested with nonlinear solvers [`ipopt`](https://github.com/coin-or/Ipopt) and [`couenne`](https://github.com/coin-or/Couenne). [Pre-compiled binaries for these solvers can be downloaded from AMPL](https://ampl.com/products/solvers/open-source/). " ] }, { "cell_type": "code", "execution_count": 13, "id": "6472ae12-da84-430c-baaf-1310870d8050", "metadata": { "executionInfo": { "elapsed": 29, "status": "ok", "timestamp": 1686079715076, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "6472ae12-da84-430c-baaf-1310870d8050", "tags": [] }, "outputs": [], "source": [ "def milk_pooling_bilinear():\n", " m = AMPL()\n", " m.eval(\n", " \"\"\"\n", " # define sources\n", " set L;\n", " set R;\n", "\n", " # define customers\n", " set C;\n", "\n", " param price{C};\n", " param demand{C};\n", " param min_fat{C};\n", " param cost{L union R};\n", " param fat{L union R};\n", "\n", " # define flowrates\n", " var x{R} >= 0;\n", " var y{C} >= 0;\n", " var z{L cross C} >= 0;\n", " # composition of the pool\n", " var p >= min{r in R} fat[r] <= max{r in R} fat[r];\n", "\n", " maximize profit: sum{l in L, c in C} z[l, c]*(price[c] - cost[l])\n", " + sum{c in C} price[c]*y[c]\n", " - sum{r in R} cost[r]*x[r];\n", "\n", " subject to customer_demand{c in C}:\n", " y[c] + sum{l in L} z[l, c] <= demand[c];\n", "\n", " subject to pool_balance:\n", " sum{r in R} x[r] = sum{c in C} y[c];\n", "\n", " subject to pool_quality:\n", " sum{r in R} fat[r]*x[r] = p*sum{c in C} y[c];\n", "\n", " subject to customer_quality{c in C}:\n", " p*y[c] + sum{l in L} fat[l]*z[l,c] >= min_fat[c]*(sum{l in L} z[l, c] + y[c]);\n", " \"\"\"\n", " )\n", "\n", " m.set_data(customers, \"C\")\n", " m.set_data(local_suppliers.drop(columns=[\"location\"]), \"L\")\n", " m.set_data(remote_suppliers.drop(columns=[\"location\"]), \"R\")\n", "\n", " m.solve(solver=SOLVER_GNLO, verbose=False)\n", " assert m.solve_result == \"solved\", m.solve_result\n", " return m" ] }, { "cell_type": "code", "execution_count": 14, "id": "653ba91b-8c7d-4aaa-9478-0160db734594", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 868 }, "executionInfo": { "elapsed": 763, "status": "ok", "timestamp": 1686079716098, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "653ba91b-8c7d-4aaa-9478-0160db734594", "outputId": "89694388-a4cd-4477-887a-16ab4aa7a50c", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Milk Pooling Model - Bilinear\n", "\n", "Pool composition = 0.03\n", "Profit = 102833.33\n", "\n", "Supplier Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fatcostlocationCustomer 1Customer 2Customer 3PoolAmountExpense
Farm A0.04545.0local6000.00.02333.33330.00008333.3333375000.0000
Farm B0.03042.0local0.00.00.00000.00000.00000.0000
Farm C0.03337.0remote0.00.00.00004166.66674166.6667154166.6667
Farm D0.05045.0remote0.00.00.0000-0.0000-0.0000-0.0000
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " fat cost location Customer 1 Customer 2 Customer 3 Pool \\\n", "Farm A 0.045 45.0 local 6000.0 0.0 2333.3333 0.0000 \n", "Farm B 0.030 42.0 local 0.0 0.0 0.0000 0.0000 \n", "Farm C 0.033 37.0 remote 0.0 0.0 0.0000 4166.6667 \n", "Farm D 0.050 45.0 remote 0.0 0.0 0.0000 -0.0000 \n", "\n", " Amount Expense \n", "Farm A 8333.3333 375000.0000 \n", "Farm B 0.0000 0.0000 \n", "Farm C 4166.6667 154166.6667 \n", "Farm D -0.0000 -0.0000 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Customer Report\n", "\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
min_fatpricedemandFarm AFarm BPoolAmountfat deliveredIncome
Customer 10.04552.06000.06000.00000.00.00006000.00.045312000.0
Customer 20.03048.02500.00.00000.02500.00002500.00.033120000.0
Customer 30.04050.04000.02333.33330.01666.66674000.00.040200000.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " min_fat price demand Farm A Farm B Pool Amount \\\n", "Customer 1 0.045 52.0 6000.0 6000.0000 0.0 0.0000 6000.0 \n", "Customer 2 0.030 48.0 2500.0 0.0000 0.0 2500.0000 2500.0 \n", "Customer 3 0.040 50.0 4000.0 2333.3333 0.0 1666.6667 4000.0 \n", "\n", " fat delivered Income \n", "Customer 1 0.045 312000.0 \n", "Customer 2 0.033 120000.0 \n", "Customer 3 0.040 200000.0 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAGJCAYAAACny9QDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACp30lEQVR4nOzdd3hT1RvA8W+Spk1baMtqS6G0QMEyyqaIskHKEEH2kC2o7CEoQ5b6Y6MMRXEwFFC2MgSKgggUEGQv2ZuyW7rT5P7+qEkbOmhK25T2/TxPH+29b+49OSQ3b0/ee45KURQFIYQQQgghhFXUtm6AEEIIIYQQLyJJpIUQQgghhMgASaSFEEIIIYTIAEmkhRBCCCGEyABJpIUQQgghhMgASaSFEEIIIYTIAEmkhRBCCCGEyABJpIUQQgghhMgASaSFEEIIIYTIAEmkhRDiBaZSqZg0aZL59yVLlqBSqbhy5Yp5m6+vL6+//nr2N+45pOd5CSGErUkiLYQQNmZKElUqFXv27Em2X1EUvL29UalU2Z4QN2jQwNw2lUpFwYIFqVmzJt9//z1GozFb2yKEEDmNna0bIIQQIoFOp2PFihXUqVPHYvuff/7JjRs3cHBwSPaY6Oho7Oyy9lJevHhxpk6dCsC9e/dYtmwZffv25d9//2XatGlZem6T7t2707lz5xT7QAghbEVGpIUQIodo0aIFq1evJj4+3mL7ihUrqF69Op6enskeo9PpsjyRdnV15a233uKtt95i+PDh7N27l+LFi7NgwQL0en2WnttEo9Gg0+lQqVTZcj4hhEgPSaSFECKH6NKlCw8ePCA4ONi8LS4ujjVr1tC1a9cUH/N0LXF6LV26FDs7O0aNGmX1Y52cnHj55ZeJjIzk3r17AFy6dIkOHTpQsGBB8/7Nmzcne+zdu3fp27cvHh4e6HQ6KleuzNKlS595zrRqv/fs2UNgYCA6nY5SpUqxbNmyZI8/fvw49evXx9HRkeLFi/PJJ5+wePFiqbsWQjwXSaSFECKH8PX1pXbt2qxcudK87bfffiMsLIzOnTtn2nkWLVpE7969+fDDD5k5c2aGjnHp0iU0Gg1ubm6EhobyyiuvsG3bNgYMGMCnn35KTEwMb7zxBuvXrzc/Jjo6mgYNGvDDDz/QrVs3Zs6ciaurK7169WLu3LkZaseFCxdo3749r732GrNnz6ZAgQL06tWLU6dOmWNu3rxJw4YNOXXqFGPGjGH48OEsX748w+cUQggTqZEWQogcpGvXrowZM4bo6GgcHR1Zvnw59evXx8vLK1OOP2/ePIYNG8aUKVMYP358uh5jMBi4f/8+APfv32fhwoX8888/tGrVCicnJ8aNG0doaCh//fWXub67X79+VKpUiREjRtC6dWvUajWLFi3izJkz/Pjjj3Tr1g2Ad999l/r16zN+/Hj69OlD/vz5rXo+586dY/fu3dStWxeAjh074u3tzeLFi5k1axYA06dP59GjR/zzzz9UqVIFgN69e1OmTBmrziWEEE+TEWkhhMhBOnbsSHR0NJs2beLJkyds2rQp1bIOa82YMYOhQ4cyffr0dCfRAGfPnqVIkSIUKVKEcuXKMX/+fFq2bMn3338PwJYtWwgMDLS4STJfvnz079+fK1eucPr0aXOcp6cnXbp0McdptVqGDBlCREQEf/75p9XPqXz58uYkGqBIkSK89NJLXLp0ybxt69at1K5d25xEAxQsWNCczAshREbJiLQQQuQgRYoUoUmTJqxYsYKoqCgMBgPt27d/7uP++eefbN68mQ8++MDqumhfX1+++eYbVCoVOp2OMmXK4O7ubt5/9epVatWqlexx5cqVM++vWLEiV69epUyZMqjV6lTjrFWiRIlk2woUKMCjR48s2le7du1kcX5+flafTwghkpJEWgghcpiuXbvSr18/7ty5Q/PmzXFzc3vuY1aoUIHHjx/zww8/8M4771CyZMl0P9bZ2ZkmTZo8dxuygkajSXG7oijZ3BIhRF4kpR1CCJHDvPnmm6jVavbv359pZR2FCxdmx44daLVaGjduzK1btzLluAA+Pj6cO3cu2fazZ8+a95v+e/78+WQLuTwdl9l8fHy4cOFCsu0pbRNCCGtIIi2EEDlMvnz5WLhwIZMmTaJVq1aZdtzixYuzY8cOoqOjee2113jw4EGmHLdFixYcPHiQkJAQ87bIyEgWLVqEr68v5cuXN8fduXOHn3/+2RwXHx/P/PnzyZcvH/Xr18+U9jwtKCiIkJAQjh49at728OFDli9fniXnE0LkHVLaIYQQOVDPnj2z5Lh+fn5s376dBg0aEBQUxB9//IGLi8tzHfPDDz9k5cqVNG/enCFDhlCwYEGWLl3K5cuXWbt2rbkmun///nz99df06tWLw4cP4+vry5o1a9i7dy+ff/651TN2pNfo0aP58ccfee211xg8eDDOzs58++23lChRgocPH8oiL0KIDJMRaSGEyGMCAgL47bff+Pfff2nVqhXR0dHPdTwPDw/27dvHa6+9xvz58xkzZgz29vZs3LiRN9980xzn6OjIrl276NatG0uXLmXkyJE8fPiQxYsXM3To0Od9Wqny9vZm586dlCtXjv/97398/vnn9OzZkz59+gAJq0MKIURGqBS5I0MIIUQeNGzYML7++msiIiJSvWlRCCHSIiPSQgghcr2nR90fPHjADz/8QJ06dSSJFkJkmNRICyGEyPVq165NgwYNKFeuHKGhoXz33XeEh4fz0Ucf2bppQogXmCTSQgghcr0WLVqwZs0aFi1ahEqlolq1anz33XfUq1fP1k0TQrzApEZaCCGEEEKIDJAaaSGEEEIIITJAEmkhhBBCCCEyQGqks5HRaOTWrVvkz59fFgAQQgghhMiBFEXhyZMneHl5mReUSo0k0tno1q1beHt727oZQgghhBDiGa5fv07x4sXTjJFEOhuZlr+9fv36cy/Jmx56vZ7t27fTtGlTtFptlp9PJJB+tw3pd9uQfrcN6XfbkH63jezu9/DwcLy9vc15W1okkc5GpnIOFxeXbEuknZyccHFxkTd8NpJ+tw3pdxuIikJ5+WVaRkTg2KIF2my4rokE8nq3Del327BVv6enDFcSaSGEEBmjKKjOnMEF0MtMqkKIPEhm7RBCCCGEECIDJJEWQgghhBAiAySRFkIIkTFJyzkePLD8XQgh8gBJpIUQQljn8WOYOxcqVTJv0vr5QZkyCdsfP7ZZ04QQIjtJIi2EECL9tm2D4sVh+HC4fNly36VLCduLF0+IE0KIXE4SaSGEEOmzbRu0bAnR0SmXcShKwk90dEKcJNNCiFxOEmkhhBDP9vgxtGuXkCgbjWnHGo0Jce3aSZmHECJXk0RaCCHEsy1dClFRz06iTYzGhPhly7K2XUIIYUOyIIstREaCRpN8u0YDOp1lXGrUanB0TDtWr0cTE5PwNWvSlYCiolK/u16lAienjMVGR6f9IevsnLHYmBgwGDIn1skpod0AsbEQH585sY6OCf8mAHFxCf0eGWnZ76nEotenflydLvG1Yk2sXp8QnxoHB7Czsz42Pj6hL1Jjb5/4nK2JNRgS/u1So9UmxKcVa3q9x8UlHtdoTHitpee4z4q1s0voC0h4T0RFZU6sNe/7zL5GpBb79PteURJuIrR2Vg5FgXnzYPDghPeSXCMS/v9Z7+X0xJpe7wZD4utdrhHWx1p7jYiMTP36npevEUllRR5her0nlZXXiLT64mmKyDZhYWEKoIQlVhJa/rRoYfkAJ6eU40BR6te3jC1cONVYQ/XqlrE+Pqkft3x5y9jy5VOP9fGxjK1RI/XYwoUtY+vXTz3WyckytkWL1GOffgm3b592bEREYmzPnmnH3r2bGDtgQNqxly+bQ+NHjEg79uTJxONOnJh27MGDibEzZqQdu3NnYuyCBWnHbtqUGLt4cdqxq1Ylxq5alXbs4sWJsZs2pR27YEFi7M6dacfOmJEYe/BgmrHx48cnxp48mfZx338/Mfby5bRjBwxIjL17N+3Ynj0TYyMi0o5t316xkFZsFl0jlBo1LGPTukZk5Of+/YTjyjUiwfvvpx1rxTVCv29fYqxcIxI84xqhTJyYGCvXiESZdY3IojwixsVFiYuLS4zNwmtEGCiAEhYWpjyLlHYIIYTIWk+e2LoFQgiRJVSKoii2bkReER4ejqurK2G3buHi4pI8IJO/ktHr9Wzbto2g5s3RJj2flHYk/H8WfW2rj4xk26ZNBAUFoZXSjvTFZsLXtubX++uvozW9JqS0I2OxT7/v798HX9/UH/8s9+9DoUJyjcjE0g7z6711a7Sm14RcI6yPtfIaoQ8PT+j3lK7vefkakVQW5BHm13vbton9noXXiPBHj3D18iIsLCzlfC0JqZG2BWdny3+0tOKsOebT9HoMOp3lix8sX7TPYk3s0+fJrNikF4XMjHVwSLyQZWasvX1Cvzs7p1wj/VSs+SKdjuOmO1arffa5MxJrZ5f4gZmZsRpN+l/vqcWaXu9J+0itTv9xrYlVqbImFnJG7H/v+/DwcPbv38+lixfpV6oUmsuXU/9ATIlKBaVKQcGCCb/LNSJBZrzvTa/3pPfbyDXC+tgMXCPSdX3PI9eITI9N7X1ver2nJzYl1l4jrOgLSaSFEEIAcP36dfbu3cuePXv4c/ceTp86gdFoJL+LCx0++IBC48dbf9AhQxJHbYUQIpeRRFoIIfIgg8HAyZMn2bt3L3/9tYfdf+3h1s3rADgWLk5M2D0Uo5EqVauxZvUqChUqBP/737O/TjUxfRXco0cWPxMhhLAdSaSFECIPiIqK4uDBg+zZs4e/9uxh7759RD55gkqjwbFoGey8alAksDvaQiUI270U5f4NhgwZwowZM3AwlSysXZuwYqFanXYyrVYnjEKvWwdubtny/IQQwhYkkRZCiFxs5cqVzJrzGceOHsEQH4/WMR9aL3/sq7TBo3g57IuWRa1NqB+MvXWOB2smYm+MYf369bRp08byYEFBsHlzwoqFKd1AZCrhcHRMSKKbNs36JyiEEDYkibQQQuRiO3bs4J/DhyjQqB86n0poC5dApbKc+VRRjDz5ewNhu5dSvXoNVq/6GR8fn5QPGBQEN24krFg4bx5cvJi4r1SphJronj3B1TULn5UQQuQMMo+0EELkYkOHDgVFQe2YH/sivsmSaENUGPfXfcyjnd8zfNgw9u75K/Uk2sTNLSFhPn8e/e3bbP/6a/S3b8P58wnbJYkWQuQRNk2kd+/eTatWrfDy8kKlUrFhwwaL/evWraNp06YUKlQIlUrF0aNHkx0jJiaGgQMHUqhQIfLly0e7du0IDQ21iLl27RotW7bEyckJd3d3Ro0aRfxT833u2rWLatWq4eDggJ+fH0uWLEl2ri+++AJfX190Oh21atXi4MGDz9sFQgiRZZ48ecKOHTuwd3Ag6szuZPtjrp/k7rKh2D+4yObNm5k1a1bKc5+nRqWCQoWI9vBImCdaZucQQuQxNk2kIyMjqVy5Ml988UWq++vUqcP06dNTPcbw4cPZuHEjq1ev5s8//+TWrVu0bdvWvN9gMNCyZUvi4uLYt28fS5cuZcmSJUyYMMEcc/nyZVq2bEnDhg05evQow4YN4+2332bbtm3mmJ9//pkRI0YwceJE/vnnHypXrkxQUBB3797NhJ4QQojMExoayrhx4yhW3JuRI0cSFxtLXOglYm6cBhJKOcJCVnH3p3HUqOjPiePHaNGihfUnio5G06QJr44bl/aiFkIIkVs9cxHxbAIo69evT3Hf5cuXFUA5cuSIxfbHjx8rWq1WWb16tXnbmTNnFEAJCQlRFEVRtmzZoqjVauXOnTvmmIULFyouLi5KbGysoiiKMnr0aKVChQoWx+7UqZMSFBRk/j0wMFAZOHCg+XeDwaB4eXkpU6dOTfdzDAsLS/fa7ZkhLi5O2bBhg+Xa9CLLSb/bhvS7opw/f17p37+/orV3UACLHxdXV8XJp5JSfNAPilPJqopKpVLGjRun6PX6jJ8wIkJREm45VOIePcq05yGeTV7vtiH9bhvZ3e/W5Gsv9M2Ghw8fRq/X06RJE/M2f39/SpQoQUhICC+//DIhISEEBATg4eFhjgkKCuK9997j1KlTVK1alZCQEItjmGKGDRsGQFxcHIcPH2bMmDHm/Wq1miZNmhASEpJq+2JjY4lNsvxpeHg4kLDUpT6tZVwziekc2XEukUj63Tbycr8fPnyYGTNmsmHDepQkM2nY2Wnp2rUrI0eO4MyZM3Tu3Bn99wNxcdaxdssWGjdujKIoGe8zvR6t+X/1aS9PLTJVXn6925L0u21kd79bc54XOpG+c+cO9vb2uD01T6mHhwd37twxxyRNok37TfvSigkPDyc6OppHjx5hMBhSjDl79myq7Zs6dSqTJ09Otn379u04WbNk5nMKDg7OtnOJRNLvtpFX+l1RFI4ePcrades4eeKExT4HnSPNgoJo1ep1ChcuzOXLl9FqtfiULIWrS36GDxtGbGwsW7Zsea42aGJieP2////jjz+SL+Erslxeeb3nNNLvtpFd/R4VFZXu2Bc6kc7pxowZw4gRI8y/h4eH4+3tTdOmTXFxccny8+v1eoKDg3nttdesu4FIPBfpd9vIK/0eHx/PmjVrmDFzFidPHLfYV6iIO8OHDqF///7JBhgAWrZsiVqdibfGREaa/7dRo0ZoZfGVbJNXXu85jfS7bWR3v5sqCNLjhU6kPT09iYuL4/HjxxYfGqGhoXh6eppjnp5dwzSrR9KYp2f6CA0NxcXFBUdHRzQaDRqNJsUY0zFS4uDgkLgiWBJarTZb34DZfT6RQPrdNnJrv0dFRfH9998zfeYsbly7arGvZGk/Phw9ih49eqDLzlHhJP2cW/s9p5N+tw3pd9vIrn635hwv9DzS1atXR6vV8vvvv5u3nTt3jmvXrlG7dm0AateuzYkTJyxm1wgODsbFxYXy5cubY5IewxRjOoa9vT3Vq1e3iDEajfz+++/mGCGEyAoPHjxg8uTJFCvuzeDBgy2S6GrVa7BmzRrOnztL//79szeJFkIIYdsR6YiICC5cuGD+/fLlyxw9epSCBQtSokQJHj58yLVr17h16xaQkCRDwgiyp6cnrq6u9O3blxEjRlCwYEFcXFwYPHgwtWvX5uWXXwagadOmlC9fnu7duzNjxgzu3LnD+PHjGThwoHm0+N1332XBggWMHj2aPn368Mcff7Bq1So2b95sbtuIESPo2bMnNWrUIDAwkM8//5zIyEh69+6dXd0lhMhDrl69yqxZs/j2u++Jibas13utaRBjx3xI/fr1Udl47mbFyQmDwWDTNgghhM1k9RQiadm5c2eyKZoApWfPnoqiKMrixYtT3D9x4kTzMaKjo5UBAwYoBQoUUJycnJQ333xTuX37tsV5rly5ojRv3lxxdHRUChcurIwcOTLZlE87d+5UqlSpotjb2yulSpVSFi9enKy98+fPV0qUKKHY29srgYGByv79+616vjL9Xd4g/W4buaXfjx49qnTp2lVRazQW1z21RqN06dpVOXr0qK2baCG39PuLRvrdNqTfbUOmv0tFgwYNLKZqelqvXr3o1atXmsfQ6XR88cUXqS7qAuDj4/PMu9MbNGjAkSNH0owZNGgQgwYNSjNGCCGspSgKf/75J1OnTWN7koWgAHSOTvR7O+GbN19fX9s0UAghRIpe6JsNhRDiRWYwGNiwYQP/mzqNfw4fstjnVqAgw4YOYeDAgRQuXNhGLRRCCJEWSaSFECKbxcTEsGzZMqbNmMnlixcs9hUv4cMHo96nT58+2TrffIbExKBp25Zad+9Co0YWs3gIIUReIIm0EEJkk8ePH7Nw4ULmfPY59+/dtdhXIaAS48Z8SIcOHbCze0EuzQYD6t9+wxPQyw2HQog86AW5WgshxIvr5s2bfPbZZyz8+muiIiIs9tVv0JCxYz7ktddes/kMHEIIIawjibQQQmSRM2fOMGPGDH78cTnx8XrzdpVKxZtt2/LhBx9Qs2ZNG7ZQCCHE85BEWgghMtm+ffuYOm0amzZutNiutXegd6+ejBo1Cj8/Pxu1TgghRGaRRFoIITKB0Whk8+bN/G/qNPaH7LPYl9/FlcGDBjJkyBA8PDxs1EIhhBCZTRJpIYR4DnFxcaxYsYJp02dw7uwZi30eRb0Y/f5I+vXrR/78+W3UQiGEEFlFEmkhhMiglStXMuL9Udy5ddNie1n/coz98AO6dOmCvb29jVonhBAiq0kiLYQQGbTyp58skujar7zKmA8/oGXLlqjVahu2LJs4O6OPi2PLli20cHa2dWuEECLb5YErvRBCZI0Rw4ej0Wh4vVUr9u7dy769e2jVqlXeSKKFEELIiLQQQmRUgwYNiIiIQKfT2bopQgghbEASaSGEeA55OomOiUHTrRs17tyRJcKFEHmSJNJCCCEyxmBAvW4dxZAlwoUQeZMU8gkhhBBCCJEBkkgLkUepVCoaNGhg62aky5UrV1CpVPTq1cvWTRFCCCHMJJEWQuQIvr6++Pr62roZQgghRLpJjbQQedSZM2dwcnKydTPSpVixYpw5cwZXV1dbN0UIIYQwk0RaiDzK39/f1k1IN61W+0K1VwghRN4gpR25wO7du2nTpg0eHh44ODjg7e1N27Zt2bt3r0VcZGQkEydOxN/fH51OR8GCBWnZsmWyOIBJkyahUqnYtWsXK1asoEqVKjg6OlK0aFGGDh1KdHS0Ofavv/5CpVLRp0+fFNt39+5dtFotr776qsX2J0+eMHHiRCpUqICjoyNubm4EBQWxZ88ei7h3330XlUrFtGnTkh3btG/69OnP7KewsDCmT59O/fr18fLywt7eHi8vL3r06MHFixfT7IPvvvuOgIAAdDodxYoVY/jw4Tx58sQi3lTH27dvX65du0br1q1xc3MjX758NG3alMOHDyc7R4MGDVCpVMTExDB+/HhKly6NVqtl0qRJ5pi9e/fSsmVLChYsiE6nw9/fn4kTJxIVFWWOuXDhAvnz56d48eI8ePDA4hyp7UupRrpXr16oVCouXbrErFmzKFu2LI6OjpQvX56ffvoJgLi4OMaNG4evry86nY5KlSrx22+/JXtuhw8fZtCgQVSsWBFXV1ccHR0JCAhg2rRp6PX6ZP129epVrl69ikqlMv+Y+iGtGumrV6/St29ffH19ad++PSVLljT/G6TW33q9nkmTJuHr64uDgwNly5blyy+/TBYvhBBCpEkR2SYsLEwBlLCwsEw75ueff66oVCrFyclJ6datmzJmzBilR48eSqlSpZTBgwcrGzZsUOLi4pTo6GglMDBQAZRq1aopH3zwgdKrVy/F0dFR0Wg0yqpVqyyOO3HiRAVQ2rVrpzg7Oytdu3ZVhg8frpQrV04BlK5du5pjjUaj4uvrq7i4uCjR0dEpthFQFi5caN724MEDpUKFCgqgvPrqq8qwYcOUPn36KIUKFVLs7OyU9evXm2OjoqKUcuXKKVqtVjl48KB5+7p16xRAadSokWIwGJ7ZVyEhIYq9vb0SFBSkDBgwQBk1apTSqlUrRaPRKAULFlSuXLmSYh+0atVKcXJyUnr37q188MEHSvXq1RVAefnll5W4uDhz/OXLlxVAqVOnjuLk5KQ0aNBA+fDDD5UuXboodnZ2ipOTk7J//36Lc9SvX18BlBYtWijFihVT+vbtq4wcOVJZsmSJoiiKsmrVKkWj0Vicv2rVqgqg1KpVy6K/Fy9erABKmzZtzNvi4uKUGjVqKGq1Wvnjjz8szg0o9evXt9jWs2dPBVBat26teHp6Kv369VPeffddxc3NTVGpVMrWrVuVli1bKiVLllQGDBig9OnTR9HpdIpWq1UuXLhgcax33nlH8fLyUjp37qyMGjVKGThwoPnfvG3btua4R48eKRMnTlRcXV0VV1dXZeLEieafnTt3WvRtz549Lc5x7tw5pUiRIgqgtGzZUmnXrp3SokULBVCKFCminDt3LsX+bteuneLt7a30799fee+995RChQopgLJo0aKnXzYiLUajEvfokbLxp5+UuNhYW7cmT4mLizNf30X2kX63jezud2vyNUmks1FmJ9JHjx5V1Gq14uXlpVy+fNlin9FoVK5cuWJ+4U2ePFkBlG7duilGo9Ec988//yj29vaKm5ubEh4ebt5uSiJdXV2Vs2fPmrdHRUUpZcuWVdRqtXLz5k3z9vHjxyuA8vPPPydrZ/Xq1RV7e3vlwYMH5m1du3ZVAOWbb76xiA0NDVW8vb2VIkWKWCSJR48eVRwcHJTSpUsrT548Ua5fv64ULFhQKVSokEU70vL48WOLNpj88ccfilqtVt5++22L7aY+sLe3V44dO2bebjQaze2fNWuWebsp2TMlaknf8Fu3blUAJSAgwOIcpsSuSpUqydoWFhamuLq6Kg4ODhbnNxgMSqdOnRRAmTJlisVjOnfurADKl19+qSiKoowaNUoBlDFjxiR73mkl0mXLllXu3r1r3n7gwAEFUNzc3JQ6deooERER5n0///yzAiiDBw+2ONbVq1eV+Ph4i21Go1Hp06ePAih79uyx2Ofj46P4+Pgka6eipJ5IN2zYUAGUr7/+2uJC+8UXX5j/yErK1N+1atWyeB+ePXtWsbOzU1566aUUzy9SJ4mFbUi/24b0u21IIi0URcn8RPq9995TAOX7779PcX/SF16pUqUUrVarXL9+PVlcv379FEBZtmyZeZspiZwwYUKyeNO+X3/91bzt3Llz5tHbpE6fPp1slPTevXuKRqNJluSYzJs3TwGUjRs3Wmw3jWy/9dZbSoMGDRRA+eWXX1I8hrUCAgIUX19fi22m5/l0gq0oinLlyhVFo9EoFStWNG8zJXtubm7KypUrk73hGzdurADKoUOHzNtMiV1Kz2PZsmUKoLz33nvJ9l29elWxs7NTSpUqZbH98ePHiq+vr+Lo6KjMmzdPUalUSmBgoKLX65MdI61EeunSpcniS5UqpQDKn3/+abE9Pj5e0Wq1Sr169ZI9JiWHDx9WAGXSpEkW261NpK9evaoASvny5RWj0WjxejcYDIq/v78CKNeuXTM/xtTfT4/OJ92X9A9K8WySWNiG9LttSL/bRk5OpKVG+gV28OBBAJo2bZpmXHh4OJcuXcLPz4/ixYsn29+wYUMAjh49mmxf9erVk20zHePx48fmbWXLliUwMJCtW7dy//598/Yff/wRgO7du5u3/f333xgMBmJjY5k0aVKyn/379wNw9uxZi/MOGTKE5s2b8+OPP7Jr1y7ee+893njjjTSf+9N27dpFmzZtKFq0KFqt1lyLe+LECW7dupXiY+rWrZtsm4+PD97e3pw6dYq4uDiLfaZ68tSOc+TIkWT7AgMDk20zxaU013OJEiUoVaoUly5dsqjVdnV1Zfny5cTFxTFkyBDy5cvHihUrsLOz7r7iKlWqJNtWtGjRFPdpNBrc3d2T9V9cXBxz5swhMDAQFxcX1Go1KpXK/JpKrb/Ty/R6rV+/PiqVymKfWq2mXr16FnFJpfd1LZ4hNhZN375UnTsXYmNt3RohhMh2MmvHCywsLAyVSmVOcFITHh4OgIeHR4r7TY83xSXl4uKSbJspKTM8tSRw9+7dOXjwID///DMDBw5EURSWL19OgQIFaNmypTnu4cOHQMJNdCnd6GgSGRlp8btKpaJNmzbmG9sGDx6c6mNTsnr1ajp16kS+fPkICgrC19cXJycnVCoVS5Ys4erVqyk+LrV+8/Dw4MqVKzx58oRChQqZt7u7u6d5nLCwsHSdIz3/bv/++y/h4eHkz5/fvL1atWr4+Phw6dIlmjdvTunSpVN8fFrS+ndPbV/SGwgB2rdvz8aNGylbtiydOnXC3d0drVbL48ePmTt3LrHPmXhl1+tapCE+HvUPP1AC0MfH27o1edKVK1coW7YsPXv2ZMmSJbZuTopUKhX169dn165dtm5Kpsqtz0tYRxLpF5ibmxuKonD79m2KFSuWapwpaQgNDU1x/507dyziMqpz586MGDGCH3/8kYEDB7J7926uXr3KO++8g4ODQ7L2jBw5klmzZqX7+JcvX2bUqFEULFiQR48e8fbbb7N79240Gk26Hj9p0iR0Oh2HDx+mTJkyFvtMM1KkJLV+Cw0NRaVSWSSxkDBLSVrHSWku5KdHVCHj/26jRo3i0qVLFCpUiFWrVtGzZ09atGiR4jGyyt9//83GjRsJCgpi8+bNFv9G+/fvZ+7cuc99jux6XQshhBCpkdKOF5ipHGD79u1pxrm4uFCqVCkuXLjAzZs3k+03/TWd0tf51ihcuDDNmjVj//79XLhwwVzW8dZbb1nE1axZE5VKRUhISLqPHR8fT7du3Xjy5Ak///wzI0aMYN++fUyePDndx7h48SLlypVLlkTfvn2bS5cupfq4v/76K9m2q1evcv36dSpUqIC9vb3FvqNHj1pMD/j0capWrZqu9priUhrtuH79OhcvXqRUqVIWifzmzZtZsGAB9evX59ChQxQoUIDevXunmmxmFdN0gi1btkz2h05K/QkJJSLWjAabXq+7d+9GURSLfYqisHv3bos4IYTITGfOnGHZsmW2boawMUmkX2DvvvsuGo2G8ePHJytLUBTFoga1Z8+e6PV6xowZY5F0HD9+nCVLluDq6kqbNm2eu02mWuhvv/2W1atXU7JkyWTzR3t6etKxY0f27dvHzJkzkyVBAAcOHLCYJ3ny5MmEhIQwcuRImjRpwv/+9z+qVavG//73v1QTs6f5+Phw4cIFi6QyJiaG9957L1lZQlLLli3j+PHj5t8VRWHs2LEYDIYU5zV+/Pgxa9assdi2bds2fv/9dypWrJhifW5KWrdujaurK4sXL+bUqVMW5//ggw+Ij4+3OP+dO3fo3bs3BQoU4Mcff8TX15dFixZx9+5devbsmWI/ZxUfHx+AZHOCnzp1iqlTp6b4mIIFC3L//n1iYmLSdY4SJUrQsGFDTp06xffff2+xb9GiRZw5c4ZGjRrh7e2dgWcghBBp8/f3p0SJErZuhrAxSaRfYAEBAXz++efcvn2bChUq8NZbbzFu3Dj69u1L2bJlmT17tjl29OjRBAYG8sMPPxAYGMiHH35Inz59qF27NvHx8XzzzTfJShQyolWrVri6ujJnzhzCwsJ46623Uixb+PLLL6lSpQqjR4+mcuXKvPPOO3zwwQd07dqVsmXL8vLLL5trW3fv3m1OnD/99FMA7O3tWbFiBTqdjrfeeitdN4gNHjyY8PBwqlatypAhQxgwYAABAQGcPHmSypUrp/q4oKAgateuTd++ffnwww8JDAxkxYoVvPzyyynWadepU4fffvuNpk2bMnbsWLp27crrr7+Oo6Mj3377bTp7MuGbhG+++Qa9Xk+tWrXM569ZsyYrV64kMDCQUaNGAQnJdY8ePbh37x7ffPON+ca59u3b07dvX7Zt28acOXPSfe7nFRgYSGBgIKtWraJevXqMHj2azp07U7NmTRo3bpziYxo1akRMTAzNmzdnwoQJfPLJJ+ZR5dQsXLiQwoUL069fP9q1a8cPP/xA27ZteffddylSpAgLFy7MiqcnxAvBtFhRsWLFsLe3p3jx4qkuVgQJi2RNnjyZSpUq4eTkhKurK1WrVuWjjz6yGGxYv349Xbp0wc/PzxxXt25d1q5d+9xtXrJkifm+lY0bN1KrVi2cnJwoVqwYH330EUajEYClS5dSuXJlHB0dKVGiBDNnzkx2rFu3bjFx4kRefvll3N3dcXBwwNfXlwEDBiQrwXuRF7USNpZVU4eI5LJiQRZFUZSdO3cqr7/+ulKwYEHF3t5eKV68uNKuXTvlzz//tJguJiIiQvnoo4+UsmXLmueObt68ufLXX38lO6Zp6jfTghhJmRb+WLx4cYrtefvtt83zKT+9IEZSUVFRyowZM5Tq1asrzs7OiqOjo1KyZEmlTZs2yrJlyxS9Xq88fPhQ8fb2VpydnVM81jfffKMASvv27Z/ZT0ajUfnqq6+UChUqKDqdTvH09FT69u2r3L171zz1WWp98M033ygVKlRQHBwclKJFiypDhw5NNk2aaYq27t27K/PmzVOaN2+uuLi4KM7OzkqTJk0spr0zSem8T9u9e7fSvHlzxc3NTbG3t1fKli2rfPTRRxZzOc+cOTPVqfoiIiLM/+b//POPeTtpTH/39Lzkz2prSlPX3b17V+nTp4/i5eWl6HQ6JSAgQPniiy+US5cupTgn9JMnT5R+/fopRYsWVTQajQIoEydOVBQl9XmkFSVhKsLevXubH1e0aFGld+/eyRbYedZzSOu5i1RERCgKKAoocY8e2bo1eYppOrB///33mYsVtWrVSvnwww+V119/PdXFikJDQ81TRlapUkUZMWKEMmzYMKVZs2aKVqtVHiX5933ppZeUgIAApWfPnsqHH36o9O3b13yuefPmJWtrStea1Jg+X9544w1Fp9MpnTt3VoYPH66ULVtWAZRx48YpM2bMUFxcXJTu3bsrQ4YMUYoVK5bitJ0rV65UnJ2dlTfeeEMZMmSIMnLkSKVRo0YKoJQqVUp5/PhxiudOa1GrpNOwpXUNzc5FrfKCnDz9nSTS2SirEunUyHyXzyetPyZSkjSRln7PfvJ6twFJpG3mWYl00sWKkkptsaJ27dopgDJ27Nhk57pz547FXPQXL15MFvPkyRMlICBAcXV1VSIjIy32ZSSRfnol2/DwcMXd3V1xcnJSPD09Ldpw7do1xd7ePtmCV6GhocqTJ0+SnWPp0qUKoHzyySfJ9j1rUav0JtK2WNQqN8vJibSUdgghhMgYJyf0N2/y29Kl4ORk69aI/1y7do2dO3dSvnx5+vXrZ7Hv3Xffxd/fnz/++IPr168DCfdXrFu3jtKlSzNp0qRkx/Pw8LCYi75UqVLJYvLly0evXr0ICwvj77//fu7n8NZbb1GzZk3z7/nz5+f1118nKiqK9957z6IN3t7e1KlTh9OnTxOfZBpGd3d38uXLl+zY3bt3x8XFhR07diTb99VXX+Hr68vIkSOZP38+s2bNIjAwkClTpljV/nHjxlGkSBHz74GBgZQqVYrHjx/z6aef4uzsbN7Xrl07tFotx44dszhGiRIlkt2srVKpGDhwIECK7RfZTxJpIYQQGaNSQZEixLm6Jvy/yBGsXazo0KFDKIpCw4YN0Wq1zzz+3bt3GTFiBOXKlTPPxa9SqRg5ciTw/IstgXWLQpn2GQyGZDMUrVu3jqCgIIoUKYKdnR0qlQq1Wk14eHiK7cxLi1qJzCHzSAshhBC5iLWLFZkWiUprPQKThw8fUrNmTa5du8arr75KkyZNcHNzQ6PRcPToUX755ZfnXmwJMrYoFGBxE97s2bN5//33KVKkCE2bNqV48eLmVWc///zzVNuZVxa1EplDEmkhUmFasjy9fH19URQFvV7Pli1bsq5hQuQUsbGohw2j0tWr0LgxpGM0U2Q9axcrcnNzA0hxnYGnfffdd1y7do2PP/6Y8ePHW+ybNm0av/zyS0abnani4+P5+OOPKVq0KEePHrVYcVZRFGbMmJHqY/PKolYic9i0tGP37t20atUKLy8vVCoVGzZssNivKAoTJkygaNGiODo60qRJE86fP28R4+vra/5ayfQzbdo0i5jjx49Tt25ddDod3t7eKb6BVq9ejb+/PzqdjoCAgGSJUHraIoQQeUp8PJqvvqLkb7+BLBGeY1i7WFGNGjVQq9Xs3LnzmdOqmRZbat26dbJ96Z3TPzvcv3+fsLAwateubZFEQ0IpS0qLZsGLvaiVsA2bJtKRkZFUrlyZL774IsX9M2bMYN68eXz11VccOHAAZ2dngoKCki3YMGXKFG7fvm3+STq3b3h4OE2bNsXHx4fDhw8zc+ZMJk2axKJFi8wx+/bto0uXLvTt25cjR47Qpk0b2rRpw8mTJ61uixBCCGFL1i5W5OHhQbt27bh48WKKq8XevXvXfBNfaostrVixIkd9E+fu7o6joyP//POPxeJejx49SnH+f3jxF7UStmHT0o7mzZvTvHnzFPcpisLnn3/O+PHjzX/5Llu2DA8PDzZs2EDnzp3Nsfnz58fT0zPF45huGvj++++xt7enQoUKHD16lDlz5tC/f38A5s6dS7NmzcyLW3z88ccEBwezYMECvvrqK6vaIoQQQtjawoULqVOnDv369WPjxo2UL1+eU6dO8euvv6a4WNGXX37JyZMn+fTTT9myZQuNGjVCURT+/fdftm/fTmhoKG5ubnTv3p3p06czePBgdu7ciY+PD8eOHeP333+nbdu2rFu3zkbP2JJarWbAgAHMnj2bypUr06pVK8LDw/ntt9/w8fHBy8vLIl5JsqjVmjVrki1q9d133zFnzhyGDBmSLe1PuqjV7du3efnll7l27Rq//vorLVu2TLZ6rrCdHFsjffnyZe7cuUOTJk3M21xdXalVqxYhISEWyeu0adP4+OOPKVGiBF27dmX48OHmov6QkBDq1auHvb29OT4oKIjp06fz6NEjChQoQEhICCNGjLA4f1BQkLnUxJq2JBUbG2txM4Dpxg69Xp8tqxKZziErIGUv6XfbkH63Ab0erfl/9SB9n21Mr3PTSLHRaLR47ZcqVYqQkBA++eQTtm/fzubNmylSpAg9e/Zk/Pjx+Pj4WMS7urry119/MWfOHNauXcuCBQvQ6XT4+voyatQo7O3t0ev1eHh4sGPHDsaOHcuOHTuIj4+natWqbNmyhRs3brBu3ToMBkOy96Hp/pFnMRgM5v8+HW/aFx8fn2yfacXDpJ+vU6ZMwdXVlWXLlvHll1/i4eFBp06d+Oijj6hatapFP86ZM4fg4GD69OnDG2+8YXH8WbNmsXv3bsaOHUvt2rUtHvf080qpHUn7IOljU/L0CpLjxo1j+/bt/P333/j5+TF9+nSCgoJYs2ZNsn/z3Cy7r+/WnEelZOd3FWlQqVSsX7+eNm3aAAnlFq+++iq3bt0y32EM0LFjR1QqFT///DOQ8OKvVq0aBQsWZN++fYwZM4bevXubl0Nu2rQpJUuW5OuvvzYf4/Tp01SoUIHTp09Trlw57O3tWbp0KV26dDHHfPnll0yePJnQ0NB0t+VpkyZNSvFrshUrVuAkc64KIV5wmpgYXv9vIGHTTz9h0Ols3CIhhHh+UVFRdO3albCwsBRnWUkqx45Ip1fSkeRKlSphb2/PO++8w9SpU3FwcLBhy2DMmDEW7QsPD8fb25umTZs+8x8mM+j1eoKDg3nttdfSNTeoyBzS77Yh/W4DkZHm/23UqBHa/2Z/EFlPXu+2If1uG9nd76YKgvTIsYm0qeY5NDTUYhQ4NDQ0xYnOTWrVqkV8fDxXrlzhpZdewtPTM9ndtqbfTedILSbp/oy0xcHBIcVkXqvVZusbMLvPJxJIv9uG9Hs2StLP0u+2If1uG9LvtpFd/W7NOXLsyoYlS5bE09OT33//3bwtPDycAwcOmGuUUnL06FHUarV5upvatWuze/dui3qX4OBgXnrpJQoUKGCOSXoeU4zpPBltixBC5GqOjuj//ZftX38N/y10IYQQeYlNR6QjIiK4cOGC+ffLly9z9OhRChYsSIkSJRg2bBiffPIJZcqUoWTJknz00Ud4eXmZ66hDQkI4cOAADRs2JH/+/ISEhDB8+HDeeustc5LctWtXJk+eTN++ffnggw84efIkc+fO5bPPPjOfd+jQodSvX5/Zs2fTsmVLfvrpJw4dOmSeIk+lUj2zLUIIkeeo1eDrS7SHR8L/CyFEHmPTRPrQoUM0bNjQ/Lupnrhnz54sWbKE0aNHExkZSf/+/Xn8+DF16tRh69at6P67ocXBwYGffvqJSZMmERsbS8mSJRk+fLhFXbKrqyvbt29n4MCBVK9encKFCzNhwgTz1HcAr7zyCitWrGD8+PGMHTuWMmXKsGHDBipWrGiOeVZbhBBCCCFE3mLTRLpBgwZpTnCuUqmYMmUKU6ZMSXF/tWrV2L9//zPPU6lSpWeuBNShQwc6dOiQ4bYIIUSeExeHeswYyl+6BE2ayBLhQog8J8febCiEECKH0+vRzJlDGWT+7udhNBq5ePEiZcqUsXVThBBWkqI2IYQQwgYiIiL44osv8Cv7EmXLlmXr1q22bpIQwkqSSAshhBDZ6Nq1a4wePRqvYsUZNGgQly8m3HT/7bff2bhlQghrSWmHEEIIkcUURWH//v3MnjOH9evXY/xvuWuT+g0aMnLkiFQeLYTIqSSRFkIIIbKIXq9nzZo1zJ7zGYcP/W2xT6u1p1u3rgwfPpxKlSrZqIVCiOchibQQwiqKAg8eQEQE5MsHhQqBSmXrVgmRszx8+JBFixbx+bz5hN6+ZbGvUOEiDB40kHfffRcPDw8btVAIkRkkkRZCpMvjx7B0KcyfDxcvJm4vXRoGD4aePcHNzVatEyJnOHv2LJ9//jlLli4jNibaYl+FgEqMGjmCzp074+DgYKMWCiEykyTSQohn2rYN2rWDqKjk+y5dguHDYdw4WLsWgoKyv33CRhwd0R85wl9//UXdPLxEuKIoBAcHM+ezz9j21MwbKpWK11u1YsTw4dSvXx+VfH0jRK4iibQQIk3btkHLlgklHSmtn2TaFh2dELd5syTTeYZaDRUq8OTq1Ty5RHh0dDQ//vgjs+d8xrmzZyz2OTk707dPH4YMGYKfn5+NWiiEyGqSSAshUvX4ccJItKKA0Zh2rNGYkEu1awc3bkiZh8i9bt26xRdffMGXC7/i8aOHFvuKeZdgxLCh9O3bF1dXVxu1UAiRXSSRFkKkaunShHKOlEaiU2I0JsQvWwZDhmRt20QOEBeH+uOPeen8+TyxRPihQ4f47LPP+XnVzxji4y321X7lVd4fOYI33ngDOzv5aBUir5B3uw1ERoJGk3y7RgM6nWVcatRqSFqSmFKsXg8xMRqioy0/39JKjFQqcHLKWGx0dNqjls7OGYuNiYGnplzNcKyTU+IME7Gx8NRnYYZjHR0Tv9mOi0vo98jIlPOKp2PTWllZp0t8rVgTq9cnxKfGwQFMn/WpxSoKzJ2b/iQ6qXnz4L330m6DvX1i/xgMCf92qdFqE+LTijW93uPiEo9rNCa81tJz3GfF2tkl9Bsk9ElK9eIZibXmfZ/Z14jUYtP9vtfrif1kNt6oiJyt5+mXe264RsTExLNp0y/MW/AZB/fvtYjV2NnRuVNnhg0bSkBADeLjEx4TG5v8uNa879MTa3q9GwyJr/fsvkakFGvqg9Qkfd9bE5sZ14iUYq29RkRGpn59l2tEgqzII0yv96Sy8hqRVl8ko4hsExYWpgAKhCmJFaeJPy1aWMY7OSWPMf3Ur28ZW7hw6rHVqxssYn18Uo8tX97yuOXLpx7r42MZW6NG6rGFC1vG1q+feqyTk2Vsixapxz79Cm7fPu3YiIjE2J490469ezcxdsCAtGMvX06MHTEiPs3YkycTYydOTPu4Bw8mxs6YkXbszp2JsQsWpB27aVNi7OLFacdm9GfFirT3L1iQ2IadO9OOnTEjMfbgwbRjx4+PN8eePJl27PvvJx738uW0YwcMSIy9ezft2J49E2MjItKObd/e8jWcVmxWXSNq1LCMTfc1IiJCKc/JVGNf5GvE48ePlRo1ZiuoSigJ1+0kP6qCCoxTjh+/aT6uNdeI999PO9aaa8S+fXpzrK2uEatWJcauWpV27OLFibGbNqUdm1XXiIkTE2PlGpEoS64RSublES4uMUpcXJw5NmuvEQn5WlhYmPIsMiIthMgSaY3yCJFTXbx4gW++mcv3ixcT9fSwlLocGIeD8hbgiKenTZoohMhBVAl/3YjsEB4ejqurK7duheHi4pJsf+aXdujZtm0bzZsH4eKS+B2UlHYk/H9WlXZERurZtGkbQUFBaFOo7XhRSjvu3wdf39SP8Sx37iQs2JKazC/tSHi9v/56EM7OCQeW0o6Mxab7fR8ZSVS+Iiio0N+4ifapO0xflGuEoijs3r2LBQs+Y+vWTTz9sdikSTMGDx5Oo0avWUxf9zzlX89f2pHwem/dOgidTpuu40ppR/JYa68R4eEJ/Z7S9V2uEQmyprQjod/btk3s96y8Rjx6FI6XlythYSnna0nJiLQNODtb/qOlFWfNMZ+m14NOZ+Dp6V2TvmifxZpYa6aRtSY26UUhM2MdHBIvZJkZa2+f0O/Ozs++98rePvEinZ7jpjdWq03/fV+pxTo5JSy2culS6hfBlCnYuUUxYO0x3qpdguYVi6LTpnBTQBIaTfpf76nFml7vSftIrU7/ca2JVamyJhZyRqxV1wgSshC9M2ifcY6cdo2IjY1l5cqVzJrzGadOHLeIc9A50qtnD4YNG4a/v/8zj2vtNeJ53/em13vS+22y+xqREju7xKQ6M2Mz4xqRkoxcI9JzfZdrRMZiU3vfm17v6YlNibXXCGv6QhJpIUSKVKqEFQuHD7f2geBa4wqHrz3i8LVHTN54mvbVitOlVglKF0ljiFqIbBIaGspXX33F/AVf8OD+PYt9HkW9GD50CP369aNgwYI2aqEQ4kUhibQQIlU9eyasWGj5FdptQAcUSBaf8PWfin3flWbbeXtWHrzGrbAYvt1zmW/3XOblUgXpEliCoAqezxylFiKzHTt2jM8++5wVK1ag11vWKlSvUZP3R46gXbt2KZZkCSFESiSRFkKkys0tYdnvli0TkmSjEVC9Bkod4CuLWLU6YRR73TooW0JH2RJlGNDQjz//vcuKA9f44+xd9l96yP5LD8mvs6N1FS861ShBxWIusmzyi0qnI37fPvbu3csr1nx3mo0MBgObN29m9pzP2P3nLot9ao2Gtm3bMmL4cGrXrm2bBgohXmiSSAsh0hQUlLDsd7t2EBl5BpRTQNEkEQoqVcJI9Lp10LRp4h6NWkUjfw8a+Xtw63E0qw5dZ/WhG9x8HM2P+6/x4/5r+Hvmp2MNb9pULUZB53QWeIqcQaNBqVGDx3fvpjw5vg09efKEJUuWMPuzz7l6+ZLFvvwurrz7Tn8GDRpEiRIlbNRCIURuIIm0EOKZgoISlv1+6631bN4MqG/Cf6Uedm5RTBpjz6B3tKS1IrKXmyPDmpRlSKMyhFx6wM9/X2frqTucvfOEKZtOM+23s7xW3oMONYpTt0wRNGoZpRbWu3LlCvPnz2fRN98S8STcYl/J0n68P2I4PXr0IF9aU8oIIUQ6SSIthEgXNze4cWstoCJ/vtscO6pQ7/Ng1Do97wxogms68xK1WsWrfoV51a8wYVF6fjl2k1WHrnPyZjibT9xm84nbFHXV0b56cdpVK45vYStunxbZKy4O9Zw5+J09a9MlwhVFYe/evcz57DN+2bAB41NzYjVo2Ij3R46gefPmqE3zygkhRCaQRFoIkS7Xrl3j2JF/cCxVgyeXDlHEPRqNY8KktZoM1ji7OmnpUduXHrV9OXUrjNWHbrD+yE1uh8Uw/48LzP/jAlVLuNG2ajFer+RFASn9yFn0ejRjxlAB0H/+ebafPi4ujtWrVzN7zmcc+eewxT6tvQPd3+rGsGHDCAgIyPa2CSHyBkmkhRDpsn79etR2WvJVbkr0pUNcu3HDvE+jef4yjAperlR4w5UPm/uz40woqw7dYM/5exy59pgj1x4zeeNpGrzkTttqxWjk7y6zfuQBGzZsYPfu3cyePdvihtT79++zaNEi5s1fQOid2xaPKVzEnSGDB/HOO+/g7u6e3U0WQuQxkkgLIdJlzdp16HyqoC3oDcDNm7fM++wysZ5Zp9XweiUvXq/kxd3wGH49dov1R25y6lY4O86EsuNMKPl1drSoWJQ3qxUj0LcgaqmnzlUiIyMZNmwY3377LQBBQUEEBQVx+vRpPvvsM5b98CNxsZZL1wVUqsz7I0fQqVMnHNK7MooQQjwnSaSFEM909+5d9u3dg1vTgWjyJyxScfPmTcANAHUWTV/n7qLj7bqleLtuKf4NfcL6Izf55chNboXF8POh6/x86DrF3BxpXcWL1wM8sqQNInsdOnSITl26cvXadQoGDSL6+FbGjR/PrFmz2bEj2CJWpVLR6o03GDliBHXr1pVpFIUQ2U4SaSHEM/36668oCjj51UJl74TGXmeRSGfmiHRqynrk54Nm/oxq+hIHrzxk/T832XLiNjcfR/Plrot8uesiRR01XHK8SOuqxSklqyi+UAwGA7NmzWLc+PHYFymJR8+5aAsWQ22v4/DGWRaxTs7OvN23L0OHDqVUqVI2arHt3YqCW4+j8SkiC8gIYSuSSAshnmntunU4lqiAxtkNAHuXwty6dRucKgBk61R1arWKl0sV4uVShZjcugK/n7nL+iM3+PPfe9yOhrl/XGTuHxcpV9SF1ysVpWVAUZn5I4e7fv063d7qzl9/7calVjvc6nRDpUlIDp3K1cfp/AGizv6Ft48vI4YNpXfv3rimNddiHhAWrWfOcQ2Lzu/nj5EN5EZcIWxEEmkhRJrCwsL4fcfv5KvX07xN5VyA27dvQWlQq7DZV+o6rYaWlYrSslJRHoRHMfvnHdxUe7D34gPO3A7nzO1wZm47R8ViLrQM8KJ5RU9JqnOY1atX83a//sSixaPzp+hKVLLYr1Kp0BbxQXMhhEMHD8gNhP95GBmHXlHxKErP3N/PM+mNCrZukhB5kkyoKYRI05YtW9Dr43Aqm2QJZaeC5psN7XLIvLwujlpquSt826Mah8Y3YXq7AOqWKYxGreLkzXCmbz1Lg1m7CPpsN7O3n+PkzTAURbF1s19sOh3xwcHs+fhjsHKJ8CdPntC7d286duyIoWgFivSclyyJNnEu3wCjwcj333+fGa3OFfSGxLmyf9h/lQt3I2zYGiHyLhmRFkKkad26dTh6lcXOJXEk0C5fQW7dPoYGyCF5tAU3J3s61SxBp5oleBARy7ZToWw5cZv9lx5wLvQJ50KfMP+PC3i56mhawZOmFTwI9C2InSYHPpkcTFGruVezAqcfXqJ07CM8HTzT9e3EgQMH6NSlKzdu3aZQi2E4V2xsfpxiiCfu3hXibv9L7O1/Md69QPTdq6AonDlzNquf0gtDb0j8I9BgVJi65Qzf9appwxYJkTdJIi2ESFV0dDSbt2zBoUZ7i+2a/IW4f/IO7oqSY0akU1MonwNda5Wga60ShEXp+eNcKNtPhbLr3D1uhcWwZN8Vluy7gpuTlkYvudPA3516ZQrj5iQ1p6l5HPOYpUeXMv/gfC4+ugjAO2feoXSB0gwOHEzPKj1x07kle5zBYGDatGlMmDgRB08/PHp8DioVUWf+JPbWv8SHnicu9BIGfSwaOzsqVAzglTebERgYSGBgIP7+/tn7RHOwuP9GpJ0dNMTqjfx+9i57zt+nTpnCNm6ZEHmLJNJCiFTt2LGD6KgoCiQt6wA0+QoSEx2FEheFxsnNNo3LAFcnLW9WLc6bVYsTozew5/x9tp26w44zoTyK0rPuyE3WHbmJWgVVSxSgQdkiNPR3p3xRF5mr+j/bLmyj3ap2ROmjku279OgSw7cNZ9wf41jbcS1BfkHmfVevXqVrt7fYt3cPKntH0Dpyb/ko9FHhAHj7lOTVOi9Tq1Z/atWqRZUqVXB0dMy25/Wiif9vRNojvwP1X3Jn8d4rfLL5NJuH1M3Wm3+FyOskkRZCpGrt2nXoipRAW8jbYrsmX8Jc0oYnD9EULGCLpj03nVZDk/IeNCnvQbzByKGrj9h59i47z93l39AIDl99xOGrj5gd/C+F8zlQv2wRGrxUhFf9ClMwj86QsO3CNlquaImiKCgkry83bYvWR9NyRUs2d91MkF8QN27coFLlyoSHhQHglt+Zl8t78XLvNwkMDKRmzZoUKlQoW5/Li85UI63VqBnauAzr/rnJ2TtP+Pnv63StVcLGrRMi75BEWgiRqp27dhH74CahX/dB7VYUh9K1iH98G1QJ5RzxEQ/QqP1s3MrnZ6dRm6fUG9OiHDcfR/PnuXvsPHeXfRfucz8ilrX/3GDtPwnLovt75qd26UK8UrowgSUL4uqY++fxfRzzmHar2qEoCkaMacYaMaJW1LRb1Y4bI27g5ubGB6NH4+fnR2BgID4+PrJ4ynNKmki7OdkztHEZpmw6zZzgc7SqXJT8utz/mhQiJ7BpcePu3btp1aoVXl5eqFQqNmzYYLFfURQmTJhA0aJFcXR0pEmTJpw/f94i5uHDh3Tr1g0XFxfc3Nzo27cvERGWdy8fP36cunXrotPp8Pb2ZsaMGcnasnr1avz9/dHpdAQEBLBlyxar2yJEbrN2zWoWzJ9H2xZNiLpyjEe/L0J9cQ+q83+i1mhQ2WnR5MKEqJibI11rleCbHjU4MqEpK96uRb+6JSnrkbDIy9k7T1i89wr9lh2i6pTttJq/h/9tOcPOs3eJiI23ceuzxtKjS4nSRz0ziTYxYiRKH8WyY8vIly8fY8eOpWPHjvj6+koSnQlMpR12moS+7F7bh1KFnbkfEceXuy7asmlC5Ck2HZGOjIykcuXK9OnTh7Zt2ybbP2PGDObNm8fSpUspWbIkH330EUFBQZw+fRrdf1MtdevWjdu3bxMcHIxer6d3797079+fFStWABAeHk7Tpk1p0qQJX331FSdOnKBPnz64ubnRv39/APbt20eXLl2YOnUqr7/+OitWrKBNmzb8888/VKxYMd1tSffzjotEE6dJtl2j1qCz01nEpUatUuOodUwzVq/XE2OIIVofjVabODoRpY9KddovlUqFk9YpQ7HR+miMSuofss72zhmKjYmPwWA0ZEqsk9bJ/CEeGx9LvDH1pMeaWEetI+r/RmnjDHHEGGKIjItEqyQfFXo6Vm/Qp3pcnZ0OjVpjdazeoCfOEJdqrIOdA3Zqu2fGlqtUjirVquDq6mp+T40d9yEDhwzkyNUHdP3ub1DFmF9/9hp7tP8tpBFvjCc2PjbVNiSNNRgNxMTHpBqr1Wix19inGWt6vccZ4syvd6NiJFofna7jphVbuYQj1X1LM65lee5HxBJy8T67L9zg4KWHXH4QxbGbMRy7GcpXuxPm1S7r7kp1H3eqeLtRxdsNLzd1qjXW1rzvM/sakVrs0+97RVGYe2BuiuUcaVFQmHdgHoMDB6NSqeQakc73fXpiw2MjMBKDndoFSBiZHtWsNO/8eJBv9pyhTdVCFC/gZPGYrLhGPB1rzfs+u68RKcVae42IjItM9fpup7bDwc4BSHjPpHQfQUZiX4RrRFJZkUeYru9JZeU1Iq2+eJpKySETqapUKtavX0+bNm2AhBeWl5cXI0eO5P333wcSFobw8PBgyZIldO7cmTNnzlC+fHn+/vtvatSoAcDWrVtp0aIFN27cwMvLi4ULFzJu3Dju3LmDvX3Cm+HDDz9kw4YNnD2bMJVSp06diIyMZNOmTeb2vPzyy1SpUoWvvvoqXW1Jj/Dw8ITVuD4EUsi9W5Rpweaum82/O//POdU3V32f+uzqtcv8e5GZRbgfdT/F2OpFq3Oo/yHz776f+3I17GqKseWLlOfUgFPm3yt8WYHT906nGOvj6sOVYVfMv9f8piaHbh1KMbawU2Hujbpn/r3Bkgb8efXPFGOdtE5Ejk18Ebdc0ZIt57ekGAugTEx8CXdY3YE1p9ekGhsxJsL8hum1oRdLjy1NNfbu+3cp4lwEgIGbB/LloS9Tjb089DK+br4AjNw6kjkH5qQae/K9k1RwT1g8YdKuSUz+c3KqsQffPkjNYglTWs3cO5PRO0anGruz504a+DYA4IuDXzDot0Gpxm7qsomWZVsCsOToEnr/0jvV2FXtV3F582U++OCDhA0dgFTWfljcejG9qvQCYPO/m3l95eupHndB8wUMDBwIwK4ru2i4tGGqsTOazGDUq6MA+Pvm3wR+G5hq7Pg64/m48ccAnLp7iooLK6Ya+37t95nZdCYAVx5foeTckqnGDqgxgC9afgHAvch7uM9KfWEQ5/jGFNYPB8BIDNcd26ca2758e1Z3WG3+XTU59dHarLpG1PCqwd/9/jb/ntY1IiPuj7pPIadCco347xoxavsoZoXMSjXWmmtE08Lfsm1gXwBm7J3BBzs+SDU2K68RHSp0AGD1qdV0XNMx1diccI2YWH8ikxpMAmx3jehZuSdL2iwBEhLYfFPzpRr7ol0jsiqPcNG4cP+D++aBkiy9RvyzBqYl5HouLi6pPg5y8IIsly9f5s6dOzRp0sS8zdXVlVq1ahESEgJASEgIbm5u5iQaoEmTJqjVag4cOGCOqVevnjmJBggKCuLcuXM8evTIHJP0PKYY03nS05aUxMbGEh4ebvGTFsWooNfrzT9pxipPxabx51CyWCuO+6y/s9Idq1gR+/RxjemPNRrT/to5O2LT+qsXQB+fJNaQdmx8fHy6j2sR+6zjGqyLvXHjRuKG/KnHGgwG83HjDWmXOFjExj8j1pj+WKPRmPjvEZ/2690i9hnvDWtiXy5ZkP51falVsgBO9sm/fUrq1M0wVuy/wuHL93n4JPVRKcgZ14iMeBj5UK4R1sRacY1Qq0j3cbPyGpGh972NrhFJj2ura0RWxeaEa0SW5RHPE5uJ14in5dgR6X379vHqq69y69YtihYtao7r2LEjKpWKn3/+mf/9738sXbqUc+fOWRzL3d2dyZMn895779G0aVNKlizJ119/bd5/+vRpKlSowOnTpylXrhz29vYsXbqULl26mGO+/PJLJk+eTGhoaLrakpJJkyYxeXLykYTvf/geJyenZNvVKjX26sSE/+mvMZ7uLwe1Q4ZiY42xaX7NkhWxADqNLkOxcca4NL++sSbWQe1g/ipWb9RjUFL/gLAm1l5tb/4qNjNjtWotGpXG6th4JT7Nr5mtjZ01YzYhIfsAmLdwHu7u7lwMV/HVWQ0ejgrvByS0y05th50q4Steg2JAb0z9gmtNrEalQavWWh1rVIzEGVP/SjqjsYqiEGtM/SvppLHxRoVrkbFci1Al/ESquBcNRhJeWyrUqEh83ztpoyniAIV1CkUcFQo6gKu9gps9uNqrcdRk3TXCqEB4HFyLjONejMKtKBU3IlTcjAnjhu7tVB//LMsqLsPFzkWuEZl4jdh/V8XaKxoquWnoV86yDRuuqtkbqsbDUWF4RQP/lVFn6TXCFJuZ7/u8co14Vqw1uYHkESnHWnuNiIiMoE/3PukakZZZO7LQmDFjGDFihPn38PBwvL29eaP5G8/8h8kMer2e4OBgXnvtNYsaaZG1cmO/T5s20/z/vd/qjYODA3suPGDR2cMUcslH21av2LB1CV6kfo/VG7hwL5Kzd55wLjSCs3ee8G9oBA8i44jSO3JVD1dTWPFZrYIi+R3wdNFRwEmLq6Ppxw5XRy35dXbYqdVoNSo0ahV2GjVatQqDoqCKMxAbbyRabyBGbyQqzsD9iFhCw2O5+yTh596TWOKNCk9/NKjR4UBRYrlDmsNWT1GhoqRbSTq16iQ3GGayJ/sus/7KeYp5FaFFi6oW+xpF6Wk6dw/3ovREFnmJXrV9bNTK3OdFus7kJtnd78+qIEgqxybSnp6eAISGhlqMAoeGhlKlShVzzN27dy0eFx8fz8OHD82P9/T0JDQ01CLG9PuzYpLuf1ZbUuLg4ICDg0Oy7VqtNlvfgNl9PpEgN/X7zZu3AHArWIh8+RJq+VT/rWio0ahz1PN8Efpdq9VSxUdHFR/LuZOfxOi5cj+KS/cjuHw/ksv3I7n5KJrbYTGEhscQb1QIDU9IfrOKRq3Cp5ATfkXyUcYjHwHF3Ago7srqs6MZsW2ElbcbwtCXh1qU1onMYfyvMtPeTpPs9V7EVcuoIH/Grj/BvD8u8mY1bwrnS/5ZJDLuRbjO5EbZ1e/WnCPHJtIlS5bE09OT33//3ZyshoeHc+DAAd577z0AateuzePHjzl8+DDVq1cH4I8//sBoNFKrVi1zzLhx49Dr9eaOCQ4O5qWXXqJAgQLmmN9//51hw4aZzx8cHEzt2rXT3RYhciuj0cjd0NsAFC3qZd5u+K/mzE5WUcs0+XVaAoq7ElDcNdk+g1HhQUQst8NiuB0Ww+OoOMKi9YRF63n8338jYuKJNxrRGxQMRoV4Q8L/a9QqHLUadPYadHZqHO01OGo1FM7ngIeLA+4uOjxcdHi4OFAknwN2muS3z/Sq0ovxf4xPuFM+HVPgqVVqHO0c6VG5R6b0jbCUdB7plHSq6c2Kg1c5eTOcmVvPMb19pexsnhB5hk0T6YiICC5cuGD+/fLlyxw9epSCBQtSokQJhg0bxieffEKZMmXMU855eXmZ66jLlStHs2bN6NevH1999RV6vZ5BgwbRuXNnvLwSPvC7du3K5MmT6du3Lx988AEnT55k7ty5fPbZZ+bzDh06lPr16zN79mxatmzJTz/9xKFDh1i0aBGQUMPzrLYIkVs9ePCA+P9uLinhXcy83ZRIy9LZ2UOjVuHuosPdRUdl72fHZzY3nRtrO66l5YqWqBX1M5JpFSpUrOu0DjedW3Y1MU/R/zePdGqJtEatYvIbFWi3MIRVhxNWO6zs7ZaNLRQib7DprB2HDh2iatWqVK2aUN81YsQIqlatyoQJEwAYPXo0gwcPpn///tSsWZOIiAi2bt1qMW/z8uXL8ff3p3HjxrRo0YI6deqYE2BImF1j+/btXL58merVqzNy5EgmTJhgnkMa4JVXXmHFihUsWrSIypUrs2bNGjZs2GCeQzq9bREiN7p586b5/72LFzf/v4xI5z1BfkFs7roZR63jf6my5b99wu8qVIoDrYvPp2npprZpaB6QOCKd+vuvuk9B2lYthqLAxF9PYXzGzAVCCOvZdES6QYMGad5xqVKpmDJlClOmTEk1pmDBguaFIlJTqVIl/vrrrzRjOnToQIcOHZ6rLULkRrdu3TL/v+mbHuC/m9ISRr5E3hHkF8SNETdYdmwZ8/Z/zsXHl837ShUoxZtl3mb17lIc/teZHadDaVLew4atzb3inzEibfJhc3+2nbrD0euPWfvPDTrUsMHXGULkYjm2RloIkTMkHZEuViyxtMOoSCKdV7np3BhSawiDK/ThoXt+njiA7vRFPDxLolKpKKCcYdHuS4xdf4KavgVxdZKbsjJbekakAdxddAxpXIapv51l+tazBFX0xEUn/x5CZJYcuyCLECJnSHVE2mBKpOUyklepVCoKRYPvYyjkWNA8xd2I18pSqogzd5/EMnnTqbQPIjLkWTcbJtX71ZKUKuLM/Yg45mz/N6ubJkSeIp+AQog0pTYibaqRfsaAmMiDdFoNszpURq2Cdf/cZMfp0Gc/SFhFb8U9CvZ2aqa8kXDPz7KQK5y8GZalbRMiL5FEWgiRpqSJdNIRaYMiI9IiddVKFODtuqUAGLv+BGFRmb/0eF5mzYg0QJ0yhWlV2QujAuM2nJQbD4XIJPIJKIRI09XrNwDQ2NlRpEgR8/Z4mbVDPINFicdGKfHITPr4hPefvV36P8bHtyxHPgc7jl1/zMq/r2VV04TIUySRFkKkyVQjXcTdE3WS0WejzNohHByIX7GCv0eNghRWcbUo8TgiJR6ZyTQibc0fsh4uOkY2LQvAjK3nuB+RdStkCpFXSCIthEhVXFwcjx7cB6B48WIW+2T6O4GdHUr79tx69VWwS3kSqGolCtBPSjwynen9l97SDpPuL/tQvqgLYdF6pm45mxVNEyJPkURaCJGq27dvm//fx7u4xT6D0foRMZE3DX+tLKWlxCNTxaVz+run2WnUfPpmRVQqWPvPDQ5cepAVzRMiz5BEWgiRqtSmvgP473NclgjPy+LjUa1Zg9fevRAfn2qYTqthppR4ZCpzaYeVI9IAVUsUoHPNEgB89MtJ87GEENaTRFoIkarUpr4DGZEWQGwsdl27UnPmTIhNu942aYnHmPUneBwVlx0tzLVM87jbZ3D+yQ+avURBZ3v+DY3g+z2Xn/0AIUSKJJEWQqQqrRFpU42mjEiL9DKVeNx7EsuUjadt3ZwXmrXT3z3NzcmeMc39Afh8x3muP4zKtLYJkZdIIi2ESFVaI9JGmf5OWElm8cg8eoPpZsOMv//aVy9OrZIFidYbGL/hJIoic0sLYS1JpIUQqUrPiLTM2iGsUbVEAfrVkxKP5xX/HDXSJiqViv+1DcDeTs2f/97j12O3nv0gIYSFDL0Dr127luJfroqicO2aTPIuRG5x7b/FWCCFGmnTyoYqSaSFdYY3SSzxmCwlHhkSlwkj0gCli+RjcEM/AKZsPM2jSPnDRghrZCiRLlmyJPfu3Uu2/eHDh5QsWfK5GyWEyBmu30hIpJ2cncmfP7/FPsN/H+Sa5/wgF3lP0hKP9UduEiwlHlZ73hrppN6pX5qyHvl4EBnHp1vOPPfxhMhLMvQOVBQFVQqjUBEREeh0uudulBAiZ/D29gagfPkKyfbJEuHieSQt8RgrJR5WMyfS6udPpO3t1ExtWwmVCtYcvsHeC/ef+5hC5BUpL0WVihEjRgAJdVUfffQRTk5O5n0Gg4EDBw5QpUqVTG2gEMJ2/tz5B9HR0Wg0mmT7jFLaIeztif/2W44fO0aAvb3VDx/epCw7Tody8V4kkzee5rNOVTK/jblU4sqGmfP+q+5TgO4v+7As5Cpj159g27B66LTJ3/dCCEtW/Sl75MgRjhw5gqIonDhxwvz7kSNHOHv2LJUrV2bJkiVZ1FQhhC04Ojpin0KSlHizodyznGdptSg9enC9cWPQaq1+uJR4ZFxmlnaYjAp6CU8XHVcfRDH39/OZdlwhcjOrRqR37twJQO/evZk7dy4uLi5Z0ighRM5nrpGWPFo8B1OJx9d/XmLs+hPU9C2Am5P1o9t5jWn6O7tMvEchv07LlNYV6P/DYRbtvkSrSl6U95LPeSHSkqGPwMWLF0sSLUQeZ561Q0ak8674eFRbtuBx6FCaS4Q/y/AmZfFzz8e9J7FM+vVUJjYw98qKEWmAphU8aV7RE4NR4YO1x83T7AkhUpbuEem2bduyZMkSXFxcaNu2bZqx69ate+6GCSFyNoPcbChiY7Fr04aXAf3IkeDomKHDmEo82n65lw1Hb9EioChNK3hmbltzEUVRzCPSGV0iPC2T36jAvosPOHEzjEV/XWJAA79MP4cQuUW6/5R1dXU1z9Th4uKCq6trqj9CiNzPIEuEi0xUxduN/vVKAzBuw0mZxSMNpvsT4PkWZEmNu4uOCa+XB+Dz4PNcuPsk088hRG6R7hHpN9980zy1ndxQKISQEWmR2YY1KcOOM6FcuBvBpF9P8XnnqrZuUo4Ub0hMpDNr1o6nta1WjI3Hb7Hr3D1GrTnOmndfkVVMhUhBuv+UffPNN3n8+DEAGo2Gu3fvZlWbhBAvgHhjQu2kfLiKzJJ0Fo8NR2+x/dQdWzcpR4pLUrec2TXSJiqViqltA8jvYMeRa49ZvPdylpxHiBddut+BRYoUYf/+/UDqC7KI3KNBgwbP/W+8ZMkSVCpVln6DoVKpaNCgQZYd31ZehOdl+iyXRFpkpqQlHmPXS4lHSvRJEums/EaoqKsj41qWA2DmtnNcvh+ZZecS4kWV7kT63XffpXXr1mg0GlQqFZ6enmg0mhR/hBC5n0FGpEUWGdakDGXc83E/QmbxSIkpkdaosn5Qq1NNb+r4FSY23sgHa45jTFKfLYSwokZ60qRJdO7cmQsXLvDGG2+wePFi3NzcsrBpQuRdZ86csVg5NCcyL8gi306JTKbTapgps3ikylQjnUXl0RZMJR5Bn+/m4JWHLAu5Qq9XS2b9iYV4QVi1IIu/vz/+/v5MnDiRDh065PgPeiFeVP7+/rZuwjOZlgjPzAUhxAvG3h7D3LmcOnWKchlYIjwtphKPr/68yNj1J6npW5ACzrJQCyTWSNtl01vPu6ATY5r789Evp5i+9RyN/D0oUUg+/4WADC7IMnHiRJycnLh37x579uxhz5493Lt3L7PbJjJRfHw8U6dOpXTp0uh0Ovz8/Jg6dSqXLl1CpVLRq1evdB9nzpw5VK5cGUdHR1xdXWnYsCEbN25M83G//PILgYGBODk5UaRIEfr06UNoaPLlgNevX0+XLl3w8/PDyckJV1dX6taty9q1azPytC0krdneuHEjtWrVwsnJiWLFivHRRx9h/K9UYenSpebnV6JECWbOnJnsWLdu3WLixIm8/PLLuLu74+DggK+vLwMGDEh2I+6FCxfInz8/xYsX58GDB+nal1KNdK9evVCpVFy6dIlZs2ZRtmxZHB0dKV++PD/99BMAcXFxjBs3Dl9fX3Q6HZUqVeK3335L1v7Dhw8zaNAgKlasiKurK46OjgQEBDBt2jT0en26+tM8KialHXmXVovxvfe43KJFhpYIfxaLEo+NUuJhYirtyM61kLrV8uHlUgWJ1ht4f/Ux86w9QuR1GXobRkVF0adPH7y8vKhXrx716tXDy8uLvn37EhUVldltFJmgT58+jB07FoCBAwfSrFkzPvvsM4YNG5buYyiKQvv27Rk5ciQxMTEMHDiQrl27cuzYMd544w0+++yzFB+3du1aOnTogJ+fH8OGDSMgIIDFixdTp04dHj16ZBE7ZswYTp06RZ06dRg6dCgdOnTg3LlztG/fnvnz52f4+Se1fv16OnbsSKlSpXj33XfJly8fn3zyCRMmTGDmzJkMGTKEypUr079/f4xGI6NHj2bZsmUWx9i9ezezZ8/Gw8ODLl26MHjwYEqXLs3ChQupV68ekZGJN+X4+fkxf/58bt68ydtvv23ertfr6dKlC1FRUfzwww8UKlQoXe0fMWIEs2fPpkGDBvTq1Yvbt2/TtWtXtm3bRtu2bVm5ciUtW7akW7dunD9/ntatW3Px4kWLY3zzzTesX7+egIAA3nnnHfr27YuiKIwZM4bOnTunqx2mEWkp7RBZxVTioVbBL0dvsU1m8QAS/4jNrhFpSJgvfmb7yjjbazh45SHf75FZPIQAQMmA/v37K6VKlVK2bNmihIWFKWFhYcrmzZuV0qVLK++++25GDpknhIWFKYASFhaWLeeLi4tTNmzYoGzdulUBlCpVqiiRkZHm/bdu3VI8PDwUQOnZs6fFY+vXr688/fJYunSpAij169dXYmNjzduvXr2qFC5cWLGzs1MuXrxo3r548WIFUABl69atFsf68MMPFUAZNGiQxfakjzd58uSJEhAQoLi6ulq0X1EUc3vSw9QerVarHDx40Lw9PDxccXd3V5ycnBRPT0+LNly7dk2xt7dXAgICLI4VGhqqPHnyJNk5TH3UrVs3JS4uzmJf586dFUD58ssvFUVRlFGjRimAMmbMmGTHSel59ezZUwGUsmXLKnfv3jVvP3DggAIobm5uSp06dZSIiAjzvp9//lkBlMGDB1sc6+rVq0p8fLzFNqPRqPTp00cBlD179iRr09PafLFH8flgk7Lt5O1nxmYH0+v96X4XWSg+XtEHByt/ffyxEhcdnWWnmfbbGcXng01K9Y+DlYcRsc9+QC53+OpDxeeDTUq1CRuz/fW+4sBVxeeDTUqZcVuUc3fCs/XcOYFcZ2wju/vdmnwtQyPSa9eu5bvvvqN58+a4uLjg4uJCixYt+Oabb1izZs1zJfYi861YsQKACRMmWNS1Fy1alKFDh6b7OEuXLgVgxowZ2CephyxRogTDhw8nPj6e5cuXJ3tckyZNCAoKstg2btw43NzcWLZsmbmkAqBUqVLJHp8vXz569epFWFgYf//9d7rbm5q33nqLmjVrmn/Pnz8/r7/+OlFRUbz33nsWbfD29qZOnTqcPn2a+Ph483Z3d3fy5cuX7Njdu3fHxcWFY8eOJdv31Vdf4evry8iRI5k/fz6zZs0iMDCQKVOmWNX+cePGUaRIEfPvgYGBlCpVisePH/Ppp5/i7Oxs3teuXTu0Wm2y9pQoUSLZDDsqlYqBAwcCsGPHjme2w7wgi9RI510xMdi99hp1PvoIYmKy7DRDG0uJR1L6eNOsHdl/7s41vWnwUhHi4o2MWHXUYio+IfKiDJd2eHh4JNvu7u4upR050PHjxwGoU6dOsn2vvvpquo9z5MgRnJycCAwMTLavYcOGABw9ejTZvrp16ybbli9fPqpUqUJ4eDiXLl0yb7979y4jRoygXLlyODk5oVKpUKlUjBw5EkioTX5eVapUSbataNGiae4zGAzJarrXrVtHUFAQRYoUwc7ODpVKhVqtJjw8nIcPHyY7jqurK8uXLycuLo4hQ4aQL18+VqxYgZ2dVff8WtV+jUaDu7t7sn6Li4tjzpw5BAYG4uLiglqtRqVSUb16dSB9/WxeIlxKO0QWkxIPS+YZc7KxRtpEpVIxvV0lXB21nLwZzoI/LmR/I4TIQaz7BP9P7dq1mThxIsuWLTMvGx4dHc3kyZOpXbt2pjZQPL8nT56gVqspXLhwsn0p/UGUmvDwcLy9vVPcZ0rkwsPD030O0/awsDAAHj58SM2aNbl27RqvvvoqTZo0wc3NDY1Gw9GjR/nll1+IjY1Nd3tT4+LikmybKZlNa1/Sm/Bmz57N+++/T5EiRWjatCnFixfH0dERgM8//zzVG/aqVauGj48Ply5donnz5pQuXTpb2v90e9q3b8/GjRspW7YsnTp1wt3dHa1Wy+PHj5k7d266+jlxiXAbfJqLPKeKtxvv1C/Nwl0XGbf+JIF5eBaP7J6142keLjo+blORISuPsGDnBRqXc6dScTfbNEYIG8tQIv3555/TrFkzihcvTuXKlQE4duwYOp2Obdu2ZWoDxfPLnz8/RqOR+/fvW5QEACnOnJEaFxeXVJeGv3Pnjjnmaamdw7Td1dUVgO+++45r167x8ccfM378eIvYadOm8csvv6S7rVkpPj6ejz/+mKJFi3L06FHc3d3N+xRFSVb6ktSoUaO4dOkShQoVYtWqVfTs2ZMWLVpkV9MB+Pvvv9m4cSNBQUFs3rzZosRj//79zJ07N13HMY2KSR4tssuwJmXYcTqU83cjmLTxFHM7V7V1k2zClqUdJm9U9mLbqTtsPn6bEauOsWlwHXRaWZBN5D0Z+ggMCAjg/PnzTJ06lSpVqlClShWmTZvG+fPnqVChQqY28MmTJwwbNgwfHx8cHR155ZVXLOpkTVOCJf1p1qyZxTEePnxIt27dcHFxwc3Njb59+xIREWERc/z4cerWrYtOp8Pb25sZM2Yka8vq1avx9/dHp9MREBDAli1bMvW5ZpVKlSoBsHfv3mT79u3bl+7jVK1alaioKA4ePJhs365du4CUyw7++uuvZNsiIiI4evQoLi4u5ppk08wSrVu3TtcxbOX+/fuEhYVRu3ZtiyQa4NChQ0RHR6f4uM2bN7NgwQLq16/PoUOHKFCgAL1797bqj5nMYOrnli1bJquTtqafjTIiLbKZg52GWVLigT4bF2RJyyetK1IkvwMX7kYwa9s52zZGCBux+hNQr9dTunRprl69Sr9+/Zg9ezazZ8/m7bffNn+1nZnefvttgoOD+eGHHzhx4gRNmzalSZMm3Lx50xzTrFkzbt++bf5ZuXKlxTG6devGqVOnCA4OZtOmTezevZv+/fub94eHh9O0aVN8fHw4fPgwM2fOZNKkSSxatMgcs2/fPrp06ULfvn05cuQIbdq0oU2bNpw8eTLTn3Nm69KlCwBTpkyxSPLu3LmT7tFHgJ49ewIJU9QlLRW4fv06c+bMwc7Ojm7duiV73I4dO5J9U/Hpp5/y+PFjevTogfq/RMzHxweAPXv2WMSuWLEiR/3R4u7ujqOjI//884/FPQGPHj1i8ODBKT7mzp079O7dmwIFCvDjjz/i6+vLokWLuHv3Lj179kRRsm9O1tT6+dSpU0ydOjXdx0ms05QaaZF9Kv9X4gEwbv1JHkXG2bhF2S/+vxu0NWrbzuVcwNme6e0CAPhu72X2Xbhv0/YIYQtWJ9JarZaYLLw7O6no6GjWrl3LjBkzqFevHn5+fkyaNAk/Pz8WLlxojnNwcMDT09P8U6BAAfO+M2fOsHXrVr799ltq1apFnTp1mD9/Pj/99JP5hirTDWDff/89FSpUoHPnzgwZMoQ5c+aYjzN37lyaNWvGqFGjKFeuHB9//DHVqlVjwYIF2dIXz6Nx48Z07dqVI0eOEBAQwPvvv8/gwYOpXLmyefYKdTpGFbt3707r1q35448/qFSpEqNGjWLAgAFUqVKFe/fuMX369BRn3Xj99ddp1aoVXbt2ZezYsTRq1Ihp06ZRunRpixkrunfvjqurK4MHD6Zjx46MGjWKpk2b0r17d9q2bZt5HfKc1Go1AwYM4MqVK1SuXJkRI0bw9ttvU7FiRdRqNV5eXhbxiqLQo0cP7t27xzfffEPx4sWBhDrlvn37sm3bNovXWlYLDAwkMDCQVatWUa9ePUaPHk3nzp2pWbMmjRs3TvdxDJJICxtJulDLxF/z3iwecfG2rZFOqpG/B10CS6AoMGLVMR5H5b0/bETelqEa6YEDBzJ9+nS+/fZbq2ccsEZ8fDwGg8F8Q6OJo6OjxWjarl27cHd3p0CBAjRq1IhPPvnEvLhFSEgIbm5u1KhRwxzfpEkT1Go1Bw4c4M033yQkJIR69epZ1LUGBQUxffp0Hj16RIECBQgJCWHEiBEW7QgKCmLDhg2ptj82Ntbipi3TjXh6vT7dq8c9D9M59Ho93377LWXLlmXp0qXMnz+f4sWLM3jwYBo1asTGjRvJly+fRZtMI6RPt3PlypXMnz+fH374gfnz52Nvb0/VqlUZOnQorVq1sog3GAwAtGnThl69ejFt2jQ2bNiAk5MTPXr04JNPPrE4r4eHBzt27GDs2LHs2LGD+Ph4qlatypYtW7hx4wbr1q3DYDAka5OiKOnqT1N7UjqGaV98fHyyfabp+ZL+u02ZMgVXV1eWLVvGl19+iYeHB506deKjjz6iSpUqFrFz5swhODiYPn368MYbb1gcf9asWezevZuxY8dSt25dqlZNrPl8+nml1I6ksaZ9qUm6b/369YwbN47t27fz999/4+fnx/Tp0wkKCmLNmjUYjcZn9qlpVAxj8v60haSvd5F9lE8+4fz585QEyKa+VwPT3qxAx28O8uuxWwSVL0LT8um/cfpFFxOXMBWnRpUzXu8fBvmx/+J9Lj+I4sO1x5nXqRKqXDqbj1xnbCO7+92a86iUDHyn/Oabb/L777+TL18+AgICLOathYRpwTLLK6+8gr29PStWrMDDw4OVK1fSs2dP/Pz8OHfuHD/99BNOTk6ULFmSixcvMnbsWPLly0dISAgajYb//e9/LF26lHPnLOu33N3dmTx5Mu+99x5NmzalZMmSfP311+b9p0+fpkKFCpw+fZpy5cphb2/P0qVLzWUSAF9++SWTJ09OtcZ10qRJTJ48Odn2FStWWMznbEvBwcF88cUXvPPOOzRv3tzWzREvkPGHNDzRqxhdKZ5izs+OFyKzbbymZsdNNfm0CmMrG3DO/FXKc6S/7qhYc1lDlUJGepfNGfM4X4uAz05qMCoqupY2UMtdlhAXL66oqCi6du1KWFhYipMoJJWh4WQ3NzfatWuXocZZ64cffqBPnz4UK1YMjUZDtWrV6NKlC4cPHwawWM44ICCASpUqUbp0aXbt2mXV19RZYcyYMRaj2Kbp45o2bfrMf5jMoNfrCQ4O5rXXXuPBgwd4eHhYjBLcvHmToUOHotFoGD16dKpT2wnrJO13rTb3frJPOrYT9Hoa1KtHGY/ki9Nkt7zS7zmNLfu9cbyRNl+GcOFeJPtii/NZ60rZen5bCd13FS6fQ6MiZ73ePS4xe8cFfrluT583auNTMGcMGGUmuc7YRnb3e0pT+abGqkTaaDQyc+ZM/v33X+Li4mjUqBGTJk3KkpsMTUqXLs2ff/5JZGQk4eHhFC1alE6dOqVYiwsJK+MVLlyYCxcu0LhxYzw9PZNN2RYfH8/Dhw/x9PQEwNPTM9mosun3Z8WY9qfEwcEBBweHZNu1Wm22vgG1Wi2zZ89m8+bN1K1bF3d3d65du8amTZt48uQJkyZNSrU/RcZl979zdjPVSDs45Kznmdv7PUcxGFAdO4bb+fNog4Kyvd+1WpjdsQptF+5j04k7vF65GM0qpn5Nzi0MSsKAiEaVs17vAxqV5a+LDzl4+SGj1p5k9Tu1sbPFqjHZICf1e16SXf1uzTmseoV/+umn5tKJYsWKMW/ePPOSwlnN2dmZokWL8ujRI7Zt25biFGkAN27c4MGDB+YFQmrXrs3jx4/NI9gAf/zxB0ajkVq1apljdu/ebVETExwczEsvvWS+cbF27dr8/vvvFucKDg5+YRagadasGSVLlmTz5s3MmTOHTZs2UalSJZYvX87EiRNt3TzxAjLfbJhLayFFOsTEYPfKK9QfNSpLlwhPS2VvN96plzAQMH7DCR7mgVk84m28IEtqNGoVczpWJr/OjiPXHjNfVj0UeYBVibTpxqpt27axYcMGNm7cyPLly803QWWFbdu2sXXrVi5fvkxwcDANGzbE39+f3r17ExERwahRo9i/fz9Xrlzh999/p3Xr1vj5+REUFARAuXLlaNasGf369ePgwYPs3buXQYMG0blzZ/PsCl27dsXe3p6+ffty6tQpfv75Z+bOnWtRljF06FC2bt3K7NmzOXv2LJMmTeLQoUMMGjQoy557ZmrWrBnbt28nNDSUuLg4wsPD2bNnD127drV108QLyqDIrB0iZxjapAxlPfJxPyIuT8zioTeYpr+zcUNSULyAE5+0qQjA/D/Oc/jqQxu3SIisZdXb8Nq1axarsDVp0gSVSmWeRi4rhIWFMXDgQPz9/enRowd16tRh27ZtaLVaNBoNx48f54033qBs2bL07duX6tWr89dff1mUVCxfvhx/f38aN25MixYtqFOnjsUc0a6urmzfvp3Lly9TvXp1Ro4cyYQJEyzmmn7llVdYsWIFixYtonLlyqxZs4YNGzZQsWLFLHvuQuRk5iXCbb0qhMjzTAu1aNQqNh67xdaTt23dpCwVl0MWZElN6yrFaFPFC6MCQ1YeJSxaZrgQuZdVNdLx8fHJpqLTarVZOh1Jx44d6dixY4r7HB0d07UkecGCBVmxYkWaMZUqVXrmqm4dOnSgQ4cOzzyfEHmBlHaInKRScTferV+KL3ZeZPyGkwSWLERBZ/tnP/AFZB6RzsFvvSltKvLPtcdcexjFmHXH+aJrtVw7JZ7I26xKpBVFoVevXhajvTExMbz77rsWU+Bl5vR3Qoicx2hU+C+PltIOkWMMaVyG4NOh/BsawcRfTzG/S9VnP+gFlFNrpJNy0WmZ16Uq7RfuY8uJO6w8eJ2utUrYullCZDqrSjt69uyJu7s7rq6u5p+33noLLy8vi21CiNzNkGT6ebt0rIopRHbIKyUe5tIOGy8R/ixVvN0Y3ewlACZvPMW5O09s3CIhMp9VI9KLFy/OqnYIIV4gprIOAMmjRU6SF0o8XoTSDpO365Ri74UH/PnvPQat+IdfB9XB0V5j62YJkWnkI1AIYbWkibSMSOdhWi2G8eM526lTwqTOOcSQxrl7Fo/4FyiRVqtVzO5YmSL5HTh/N4Ipm3Lfv4fI2+QTUAhhtXgZkRYA9vYYJ0zgXJcuYJ9zRn1ze4mH/r/SDrsX5L1XOJ8Dn3eqgkoFKw9eZ9PxrJvpS4js9oK8DYUQOYlRRqRFDmcq8QAYv+FkrlqoJe4FGpE2edWvMAMb+AEwZu0Jrj2IsnGLhMgc8gkohLCaxYj0C/RhLjKZ0QinTpH/2rWE/89hhjQuw0se+bkfEceEX07aujmZ5kUq7UhqWJMy1PApwJPYeAasOEyM3mDrJgnx3CSRFkJYzZhkVUOZGzYPi45GW7UqjYYMgehoW7cmmaQlHpuO3+a3E7mjxEOfwxdkSY2dRs28LlUp4KTl5M1wPtl82tZNEuK5SSIthLCaaURa5pAWOV1AcVfeq18agI9+yR0lHnE5eInwZ/Fyc+Sz/+qlf9x/jV+O3rR1k4R4Li/g21AIYWsG881OkkiLnG9wY79cVeKhfwEWZElLg5fcGdTwv3rpdSe4cDfCxi0SIuMkkRZCWM20IIssDy5eBLmtxCP+BS3tSGpYk7LULlWIqDgDA5YfJiou3tZNEiJDJJEWQljN8N+NZZoX+ZNc5ClJSzzGbzjJg4hYG7co4/QvcGmHiUatYm6XKhTJ78C/oRGM33ASRcnZKzUKkZIX+G0ohLAVc420jEiLF4ipxONB5Iu9UEvi9HcvduLpnl/H/C5VUatg3T83WXXouq2bJITVJJEWQljNIDcbihdQbinxMJV2vKg10km9XKoQI5u+BMBHv5zixI0wG7dICOtIIi2EsJopkZabDfM4rRbDiBGcb9MmRy0RnpbcUOKhf0HnkU7Ne/VL09jfnbh4I+/+ePiF/DcReZck0kIIq5kSabUk0nmbvT3GadM43atXjloi/FmSlnhMeAFLPHJbIq1Wq5jTqQolCztz83E0Q346Yl50RoicThJpIYTVZERavMiSlnhsPn6bLS9YiYd5QZZc9Anu6qjl6+7VcbLXsPfCA2ZuO2frJgmRLrnobSiEyC6yIIsAEpYFv3IFx9DQHLlEeFoCirsyoMF/C7W8YCUeL/o80qkp65Gfme0rA/D17ktsOn7Lxi0S4tkkkRZCWM0oibSAhCXCy5al6Tvv5Mglwp9lUKMXs8Qjt5V2JNWyUlHeqV8KgNFrjnPuzhMbt0iItEkiLYSwWuKItFxCxIvrRSzxUBQlV5Z2JDWq6UvU8StMVJyBd344RFi03tZNEiJVufRtKITISonT39m4IUI8pxetxMP0RyzkzhFpADuNmnldqlLMzZErD6IY8fNR87dgQuQ08jEohLCaQUakRS4yuFEZ/D3/K/H4JWeXeOiTzGaRWxNpgILO9nzdvToOdmp+P3uXub+ft3WThEiRfAoKIawWL7N2iFzE3k6dWOJx4jabj+fcEg99fOLIbG672fBpFYu58r83AwCY+/t5dpwOtXGLhEhOEmkhhNWMiiwRLnKXisUSSzwm/JJzSzz0SWZHyQt/x7arXpyetX0AGP7zUS7di7Bxi4SwJIm0EMJqMv2dyI1ehBIPU2mHVqMir/wdO65leWr6FuBJbDxvLz1EWJTcfChyDkmkhRBWM/w3KmaXm4s0xbPZ2WF4910uN28Odna2bs1zexFKPEylHdo8dKevvZ2aL7tVp5ibI5fuRzJwxT8WteJC2FLeeScKITKN6TNMnVeGxETKHBwwzpvH8XfeAQcHW7cmU1Qs5spA0ywev5zkfg4r8TCVdmjz2B+xRfI78E2PGjjZa9hz4T4fbzpt6yYJAUgiLYTIAPOItJR2iFxo0H8lHg8j45iYw0o8Eks78t7Hd3kvFz7rVAWAZSFX+WH/Vds2SAgkkRZCZICpRlotiXTepihw7x72YWEJ/59L5OQSD1NpR179Izaogiejgl4CYNKvp9h74b6NWyTyOkmkhRBWM8r0dwIgKgptsWI079kToqJs3ZpMlVNLPBJLO/Lux/eABqV5s2oxDEaFAcv/4fL9SFs3SeRhefedKITIMJm1Q+QFSUs8Jvxy0tbNAUAfL4m0SqViatsAqpZwIyxaT98lf8tMHsJm8u47UQiRYQZJpEUekLTEY8uJO2w6fsvWTUJvMM3akbffezqthq+7V8fLVWeeySNeZvIQNiCJtBDCapJIi7wiaYnHhF9O2bzEIy/fbPg09/w6vulZA0etzOQhbEfeiUIIq8kS4SIvyUklHkkXZBFQwcuVzzpVBmCpzOQhbEASaSGE1YwyIi3yEFOJh10OKPFILO2Qj2+TZhWL8n7TskDCTB47z921cYtEXpLj34lPnjxh2LBh+Pj44OjoyCuvvMLff/9t3q8oChMmTKBo0aI4OjrSpEkTzp8/b3GMhw8f0q1bN1xcXHBzc6Nv375ERERYxBw/fpy6deui0+nw9vZmxowZydqyevVq/P390el0BAQEsGXLlqx50kLkcHKzochrKhZzZUBDP8C2JR6mEWlZVdTSwIZ+tK2WMJPHwOX/cPJmmK2bJPKIHJ9Iv/322wQHB/PDDz9w4sQJmjZtSpMmTbh58yYAM2bMYN68eXz11VccOHAAZ2dngoKCiImJMR+jW7dunDp1iuDgYDZt2sTu3bvp37+/eX94eDhNmzbFx8eHw4cPM3PmTCZNmsSiRYvMMfv27aNLly707duXI0eO0KZNG9q0acPJkznjTm4hspO5RlpWNszb7Owwdu/OtYYNc8US4c8yqKGfzUs8pEY6ZSqVimltK/FK6UJExRnos+Rvbj6OtnWzRB6Qo9+J0dHRrF27lhkzZlCvXj38/PyYNGkSfn5+LFy4EEVR+Pzzzxk/fjytW7emUqVKLFu2jFu3brFhwwYAzpw5w9atW/n222+pVasWderUYf78+fz000/cupXw9dzy5cuJi4vj+++/p0KFCnTu3JkhQ4YwZ84cc1vmzp1Ls2bNGDVqFOXKlePjjz+mWrVqLFiwwBZdI4RNGRTTiHSOvoSIrObggOG77zgydGiuWSI8LTmhxMNU2mEviXQy9nZqvupenZc88nP3SSy9Fx8kLFqmxRNZK0cPIcTHx2MwGNDpdBbbHR0d2bNnD5cvX+bOnTs0adLEvM/V1ZVatWoREhJC586dCQkJwc3NjRo1aphjmjRpglqt5sCBA7z55puEhIRQr1497O3tzTFBQUFMnz6dR48eUaBAAUJCQhgxYoRFO4KCgswJe0piY2OJjU38+i88PBwAvV6PXp/1b27TObLjXCJRXuj3OH08ACqMOeZ55oV+z4nyWr+/5O7Eu/VKsmDXJT7acJIa3i4Uypd9f0TExCX0s1qVkFDnlX5PL0cNfNO9Kh2+PsC/oRG8s+xvvutRHXu7zPnDI6+93nOK7O53a86ToxPp/PnzU7t2bT7++GPKlSuHh4cHK1euJCQkBD8/P+7cuQOAh4eHxeM8PDzM++7cuYO7u7vFfjs7OwoWLGgRU7JkyWTHMO0rUKAAd+7cSfM8KZk6dSqTJ09Otn379u04OTmlpwsyRXBwcLadSyTKzf1+8YoaUHPl8mW2bLlo6+ZYyM39nuMoCprYWDRA8PbtkEdKfUoaoZiThptRet75Zie9yxqz7akfv6UCNNy/Gwqu8npPTY+SMO+khv2XH9Hri+1088vcfyPpd9vIrn6PsmKl1hydSAP88MMP9OnTh2LFiqHRaKhWrRpdunTh8OHDtm7aM40ZM8ZiFDs8PBxvb2+aNm2Ki4tLlp9fr9cTHBzMa6+9hlarzfLziQR5od8PbT4Lt69RtkxpWjQpY+vmAHmj33OcyEi0BQoAEHX3Llo3N9u2Jxv5VQ+n3VcHOPZQDSWq0CLAM1vOe333Zbh6nhLFvYAb8npPQ7kq9+n34xH+vq8msKIfwxr7Pfcx5TpjG9nd76YKgvTI8Yl06dKl+fPPP4mMjCQ8PJyiRYvSqVMnSpUqhadnwoUrNDSUokWLmh8TGhpKlSpVAPD09OTuXcupcOLj43n48KH58Z6enoSGhlrEmH5/Voxpf0ocHBxwSKFuUKvVZusbMLvPJxLk5n5X/vuvvZ1djnuOubnfc5wk/ZzX+r1yiUIMbOjH3N/PM3nTGeqUdadwNpR4GEkYVrX/7+bOvNbv1mhUvij/e1PPB2tP8MWuS/gUykfHmt6Zcmzpd9vIrn635hwvzN0Kzs7OFC1alEePHrFt2zZat25NyZIl8fT05PfffzfHhYeHc+DAAWrXrg1A7dq1efz4scUI9h9//IHRaKRWrVrmmN27d1vUxAQHB/PSSy9R4L/Rltq1a1ucxxRjOo8QeYlpJV6Z/k7kZQMb+lGuqAuPovR8tOEkiqI8+0HPyTRrh71Mf5cunWqWYHCjhJHoMetP8Oe/92zcIpHb5PhEetu2bWzdupXLly8THBxMw4YN8ff3p3fv3qhUKoYNG8Ynn3zCr7/+yokTJ+jRowdeXl60adMGgHLlytGsWTP69evHwYMH2bt3L4MGDaJz5854eXkB0LVrV+zt7enbty+nTp3i559/Zu7cuRZlGUOHDmXr1q3Mnj2bs2fPMmnSJA4dOsSgQYNs0S1C2JTBmPBhLom0yMsSZvGohJ1axW8n77Dp+O0sP6csyGK9Ea+VpW3VhDmmB/x4WOaYFpkqx78Tw8LCGDhwIP7+/vTo0YM6deqwbds287D76NGjGTx4MP3796dmzZpERESwdetWi5k+li9fjr+/P40bN6ZFixbUqVPHYo5oV1dXtm/fzuXLl6levTojR45kwoQJFnNNv/LKK6xYsYJFixZRuXJl1qxZw4YNG6hYsWL2dYYQOYQsyCJEggpergw0L9RykntPsnahFlmQxXoqlYpp7RLmmI6MM9Br8UGu3I+0dbNELpHja6Q7duxIx44dU92vUqmYMmUKU6ZMSTWmYMGCrFixIs3zVKpUib/++ivNmA4dOtChQ4e0GyxEHmBaItxOEmkhGNjQj+2nQzlzO5whK4+wtE9gpk239jSLBVnis+QUuZJpjunOX+/n9O1wun9/gLXvvoK7i+7ZDxYiDTl+RFoIkfPIiLQQiezt1HzWqTLO9hpCLj1g1Jpj5j82M5uUdmSci07L0j6B+BRy4vrDaHp8Lwu2iOcn70QhhNWMiiTSAtBoMLZty81XXgGNxtatsSl/TxcWvlUdO7WKX47eYvrWs1lynsQRaXnvZUSR/A780KcWRfI7cPbOE/otPUSM3mDrZokXmCTSQgirxRskkRaATofhp584NHo06OQr8nplizC9XSUAvt59idFrjmX6iKdFaYfIkBKFnFjWJ5D8OjsOXnnIoBX/EG+aikgIK8k7UQhhNYPUSAuRonbVizO2hT8Aqw7d4LU5f7LtVOor4For3lzaIe+951GuqAvf9ayJg52aHWfu8sHaE9kyfaHIfSSRFkJYzfDfB446jywJLYQ1+tcrzap3alOqsDN3n8Tyzg+HGbj8n0yZ0SNORqQzTWDJgnzRtRoatYq1/9xg6m9ZU44jcjd5JwohrGYekZZRsbwtMhKtvT2t27SBSJlOLKnAkgXZMrQuAxqURqNWsfnEbZrM+ZO1h28818inefo7+TYoUzQp72Eux1m0+xJf/3nRxi0SLxpJpIUQVjN9vSwj0kKkTqfVMLqZP78MfJXyRV0Ii9YzcvUxei7+mxuPojJ0TKmRznztk5TjTP3tLKv+vm7jFokXibwThRBWM5V22KnlEiLEs1Qs5sovg15lVNBL2Nup2f3vPZp+tpvFey+bv91JL73USGeJ/vVK8079UgB8uO44m7NhlUqRO8inoBDCagaZR1oIq2g1agY29GPLkLrU8ClAVJyByRtP0/qLPRy59ijdx5ER6azzYTN/Otf0xqjA0J+O8MfZUFs3SbwA5J0ohLCaJNJCZIyfez5WvVObj9tUJL/OjpM3w2m7cB9j15/gcVTcMx8v80hnHZVKxadvBvBGZS/ijQrv/vgP+y7ct3WzRA4nibQQwmoy/Z0QGadWq+j+sg9/jGxA22rFUBRYceAajWb/yepD19NcFTFeVjbMUhq1itkdK/NaeQ/i4o28vewQh6+m/xsDkffIO1EIYTVZIlyI51ckvwNzOlbhp/4vU8Y9Hw8j4xi15jidFoVw9k54io+R6e+ynlajZkHXqtQtU5ioOAO9Fh/k5M0wWzdL5FDyThRCWM0oibSAhCXCmzfnTvXqeX6J8OfxcqlCbBlalzHN/XHUavj7yiNaztvDJ5tO8yTGcmVE8/R3UtqRpRzsNHzdvTo1fQvwJCaeHt8f5PJ9meJRJCeJtBDCavHGhA9zSaTzOJ0Owy+/cOCjj2SJ8Oek1ah5p35pfh9Zn+YVPTEYFb7dc5mGs/5k1d+J5R6m0g57GZHOck72dnzfqyYBxVx5GBnHDyFXbd0kkQPJO1EIYTW52VCIrOHl5sjCt6qzuHdNShZ25n5ELKPXHqf1F3s5dOWh3GyYzfLrtLSqXBQgXTeDirzHztYNEEK8eEzzSEsiLUTWaPiSO6+WLszSfVeY9/t5TtwMo/1XIeb9Mod79nGyT0iVIuPibdwSkRPJO1EIYTWDQWbtEEBkJHZubrTs1EmWCM8C9nZq+tUrxc5RDegS6E3ShUS1dvLeyy7ODgn1/1FxBhu3ROREMiIthLCaaURalggXqqgo7AD9MyNFRhXO58DUtpXoVsuH6VvPYjAqeLk6csLWDcsjHLUJqZIk0iIlkkgLIaxmnkda6jSFyDYVi7nyQ99aAOj18qdLdjGNSEfGSmmHSE5KO4QQVouXBVmEEHmEqUZaRqRFSiSRFkJYzTQiLaUdQojczsleaqRF6iSRFkJYLXGJcLmECCFyN2fziLSUdojk5FNQCGE1U2mH5NFCiNzOKcmsHaaFcYQwkZsNhRBWM8qItABQqzHWq8fDBw9wldeCyKVMpR0AMfFS3iEsSSIthLBavKxsKAAcHTHs2MHeLVto4eho69YIkSV0dhpUKlAUqZMWyckQghDCKkm/2pREWgiR26nVKpy0/02BJ4m0eIok0kIIq8RLIi2EyGMc/7vhMFoSafEUKe0QQljFIIm0MImMxM7Xl2ZxcXD1Kri52bpFQmQJZwcN9yOktEMkJ4m0EMIqpuXBQRZkEaC6fx8HZIlwkbuZFmWJlCnwxFOktEMIYRWDQUakhRB5i2nmDintEE+TRFoIYZV4o9H8/xpZ2VAIkQfI6oYiNZJICyGsYirtUKkS7mYXQojcztlc2iGJtLAkibQQwiqJy4NLEi2EyBuktEOkRhJpIYRVTIm0Wso6hBB5ROIy4XKzobAks3YIIawiI9LCTK3GWL06YWFh5JMlwkUuZpq1Q2qkxdNy9JXPYDDw0UcfUbJkSRwdHSldujQff/wxSpLpt3r16oVKpbL4adasmcVxHj58SLdu3XBxccHNzY2+ffsSERFhEXP8+HHq1q2LTqfD29ubGTNmJGvP6tWr8ff3R6fTERAQwJYtW7LmiQuRg5kWZJH6aIGjI4aQEHbPmgWyRLjIxeRmQ5GaHJ1IT58+nYULF7JgwQLOnDnD9OnTmTFjBvPnz7eIa9asGbdv3zb/rFy50mJ/t27dOHXqFMHBwWzatIndu3fTv39/8/7w8HCaNm2Kj48Phw8fZubMmUyaNIlFixaZY/bt20eXLl3o27cvR44coU2bNrRp04aTJ09mbScIkcMYZURaCJHHOMuItEhFji7t2LdvH61bt6Zly5YA+Pr6snLlSg4ePGgR5+DggKenZ4rHOHPmDFu3buXvv/+mRo0aAMyfP58WLVowa9YsvLy8WL58OXFxcXz//ffY29tToUIFjh49ypw5c8wJ99y5c2nWrBmjRo0C4OOPPyY4OJgFCxbw1VdfZVUXCJHjmEakNfJVvhAij3BMOiLtZOPGiBwlRyfSr7zyCosWLeLff/+lbNmyHDt2jD179jBnzhyLuF27duHu7k6BAgVo1KgRn3zyCYUKFQIgJCQENzc3cxIN0KRJE9RqNQcOHODNN98kJCSEevXqYW9vb44JCgpi+vTpPHr0iAIFChASEsKIESMszhsUFMSGDRtSbX9sbCyxsbHm38PDwwHQ6/Xo9Vm/DpjpHNlxLpEot/d7bFzC89KoctZzzO39niNFRaGpVInXoqPRnz4Nrq62blGeIa/37KVLyKOJjJV+t4Xsfr1bc54cnUh/+OGHhIeH4+/vj0ajwWAw8Omnn9KtWzdzTLNmzWjbti0lS5bk4sWLjB07lubNmxMSEoJGo+HOnTu4u7tbHNfOzo6CBQty584dAO7cuUPJkiUtYjw8PMz7ChQowJ07d8zbksaYjpGSqVOnMnny5GTbt2/fjpNT9v1JGxwcnG3nEolya79fjQCwIy42JkfeJ5Bb+z0n0sTE8Pq1azgBm37/HYNOZ+sm5Tnyes8eZx6qAA237j4ED+l3W8mufo+Kikp3bI5OpFetWsXy5ctZsWKFudxi2LBheHl50bNnTwA6d+5sjg8ICKBSpUqULl2aXbt20bhxY1s1HYAxY8ZYjGKHh4fj7e1N06ZNcXFxyfLz6/V6goODee2119BqtVl+PpEgt/f7kWuP4cRB8jk70aJFXVs3xyy393uOFBlp/t9GjRqhdXOzXVvyGHm9Zy+XCw/47txhHJzzAWHS79ksu1/vpgqC9MjRifSoUaP48MMPzclyQEAAV69eZerUqeZE+mmlSpWicOHCXLhwgcaNG+Pp6cndu3ctYuLj43n48KG5rtrT05PQ0FCLGNPvz4pJrTYbEmq3HRwckm3XarXZ+gbM7vOJBLm131WahO847TTqHPn8cmu/50hJ+ln63Tak37OHi1PCZ3lUnBGQfreV7Op3a86Ro+8WioqK+n979x4VVbn+Afw7MzBcRcALMCagKYiIVF4ILa0kQa2w08kwjkKH5aWkyyo9aqmg5jEt73Z02dLSdbyfU9ZKMkfMTBwgKfCGSh41TC4/QUJEucy8vz9sduwYUxBmj8z3s9asxez9zvu++/Fl8/jOu/eG+g8XNGk0GphMplt+5uLFiygrK4Ofnx8AIDIyEhUVFcjJyZHK7N+/HyaTCREREVKZgwcPytbE6PV6BAcHw8vLSyqTnp4ua0uv1yMyMvLuDpLoHlNvNF9syLt2EJF9cHPi7e/IMptOpJ9++mksWLAAu3fvxvnz5/HZZ59h6dKlePbZZwEAVVVVmDZtGjIzM3H+/Hmkp6cjNjYWPXr0QHR0NAAgJCQEMTExmDBhArKzs5GRkYHk5GTExcVBp9MBAF588UVotVokJSXhxIkT2L59O1asWCFblvH6669jz549WLJkCU6dOoXU1FQcOXIEycnJ1g8MkYLMD2TR8MmGRGQnXB1vfoF/vY6JNMnZ9NKOVatWYfbs2XjllVdQWloKnU6HSZMmYc6cOQBuzk4fPXoUGzduREVFBXQ6HYYPH4758+fLllRs3rwZycnJGDZsGNRqNZ577jmsXLlS2t++fXvs3bsXU6ZMQb9+/dCxY0fMmTNHdq/pQYMGYcuWLZg1axbefvtt9OzZE7t27UKfPn2sFxAiG2AUnJEmIvvi2mBG2iRuU5jsik0n0u3atcPy5cuxfPlyi/tdXFzw9ddf37Yeb29vbNmy5U/L9O3bF999992flnn++efx/PPP37Y9orbM+NvSKgcNE2m7p1JBhITgalUVXPgNBbVh5geyAEDdrVeXkh2y6aUdRGR7zGuk1UycyNUV9Xl5+GbVKsCKt/QksjZnRzXMp7waru6gBphIE1GTmAQfEU5E9kWlUsHV8ebyjlrOSFMDTKSJqEl+f0Q4E2kish+uTjeXd3BGmhqy6TXSRGR7jEykyay6Gg79++Pxqirgscf4iHBq01y1nJGmxphIE1GTMJEmiRBQ5efDA0Cd4K0MqG1z1ZpnpHnuo99xaQcRNQmXdhCRPXL7bUaaSzuoISbSRNQkJhMvNiQi++PCpR1kARNpImoSzkgTkT1y0/JiQ2qMiTQRNQnXSBORPTI/3ZCJNDXERJqImuT3RJqnDyKyH7/ftYOTCPQ73rWDiJrEyDXSZKZSQQQE4Hp1NRz5pEtq47i0gyzhlBIRNYlR8BHh9BtXV9QXFED/0Ud8RDi1ebzYkCxhIk1ETcIZaSKyR5yRJkuYSBNRk9Qbf5uRZiJNRHaEFxuSJVwjTURNYl7awRlpwvXr0Dz6KIb8+ivw+OOAo6PSPSJqNXxEOFnCRJqImsRouvlXhLe/I5hMUOfkwAtAnYnZBbVtfEQ4WcKlHUTUJHwgCxHZI2mNNP/PSA0wkSaiJuEjwonIHkl37eAaaWqAiTQRNQlnpInIHrmZLzbkjDQ1wESaiJrExESaiOyQeWkHZ6SpISbSRNQknJEmInvk0uAR4eYJBSLetYOImsT8QBYNn2xIAETHjqitreWsDLV55hlpALheZ4STk4KdIZvBcx8RNYmUSGuYSNs9NzfUX7qEPZs2AW5uSveGqFU5O6phnj+o5voO+g0TaSJqEj4inIjskUqlgqvjzeUd1XVMpOkmJtJE1CTmNdJqLu0gIjtjfrphNZ8TTr/hGmkiahI+Ipwk169DExODwWVlfEQ42YWbTzesRXVtvdJdIRvBRJqImsRoNK+R5hdads9kgvrgQXQEHxFO9sF85w4u7SAz/iUkoiYxz0jzrh1EZG/cuLSD/oAz0m3YoZ/KkFemguZECRwcNEp3x27U1xvbdNyLf70BgEs7iMj+mNdIZ5+/0ibP77aqvt6Ik1dUGKl0RyxgIt2GLUg7hZ/+T4MNZ/KU7oodavtx1zrwCy0isi/uTjfTpk2ZP2NT5s8K98a+eGrVmKp0JyxgIt2G9fbzgPFGFby9vKDi1/BWI4RA+ZUrbTrundo5YWhQJ6W7QURkVeMe9sdPhUXw8PRus+d3WySEQF1VudLdsIiJdBu25PkwpKUVYuTIgXDk1fRWU1dXh7S0NMadiKiNGRDoheRQE8/vVmb+u2qLmEgTEVGzCVdXGI288IqI7BMXORIRUfO4uaG+ogK7t2/nI8KJyC4xkSYiIiIiagabTqSNRiNmz56Nbt26wcXFBffffz/mz58P8dt9bIGbC9DnzJkDPz8/uLi4ICoqCgUFBbJ6ysvLER8fDw8PD3h6eiIpKQlVVVWyMkePHsWjjz4KZ2dndO3aFYsXL27Un507d6JXr15wdnZGWFiYza7XISIiIqLWZ9OJ9KJFi7BmzRqsXr0a+fn5WLRoERYvXoxVq1ZJZRYvXoyVK1di7dq1yMrKgpubG6Kjo3Hjxg2pTHx8PE6cOAG9Xo8vv/wSBw8exMSJE6X9lZWVGD58OAICApCTk4P3338fqampWLdunVTm8OHDGDt2LJKSkvDjjz9i9OjRGD16NI4fP26dYBAR2ZobN6CJjUXE/PlAg3MuEZG9sOmLDQ8fPozY2FiMGjUKABAYGIitW7ciOzsbwM3Z6OXLl2PWrFmIjY0FAGzatAk+Pj7YtWsX4uLikJ+fjz179uD7779H//79AQCrVq3CyJEj8cEHH0Cn02Hz5s2ora3Fhg0boNVqERoaitzcXCxdulRKuFesWIGYmBhMmzYNADB//nzo9XqsXr0aa9eutXZoiIiUZzRC/dVX8AVQxwsOicgO2XQiPWjQIKxbtw5nzpxBUFAQ8vLycOjQISxduhQAcO7cORQXFyMqKkr6TPv27REREQGDwYC4uDgYDAZ4enpKSTQAREVFQa1WIysrC88++ywMBgOGDBkCrVYrlYmOjsaiRYtw5coVeHl5wWAw4M0335T1Lzo6Grt27bpl/2tqalBTUyO9r6ysBHDzNi51dXV3FZs7YW7DGm3R7xh3ZTDuCqirg6P0Yx3A2FsNx7syGHdlWDvuTWnHphPpGTNmoLKyEr169YJGo4HRaMSCBQsQHx8PACguLgYA+Pj4yD7n4+Mj7SsuLkbnzp1l+x0cHODt7S0r061bt0Z1mPd5eXmhuLj4T9uxZOHChZg7d26j7Xv37oWrq+ttj7+l6PV6q7VFv2PclcG4W4/mxg089dvP+/fvh9HZWdH+2COOd2Uw7sqwVtyrq6vvuKxNJ9I7duzA5s2bsWXLFmm5xRtvvAGdToeEhASlu3dbM2fOlM1iV1ZWomvXrhg+fDg8PDxavf26ujro9Xo8+eSTvHG8FTHuymDcFXDtmvTjE088AUdPT+X6Ymc43pXBuCvD2nE3ryC4EzadSE+bNg0zZsxAXFwcACAsLAwXLlzAwoULkZCQAF9fXwBASUkJ/Pz8pM+VlJTggQceAAD4+vqitLRUVm99fT3Ky8ulz/v6+qKkpERWxvz+dmXM+y1xcnKCk5NTo+2Ojo5W/QW0dnt0E+OuDMbdihrEmXFXBuOuDMZdGdaKe1PasOm7dlRXV0OtlndRo9HAZDIBALp16wZfX1+kp6dL+ysrK5GVlYXIyEgAQGRkJCoqKpCTkyOV2b9/P0wmEyIiIqQyBw8elK2J0ev1CA4OhpeXl1SmYTvmMuZ2iIiIiMi+2PSM9NNPP40FCxbA398foaGh+PHHH7F06VL8/e9/BwCoVCq88cYbePfdd9GzZ09069YNs2fPhk6nw+jRowEAISEhiImJwYQJE7B27VrU1dUhOTkZcXFx0Ol0AIAXX3wRc+fORVJSEqZPn47jx49jxYoVWLZsmdSX119/HUOHDsWSJUswatQobNu2DUeOHJHdIu92zPe/bspXBnejrq4O1dXVqKys5P+crYhxVwbjroAGSzvqKivhqLbpuZk2heNdGYy7Mqwdd3Oe1vC5JbckbFhlZaV4/fXXhb+/v3B2dhbdu3cX77zzjqipqZHKmEwmMXv2bOHj4yOcnJzEsGHDxOnTp2X1lJWVibFjxwp3d3fh4eEhXnrpJXH16lVZmby8PPHII48IJycn0aVLF/Hee+816s+OHTtEUFCQ0Gq1IjQ0VOzevbtJx1NYWCgA8MUXX3zxxRdffPFl46/CwsLb5nYqIe4k3aaWYDKZcOnSJbRr1w4qlarV2zNf3FhYWGiVixvpJsZdGYy7Mhh3ZTDuymDclWHtuAshcPXqVeh0ukZLjP/Ippd2tDVqtRr33Xef1dv18PDgL7wCGHdlMO7KYNyVwbgrg3FXhjXj3r59+zsqxwVtRERERETNwESaiIiIiKgZmEi3YU5OTkhJSbF4L2tqPYy7Mhh3ZTDuymDclcG4K8OW486LDYmIiIiImoEz0kREREREzcBEmoiIiIioGZhIExERERE1AxNpIiIiIqJmYCJtwz788EMEBgbC2dkZERERyM7O/tPyO3fuRK9eveDs7IywsDCkpaVJ++rq6jB9+nSEhYXBzc0NOp0O48ePx6VLl2R1BAYGQqVSyV7vvfdeqxyfrWrJuANAamoqevXqBTc3N3h5eSEqKgpZWVmyMuXl5YiPj4eHhwc8PT2RlJSEqqqqFj82W6ZE3DneWz7uDU2ePBkqlQrLly+Xbed4VybuHO8tH/fExMRGMY2JiZGV4XhXJu5WG++3fYg4KWLbtm1Cq9WKDRs2iBMnTogJEyYIT09PUVJSYrF8RkaG0Gg0YvHixeLkyZNi1qxZwtHRURw7dkwIIURFRYWIiooS27dvF6dOnRIGg0EMHDhQ9OvXT1ZPQECAmDdvnigqKpJeVVVVrX68tqKl4y6EEJs3bxZ6vV6cPXtWHD9+XCQlJQkPDw9RWloqlYmJiRHh4eEiMzNTfPfdd6JHjx5i7NixrX68tkKpuHO8t3zczT799FMRHh4udDqdWLZsmWwfx7syced4b/m4JyQkiJiYGFlMy8vLZfVwvCsTd2uNdybSNmrgwIFiypQp0nuj0Sh0Op1YuHChxfJjxowRo0aNkm2LiIgQkyZNumUb2dnZAoC4cOGCtC0gIKDRydeeWCPuv/76qwAg9u3bJ4QQ4uTJkwKA+P7776UyX331lVCpVOKXX365m8O5ZygRdyE43lsr7hcvXhRdunQRx48fbxRjjndl4i4Ex3trxD0hIUHExsbesk2Od2XiLoT1xjuXdtig2tpa5OTkICoqStqmVqsRFRUFg8Fg8TMGg0FWHgCio6NvWR4Afv31V6hUKnh6esq2v/fee+jQoQMefPBBvP/++6ivr2/+wdxDrBH32tparFu3Du3bt0d4eLhUh6enJ/r37y+Vi4qKglqtbrQUoS1SKu5mHO8tG3eTyYRx48Zh2rRpCA0NtVgHx7v1427G8d7y55kDBw6gc+fOCA4Oxssvv4yysjJZHRzv1o+7mTXGu0OL10h37fLlyzAajfDx8ZFt9/HxwalTpyx+pri42GL54uJii+Vv3LiB6dOnY+zYsfDw8JC2v/baa3jooYfg7e2Nw4cPY+bMmSgqKsLSpUvv8qhsX2vG/csvv0RcXByqq6vh5+cHvV6Pjh07SnV07txZVt7BwQHe3t63/PdrS5SKO8Dx3hpxX7RoERwcHPDaa6/dsg6Od+vHHeB4b424x8TE4C9/+Qu6deuGs2fP4u2338aIESNgMBig0Wg43hWKO2C98c5E2g7V1dVhzJgxEEJgzZo1sn1vvvmm9HPfvn2h1WoxadIkLFy40CYfzXmvePzxx5Gbm4vLly/jo48+wpgxY5CVldXoBEst63Zx53hvWTk5OVixYgV++OEHqFQqpbtjN+407hzvLS8uLk76OSwsDH379sX999+PAwcOYNiwYQr2rG27k7hba7xzaYcN6tixIzQaDUpKSmTbS0pK4Ovra/Ezvr6+d1TenERfuHABer1eNhttSUREBOrr63H+/PmmH8g9pjXj7ubmhh49euDhhx/G+vXr4eDggPXr10t1lJaWysrX19ejvLz8lu22JUrF3RKO97uL+3fffYfS0lL4+/vDwcEBDg4OuHDhAt566y0EBgZKdXC8Wz/ulnC8t8x5pqHu3bujY8eO+Omnn6Q6ON6tH3dLWmu8M5G2QVqtFv369UN6erq0zWQyIT09HZGRkRY/ExkZKSsPAHq9XlbenEQXFBRg37596NChw237kpubC7VabRczp60Vd0tMJhNqamqkOioqKpCTkyPt379/P0wmEyIiIpp7OPcMpeJuCcf73cV93LhxOHr0KHJzc6WXTqfDtGnT8PXXX0t1cLxbP+6WcLy3/Hnm4sWLKCsrg5+fn1QHx7v1425Jq433Vr+ckZpl27ZtwsnJSXzyySfi5MmTYuLEicLT01MUFxcLIYQYN26cmDFjhlQ+IyNDODg4iA8++EDk5+eLlJQU2e1iamtrxTPPPCPuu+8+kZubK7sdTE1NjRBCiMOHD4tly5aJ3NxccfbsWfHvf/9bdOrUSYwfP976AVBIS8e9qqpKzJw5UxgMBnH+/Hlx5MgR8dJLLwknJydx/PhxqZ6YmBjx4IMPiqysLHHo0CHRs2dPu7s9krXjzvHe8nG3xNKV8xzv1o87x3vLx/3q1ati6tSpwmAwiHPnzol9+/aJhx56SPTs2VPcuHFDqofj3fpxt+Z4ZyJtw1atWiX8/f2FVqsVAwcOFJmZmdK+oUOHioSEBFn5HTt2iKCgIKHVakVoaKjYvXu3tO/cuXMCgMXXN998I4QQIicnR0RERIj27dsLZ2dnERISIv75z3/KTgj2oCXjfv36dfHss88KnU4ntFqt8PPzE88884zIzs6W1VFWVibGjh0r3N3dhYeHh3jppZfE1atXW/U4bY21487xflNLxt0SS4k0x7v1487xflNLxr26uloMHz5cdOrUSTg6OoqAgAAxYcIEKUE043i3ftytOd5VQgjRsnPcRERERERtH9dIExERERE1AxNpIiIiIqJmYCJNRERERNQMTKSJiIiIiJqBiTQRERERUTMwkSYiIiIiagYm0kREREREzcBEmoiIiIioGZhIExHdAwIDA7F8+XKlu2F1qampeOCBB/60zPnz56FSqZCbm2uVPhERmTGRJiK6S4mJiVCpVFCpVNBqtejRowfmzZuH+vp6pbt2z5s6dSrS09Ol94mJiRg9erSsTNeuXVFUVIQ+ffpYuXdEZO8clO4AEVFbEBMTg48//hg1NTVIS0vDlClT4OjoiJkzZyrdtXuau7s73N3d/7SMRqOBr6+vlXpERPQ7zkgTEbUAJycn+Pr6IiAgAC+//DKioqLwxRdfAACuXLmC8ePHw8vLC66urhgxYgQKCgpkn//vf/+L0NBQODk5ITAwEEuWLGlyHzZs2CDV4efnh+TkZGnfzz//jNjYWLi7u8PDwwNjxoxBSUmJtN+8hGLDhg3w9/eHu7s7XnnlFRiNRixevBi+vr7o3LkzFixYIGtTpVJhzZo1GDFiBFxcXNC9e3f85z//kZU5duwYnnjiCbi4uKBDhw6YOHEiqqqqpP0HDhzAwIED4ebmBk9PTwwePBgXLlyQ9cv888aNG/H5559L3wAcOHDA4tKOb7/9FgMHDpRiMWPGDNk3BI899hhee+01/OMf/4C3tzd8fX2Rmpr6p/E1z4bPnTsXnTp1goeHByZPnoza2to7+vchoraHiTQRUStwcXGREqzExEQcOXIEX3zxBQwGA4QQGDlyJOrq6gAAOTk5GDNmDOLi4nDs2DGkpqZi9uzZ+OSTT+64vTVr1mDKlCmYOHEijh07hi+++AI9evQAAJhMJsTGxqK8vBzffvst9Ho9/ve//+GFF16Q1XH27Fl89dVX2LNnD7Zu3Yr169dj1KhRuHjxIr799lssWrQIs2bNQlZWluxzs2fPxnPPPYe8vDzEx8cjLi4O+fn5AIBr164hOjoaXl5e+P7777Fz507s27dPSvLr6+sxevRoDB06FEePHoXBYMDEiROhUqkaHePUqVMxZswYxMTEoKioCEVFRRg0aFCjcr/88gtGjhyJAQMGIC8vD2vWrMH69evx7rvvyspt3LgRbm5uyMrKwuLFizFv3jzo9fo/jXN6ejry8/Nx4MABbN26FZ9++inmzp17m38dImqzBBER3ZWEhAQRGxsrhBDCZDIJvV4vnJycxNSpU8WZM2cEAJGRkSGVv3z5snBxcRE7duwQQgjx4osviieffFJW57Rp00Tv3r2l9wEBAWLZsmW37INOpxPvvPOOxX179+4VGo1G/Pzzz9K2EydOCAAiOztbCCFESkqKcHV1FZWVlVKZ6OhoERgYKIxGo7QtODhYLFy4UHoPQEyePFnWXkREhHj55ZeFEEKsW7dOeHl5iaqqKmn/7t27hVqtFsXFxaKsrEwAEAcOHLDY95SUFBEeHi69bxhrs3PnzgkA4scffxRCCPH222+L4OBgYTKZpDIffvihcHd3l45l6NCh4pFHHpHVM2DAADF9+nSL/TC37e3tLa5duyZtW7NmjaxeIrIvnJEmImoBX375Jdzd3eHs7IwRI0bghRdeQGpqKvLz8+Hg4ICIiAipbIcOHRAcHCzN2ubn52Pw4MGy+gYPHoyCggIYjcbbtl1aWopLly5h2LBhFvfn5+eja9eu6Nq1q7Std+/e8PT0lPoA3LwzSLt27aT3Pj4+6N27N9RqtWxbaWmprP7IyMhG7xseW3h4ONzc3GTHZjKZcPr0aXh7eyMxMRHR0dF4+umnsWLFChQVFd32mP9Mfn4+IiMjZbPagwcPRlVVFS5evCht69u3r+xzfn5+jY7tj8LDw+Hq6io71qqqKhQWFt5Vn4no3sREmoioBTz++OPIzc1FQUEBrl+/Li0bsAYXF5cWqcfR0VH2XqVSWdxmMplapD2zjz/+GAaDAYMGDcL27dsRFBSEzMzMFm3DEmscGxG1bUykiYhagJubG3r06AF/f384OPx+Q6SQkBDU19fL1hWXlZXh9OnT6N27t1QmIyNDVl9GRgaCgoKg0Whu23a7du0QGBgou01cQyEhISgsLJTNmp48eRIVFRVSH+7GH5PezMxMhISESG3n5eXh2rVr0v6MjAyo1WoEBwdL2x588EHMnDkThw8fRp8+fbBlyxaLbWm12tvO0oeEhEhr0Ru22a5dO9x3331NPr6G8vLycP36del9ZmYm3N3dZbP9RGQ/mEgTEbWinj17IjY2FhMmTMChQ4eQl5eHv/3tb+jSpQtiY2MBAG+99RbS09Mxf/58nDlzBhs3bsTq1asxderUO24nNTUVS5YswcqVK1FQUIAffvgBq1atAgBERUUhLCwM8fHx+OGHH5CdnY3x48dj6NCh6N+//10f486dO7FhwwacOXMGKSkpyM7Oli4mjI+Ph7OzMxISEnD8+HF88803ePXVVzFu3Dj4+Pjg3LlzmDlzJgwGAy5cuIC9e/eioKBASsT/KDAwEEePHsXp06dx+fJl6YLNhl555RUUFhbi1VdfxalTp/D5558jJSUFb775pmyZSnPU1tYiKSkJJ0+eRFpaGlJSUpCcnHzX9RLRvYm/+URErezjjz9Gv3798NRTTyEyMhJCCKSlpUlLCx566CHs2LED27ZtQ58+fTBnzhzMmzcPiYmJd9xGQkICli9fjn/9618IDQ3FU089Jd1iT6VS4fPPP4eXlxeGDBmCqKgodO/eHdu3b2+R45s7dy62bduGvn37YtOmTdi6das00+3q6oqvv/4a5eXlGDBgAP76179i2LBhWL16tbT/1KlTeO655xAUFISJEydiypQpmDRpksW2JkyYgODgYPTv3x+dOnVqNJMPAF26dEFaWhqys7MRHh6OyZMnIykpCbNmzbrrYx02bBh69uyJIUOG4IUXXsAzzzxz29vmEVHbpRINv/siIiJqApVKhc8++6zR0wbbosTERFRUVGDXrl1Kd4WIbARnpImIiIiImoGJNBERERFRM3BpBxERERFRM3BGmoiIiIioGZhIExERERE1AxNpIiIiIqJmYCJNRERERNQMTKSJiIiIiJqBiTQRERERUTMwkSYiIiIiagYm0kREREREzfD/gnHJp3DWGCgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m_global = milk_pooling_bilinear()\n", "\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "ax.plot(p_plot, f_plot)\n", "ax.set_title(\"Milk Pooling\")\n", "ax.set_xlabel(\"Pool composition p\")\n", "ax.set_ylabel(\"Profit\")\n", "ax.grid(True)\n", "\n", "ax.plot(p, m_convex_profit, \"ro\", ms=10)\n", "ax.axhline(m_convex_profit, color=\"r\", linestyle=\"--\")\n", "ax.axvline(p, color=\"r\", linestyle=\"--\")\n", "ax.annotate(\n", " \"convex approximation\",\n", " xy=(p, m_convex_profit),\n", " xytext=(0.036, 106000),\n", " ha=\"right\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")\n", "\n", "ax.plot(p, m_est_profit, \"go\", ms=10)\n", "ax.axhline(m_est_profit, color=\"g\", linestyle=\"--\")\n", "ax.annotate(\n", " \"local maxima\",\n", " xy=(p, m_est_profit),\n", " xytext=(0.045, 105000),\n", " ha=\"left\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")\n", "\n", "m_global_p = m_global.var[\"p\"].value()\n", "m_global_profit = m_global.obj[\"profit\"].value()\n", "\n", "ax.plot(m_global_p, m_global_profit, \"bo\", ms=10)\n", "ax.axhline(m_global_profit, color=\"b\", linestyle=\"--\")\n", "ax.annotate(\n", " \"global maxima\",\n", " xy=(m_global_p, m_global_profit),\n", " xytext=(0.025, 95000),\n", " ha=\"left\",\n", " fontsize=14,\n", " arrowprops=dict(shrink=0.1, width=1, headwidth=5),\n", ")\n", "\n", "report_solution(m_global, \"Milk Pooling Model - Bilinear\")" ] }, { "cell_type": "markdown", "id": "7e32fe3b-7b1e-4714-a64d-b29da624a10b", "metadata": { "id": "7e32fe3b-7b1e-4714-a64d-b29da624a10b" }, "source": [ "## Concluding Remarks\n", "\n", "The solution for the bilinear pooling model reveals several features of the problem. \n", "\n", "* For the given parameters, pooling raw materials for shipment from remote suppliers yields the most profitable solution, but that solution is only possible because there are local suppliers to augment the pool blend to meet individual customer requirements. \n", "\n", "* Customer 2 receives a blend that is 3.3% exceeding the requirement of 3%. This results in some \"give away\" of product quality in return for the economic benefits of pooling." ] }, { "cell_type": "markdown", "id": "1ff20541-70e9-4ba9-a6e1-8c072a8964f1", "metadata": { "id": "1ff20541-70e9-4ba9-a6e1-8c072a8964f1", "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "## Suggested Exercises\n", "\n", "This simple model demonstrates practical issues that arise in modeling the non-convex problems. Take time explore the behavior of the model to parameter changes and the nature of the solution. \n", "\n", "1. Examine the model data and explain why the enhanced profits are observed only for a particular range of values in $p$.\n", "\n", "2. Think carefully about the non-convex behavior observed in the plot of profit versus parameter $p$. Why are the local maxima located where they are, and how are they related to problem data? Test your hypothesis by changing the problem data. What happens when the product specification for Customer A is set equal to 0.045? What happens when it is set to 0.04?\n", "\n", "3. Revise the AMPL model using 'cbc', 'gurobi_direct', 'ipopt', and 'bonmin' to find a solution. Did you find a solver that could solve this nonlinear problem?\n", "\n", "4. The above analysis assumed unlimited transport. If the truck turns out to have a limit of 4,000 units of milk, write the mathematical constraint necessary to introduce that limit into the model. Add that constraint to the AMPL model and discuss the impact on profit." ] }, { "cell_type": "markdown", "id": "5b94e2ef-62b1-413d-b06e-6ea7dc367064", "metadata": { "id": "5b94e2ef-62b1-413d-b06e-6ea7dc367064" }, "source": [ "## Bibliographic Notes\n", "\n", "The pooling and blending is a large scale, high value, fundamental problem of logistics for the process and refining industries. The prototypical examples are the pooling and blending crude oils to meet the feed stock constraints of refineries, and for the pooling of refinery products for pipeline delivery to distribution terminals. Un\n", "\n", "Haverly (1978) is a commonly cited small benchmark problem for the pooling and blending of sulfurous fuels. \n", "\n", "> Haverly, C. A. (1978). Studies of the behavior of recursion for the pooling problem. Acm sigmap bulletin, (25), 19-28. https://dl.acm.org/doi/pdf/10.1145/1111237.1111238\n", "\n", "There is an extensive literature on pooling and blending. The following encyclopedia entry explains the history of the pooling problem, how it leads to multiple local minima and other pathological behaviors, and approaches to finding practical solutions.\n", "\n", "> Visweswaran, V. (2009). MINLP: Applications in Blending and Pooling Problems. https://link.springer.com/referenceworkentry/10.1007/978-0-387-74759-0_375\n", "\n", "Recent research overviews include\n", "\n", "\n", "> Misener, R., & Floudas, C. A. (2009). Advances for the pooling problem: Modeling, global optimization, and computational studies. Applied and Computational Mathematics, 8(1), 3-22. https://www.researchgate.net/profile/Ruth-Misener/publication/242290955_Advances_for_the_pooling_problem_Modeling_global_optimization_and_computational_studies_Survey/links/0046352e7d1dfeb40f000000/Advances-for-the-pooling-problem-Modeling-global-optimization-and-computational-studies-Survey.pdf\n", "\n", "> Gupte, A., Ahmed, S., Dey, S. S., & Cheon, M. S. (2013). Pooling problems: relaxations and discretizations. School of Industrial and Systems Engineering, Georgia Institute of Technology, Atlanta, GA. and ExxonMobil Research and Engineering Company, Annandale, NJ. http://www.optimization-online.org/DB_FILE/2012/10/3658.pdf\n", "\n", "The current state-of-the-art appears to be a formulation of the pooling problem is a mixed-integer quadratically-constrained quadratic optimization on a given network.\n", "\n", "> Ceccon, F., & Misener, R. (2022). Solving the pooling problem at scale with extensible solver GALINI. Computers & Chemical Engineering, 107660. https://arxiv.org/pdf/2105.01687.pdf\n", "\n", "Applications for pooling and blending are probably underappreciated. In particular, what role might pooling and blending problems have in projects like the World Food Programme (WFP)?" ] }, { "cell_type": "code", "execution_count": 15, "id": "1c8b31c5-f529-4dda-8b88-9a3100d39b0d", "metadata": { "executionInfo": { "elapsed": 15, "status": "ok", "timestamp": 1686079716101, "user": { "displayName": "Marcos Domínguez Velad", "userId": "18131612151504710302" }, "user_tz": -120 }, "id": "1c8b31c5-f529-4dda-8b88-9a3100d39b0d" }, "outputs": [], "source": [] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "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.6.9" } }, "nbformat": 4, "nbformat_minor": 5 }